def _tree_click(self, view, event):
if event.button != 1:
return
index = [0]
def pack(widget, pos):
self._display.attach(widget, pos, pos + 1, index[0], index[0] + 1,
xoptions=gtk.FILL, yoptions=0)
def next_row():
index[0] += 1
def abandon(child):
self._display.remove(child)
pathinfo = view.get_path_at_pos(int(event.x), int(event.y))
path = pathinfo[0]
iter = self._store.get_iter(path)
name, obj = self._store.get(iter, 0, 1)
self._display.foreach(abandon)
for name, item in obj.items():
if item.size() % 8 == 0:
name = '<b>%s</b> <small>(%s %i bytes)</small>' % (
name, bitwise_type(classname(item)), item.size() / 8)
else:
name = '<b>%s</b> <small>(%s %i bits)</small>' % (
name, bitwise_type(classname(item)), item.size())
l = gtk.Label(name + " ")
l.set_use_markup(True)
l.show()
pack(l, 0)
if (isinstance(item, bitwise.intDataElement) or
isinstance(item, bitwise.bcdDataElement)):
e = IntegerEditor(item)
elif (isinstance(item, bitwise.arrayDataElement) and
isinstance(item[0], bitwise.bcdDataElement)):
e = BCDArrayEditor(item)
elif (isinstance(item, bitwise.arrayDataElement) and
isinstance(item[0], bitwise.charDataElement)):
e = CharArrayEditor(item)
else:
e = OtherEditor(item)
e.show()
pack(e, 1)
next_row()
评论列表
文章目录