MAJOR CHANGE!
[pygdb.git] / BreakpointsFrame.py
index f6967e093d706e0c5ad43ffe8218815563b109ac..9f1fe98c53e931c2927796ff4d035fab48ecf55c 100644 (file)
@@ -22,6 +22,8 @@ class BreakpointsFrame (StatusFrame.StatusFrame):
                StatusFrame.StatusFrame.__init__(self, debugger)
                self.set_label("Breakpoints")
 
+               debugger.gotActiveCallback += [self.updateValues]
+
                vbox = gtk.VBox(False, 5)
                self.add(vbox)
 
@@ -115,6 +117,7 @@ class BreakpointsFrame (StatusFrame.StatusFrame):
        def applyConfiguration(self, conf):
                for b in conf.breakpoints:
                        self.addBreakpoint(b["file"], b["lineno"], b["cond"])
+               self.updateValues(None, None)
 
        def fillConfiguration(self, conf):
                iter = self.model.get_iter_first()
@@ -126,13 +129,25 @@ class BreakpointsFrame (StatusFrame.StatusFrame):
 
 
        def addBreakpointToList(self, no, file, lineno, cond=None):
-               iter = self.model.append()
-               self.model.set(iter, 0, no)
 
                if cond==None:
-                       self.model.set(iter, 1, "%s:%s" % (str(file), str(lineno)))
+                       expr =  "%s:%s" % (str(file), str(lineno))
                else:
-                       self.model.set(iter, 1, "%s:%s if %s" % (str(file), str(lineno), str(cond)))
+                       expr = "%s:%s if %s" % (str(file), str(lineno), str(cond))
+
+               iter = self.model.get_iter_first()
+               while iter != None:
+                       newiter = self.model.iter_next(iter)
+                       #Found a expression which is the same --> remove the breakpoint
+                       if (expr,) == self.model.get(iter,1):
+                               self.debugger.delBreakpoint(no)
+                               return
+                       iter = newiter
+       
+               #Add the entry to the breakpoint list
+               iter = self.model.append()
+               self.model.set(iter, 0, no)     
+               self.model.set(iter, 1, expr)
 
 
        def addBtnClicked(self, btn):
@@ -191,10 +206,10 @@ class BreakpointsFrame (StatusFrame.StatusFrame):
                if not self.debugger.isActive():
                        return
 
-               self.updateValues(None)
+               self.updateValues(None, None)
 
 
-       def updateValues(self, pos):
+       def updateValues(self, status, param):
                
                bpnts = self.debugger.getBreakpoints()