Added controller class:
[pygdb.git] / WatchesFrame.py
index cfcd14a916cc700f16082ae5dca212d4c94ac10b..08271f4d7d7180df66661cf7a2d69301e74301c3 100644 (file)
@@ -6,9 +6,7 @@ __author__ = "shuber"
 
 import gobject
 import gtk
-import vte
 
-import DbgTerminal
 import StatusFrame
 
 
@@ -20,6 +18,8 @@ class WatchesFrame (StatusFrame.StatusFrame):
                StatusFrame.StatusFrame.__init__(self, debugger)
                self.set_label("Watches")
 
+               debugger.gotActiveCallback += [self.updateValues]
+
                vbox = gtk.VBox(False, 5)
                self.add(vbox)
 
@@ -92,7 +92,7 @@ class WatchesFrame (StatusFrame.StatusFrame):
                for w in conf.watches:
                        iter = self.model.append()
                        self.model.set(iter, 0, w["expr"], 1, "<unkown>", 2, True)
-               self.updateValues(None)
+               self.updateValues(None, None)
 
 
        def fillConfiguration(self, conf):
@@ -104,11 +104,37 @@ class WatchesFrame (StatusFrame.StatusFrame):
                        iter = self.model.iter_next(iter)
 
 
-       def addBtnClicked(self, btn):
+       def addWatch(self, expr):
+               if self.debugger.isActive():
+                       res = self.debugger.getExpression(expr)
+               else:
+                       res = expr
+
                iter = self.model.append()
-               self.model.set(iter, 0, "0", 1, "0", 2, True)
+               self.model.set(iter, 0, expr, 1, res, 2, True)
+
+
+       def delWatches(self, expr):
+
+               def addIters(model, path, iter, iters):
+                       if model.get_value(iter, 0)==expr:
+                               iters += [iter]
+
+               iters = []
+               self.model.foreach(addIters, iters)
+
+               #Need reversed here since rows are moved
+               #when removing rows
+               for i in reversed(iters):
+                       self.model.remove(i)
+       
+
+       def addBtnClicked(self, btn):
+               self.addWatch("0")
+
 
        def delBtnClicked(self, btn):
+
                selection = self.tv.get_selection()
                model, paths = selection.get_selected_rows()
 
@@ -116,12 +142,12 @@ class WatchesFrame (StatusFrame.StatusFrame):
                        iter = model.get_iter(path)
                        model.remove(iter)
 
-       def updateValues(self, pos):
+       def updateValues(self, status, param):
                iter = self.model.get_iter_first()
                while iter != None:
                        expr, = self.model.get(iter, 0)
-                        res = self.debugger.getExpression(expr)
-                        self.model.set(iter, 1, res)
+                       res = self.debugger.getExpression(expr)
+                       self.model.set(iter, 1, res)
 
                        iter = self.model.iter_next(iter)