00001
00002
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
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
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