X-Git-Url: https://git.sthu.org/?p=pygdb.git;a=blobdiff_plain;f=BreakpointsFrame.py;h=8450699eb4c5e970cd73837bf4ffba2ec177f436;hp=f6967e093d706e0c5ad43ffe8218815563b109ac;hb=HEAD;hpb=8a09be35138b09a6871dfc323a9e6e3a825a286b diff --git a/BreakpointsFrame.py b/BreakpointsFrame.py index f6967e0..8450699 100644 --- a/BreakpointsFrame.py +++ b/BreakpointsFrame.py @@ -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) @@ -100,7 +102,6 @@ class BreakpointsFrame (StatusFrame.StatusFrame): def addBreakpoint(self, file, lineno, cond=None): no = self.debugger.setBreakpoint(file, lineno, cond) - if no!=None: self.addBreakpointToList(no, file, lineno, cond) else: @@ -115,24 +116,43 @@ 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() 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): @@ -156,7 +176,7 @@ class BreakpointsFrame (StatusFrame.StatusFrame): return - ifsplit = string.split(bpspec, "if") + ifsplit = string.split(bpspec, " if ") if len(ifsplit)>1: cond = ifsplit[1].strip() @@ -191,10 +211,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()