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)
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
)
33 sw
= gtk
.ScrolledWindow()
34 sw
.set_shadow_type(gtk
.SHADOW_ETCHED_IN
)
35 sw
.set_policy(gtk
.POLICY_AUTOMATIC
, gtk
.POLICY_AUTOMATIC
)
38 self
.model
= self
.__createModel
()
39 self
.tv
= gtk
.TreeView(self
.model
)
40 self
.tv
.set_rules_hint(True)
41 self
.tv
.get_selection().set_mode(gtk
.SELECTION_MULTIPLE
)
43 self
.__addColumns
(self
.tv
)
46 self
.addBtn
.connect("clicked", self
.addBtnClicked
)
47 self
.delBtn
.connect("clicked", self
.delBtnClicked
)
51 def __createModel(self
):
53 model
= gtk
.ListStore(gobject
.TYPE_STRING
, gobject
.TYPE_STRING
, \
59 def __addColumns(self
, tv
):
61 model
= tv
.get_model()
63 renderer
= gtk
.CellRendererText()
64 renderer
.connect("edited", self
.onExprEdited
, model
)
65 renderer
.set_data("column", 0)
66 col
= gtk
.TreeViewColumn("Expr", renderer
, text
=0, editable
=2)
67 col
.set_resizable(True)
71 renderer
= gtk
.CellRendererText()
72 renderer
.set_data("column", 1)
73 col
= gtk
.TreeViewColumn("Result", renderer
, text
=1)
74 col
.set_resizable(True)
78 def onExprEdited(self
, cell
, pathStr
, expr
, model
):
79 iter = model
.get_iter_from_string(pathStr
)
80 path
= model
.get_path(iter)[0]
81 col
= cell
.get_data("column")
83 model
.set(iter, 0, expr
)
85 if self
.debugger
.isActive():
86 res
= self
.debugger
.getExpression(expr
)
87 model
.set(iter, 1, res
)
92 def addBtnClicked(self
, btn
):
93 iter = self
.model
.append()
94 self
.model
.set(iter, 0, "0", 1, "0", 2, True)
97 def delBtnClicked(self
, btn
):
98 selection
= self
.tv
.get_selection()
99 model
, paths
= selection
.get_selected_rows()
102 iter = model
.get_iter(path
)
106 def updateValues(self
):
108 iter = self
.model
.get_iter_first()
112 expr
, = self
.model
.get(iter, 0)
113 res
= self
.debugger
.getExpression(expr
)
114 self
.model
.set(iter, 1, res
)
116 iter = self
.model
.iter_next(iter)