StatusFrame.StatusFrame.__init__(self, debugger)
self.set_label("Breakpoints")
+ debugger.gotActiveCallback += [self.updateValues]
+
vbox = gtk.VBox(False, 5)
self.add(vbox)
def __createModel(self):
- #Breakpoint number, position and a boolean flag indicating whether BP has been set
- #at debugger yet
+ #Breakpoint number, position and a boolean flag indicating
+ #whether BP has been set at debugger yet
model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
return model
def addBreakpoint(self, file, lineno, cond=None):
no = self.debugger.setBreakpoint(file, lineno, cond)
-
if no!=None:
self.addBreakpointToList(no, file, lineno, cond)
else:
dialog.run()
dialog.destroy()
+ return no
+
+
+ def delBreakpoints(self, file, lineno):
+
+ def addIters(model, path, iter, iters):
+ expr = model.get_value(iter,1)
+ expr = string.split(expr, " if ")[0].strip()
+ if expr == "%s:%d"%(file,lineno):
+ 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 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()
while iter != None:
spec, = self.model.get(iter, 1)
- conf.parseBreak(spec)
+
+ #Replacing file by absolute path
+ file = string.split(spec, ":")[0]
+ file = self.debugger.toAbsPath(file)
+ postfile = string.join( string.split(spec,":")[1:], ":")
+
+ conf.parseBreak(file + ":" + postfile )
iter = self.model.iter_next(iter)
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):
return
- ifsplit = string.split(bpspec, "if")
+ ifsplit = string.split(bpspec, " if ")
if len(ifsplit)>1:
cond = ifsplit[1].strip()
def delBtnClicked(self, btn):
+ self.delBreakpoints("main.cpp", 26)
+ return
+
if not self.debugger.isActive():
return
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()