14 class WatchesFrame (gtk
.Frame
):
17 def __init__(self
, debugger
):
19 gtk
.Frame
.__init
__(self
, "Watches")
20 self
.debugger
= debugger
22 vbox
= gtk
.VBox(False, 5)
25 hbox
= gtk
.HButtonBox()
26 vbox
.pack_start(hbox
, False, False)
28 self
.addBtn
= gtk
.Button(stock
=gtk
.STOCK_ADD
)
29 self
.delBtn
= gtk
.Button(stock
=gtk
.STOCK_REMOVE
)
32 hbox
.set_layout(gtk
.BUTTONBOX_SPREAD
)
34 sw
= gtk
.ScrolledWindow()
35 sw
.set_shadow_type(gtk
.SHADOW_ETCHED_IN
)
36 sw
.set_policy(gtk
.POLICY_AUTOMATIC
, gtk
.POLICY_AUTOMATIC
)
39 self
.model
= self
.__createModel
()
40 self
.tv
= gtk
.TreeView(self
.model
)
41 self
.tv
.set_rules_hint(True)
42 self
.tv
.get_selection().set_mode(gtk
.SELECTION_MULTIPLE
)
44 self
.__addColumns
(self
.tv
)
47 self
.addBtn
.connect("clicked", self
.addBtnClicked
)
48 self
.delBtn
.connect("clicked", self
.delBtnClicked
)
52 def __createModel(self
):
54 model
= gtk
.ListStore(gobject
.TYPE_STRING
, gobject
.TYPE_STRING
, \
60 def __addColumns(self
, tv
):
62 model
= tv
.get_model()
64 renderer
= gtk
.CellRendererText()
65 renderer
.connect("edited", self
.onExprEdited
, model
)
66 renderer
.set_data("column", 0)
67 col
= gtk
.TreeViewColumn("Expr", renderer
, text
=0, editable
=2)
68 col
.set_resizable(True)
72 renderer
= gtk
.CellRendererText()
73 renderer
.set_data("column", 1)
74 col
= gtk
.TreeViewColumn("Result", renderer
, text
=1)
75 col
.set_resizable(True)
79 def onExprEdited(self
, cell
, pathStr
, expr
, model
):
80 iter = model
.get_iter_from_string(pathStr
)
81 path
= model
.get_path(iter)[0]
82 col
= cell
.get_data("column")
84 model
.set(iter, 0, expr
)
86 if self
.debugger
.isActive():
87 res
= self
.debugger
.getExpression(expr
)
88 model
.set(iter, 1, res
)
93 def addBtnClicked(self
, btn
):
94 iter = self
.model
.append()
95 self
.model
.set(iter, 0, "0", 1, "0", 2, True)
98 def delBtnClicked(self
, btn
):
99 selection
= self
.tv
.get_selection()
100 model
, paths
= selection
.get_selected_rows()
103 iter = model
.get_iter(path
)
107 def updateValues(self
):
109 iter = self
.model
.get_iter_first()
113 expr
, = self
.model
.get(iter, 0)
114 res
= self
.debugger
.getExpression(expr
)
115 self
.model
.set(iter, 1, res
)
117 iter = self
.model
.iter_next(iter)