view/regs.py

Go to the documentation of this file.
00001 
00002 # Copyright (c) 2006 Cristian L. Vlasceanu
00003 
00004 from base import Base
00005 import gobject
00006 import gtk
00007 
00008 
00009 class Registers(Base):
00010         """
00011         Displays the contents of CPU registers 
00012         """
00013         def __init__(self, tree):
00014                 Base.__init__(self)
00015                 self.__model = gtk.ListStore(
00016                         gobject.TYPE_PYOBJECT,
00017                         gobject.TYPE_STRING,
00018                         gobject.TYPE_STRING,
00019                 )
00020                 model_sort = gtk.TreeModelSort(self.__model)
00021                 #start in a sorted state
00022                 model_sort.set_sort_column_id(1, gtk.SORT_ASCENDING)
00023 
00024                 if tree:
00025                         renderer = gtk.CellRendererText()
00026 
00027                         tree.set_model(model_sort)
00028                         tree.append_column(gtk.TreeViewColumn("Name", renderer, text=1))
00029                         tree.append_column(gtk.TreeViewColumn("Value", renderer, text=2))
00030                         tree.get_column(0).set_resizable(True)
00031                         tree.get_column(0).set_clickable(True)
00032                         tree.get_column(1).set_clickable(True)
00033                         tree.get_column(0).set_sort_column_id(1)
00034                         tree.get_column(1).set_sort_column_id(2)
00035 
00036                         #start in a sorted state
00037                         tree.get_column(0).set_sort_order(gtk.SORT_ASCENDING)
00038                         tree.get_column(0).set_sort_indicator(True)
00039 
00040 
00041         def update(self, event):
00042                 if event.thread():
00043                         model = self.__model
00044                         model.clear()
00045 
00046                         regs = event.thread().regs()
00047                         for name in regs:
00048                                 iter = model.append()
00049                                 model.set_value(iter, 1, name)
00050                                 val = regs[name]
00051                                 try:
00052                                         model.set_value(iter, 2, hex(val))
00053                                 except:
00054                                         model.set_value(iter, 2, val)
00055                 else:
00056                         self.clear()
00057 
00058 
00059         def clear(self):
00060                 self.__model.clear()
00061