X-Git-Url: https://git.sthu.org/?a=blobdiff_plain;f=BreakpointsFrame.py;h=3093fbbe18c047c2e44361dfa75a8d4c560732df;hb=b029ee3dd1a5a785737e73ac6fc024a58d855104;hp=3216de661c4ed21ae8b55730a2a7003e7bf8bb31;hpb=9a8e5a643a533e00a2c8fdd6f03ea7b7a5e5d649;p=pygdb.git diff --git a/BreakpointsFrame.py b/BreakpointsFrame.py index 3216de6..3093fbb 100644 --- a/BreakpointsFrame.py +++ b/BreakpointsFrame.py @@ -11,15 +11,16 @@ import string import vte import DbgTerminal +import StatusFrame -class BreakpointsFrame (gtk.Frame): +class BreakpointsFrame (StatusFrame.StatusFrame): def __init__(self, debugger): - gtk.Frame.__init__(self, "Breakpoints") - self.debugger = debugger + StatusFrame.StatusFrame.__init__(self, debugger) + self.set_label("Breakpoints") vbox = gtk.VBox(False, 5) self.add(vbox) @@ -92,7 +93,8 @@ class BreakpointsFrame (gtk.Frame): bpspec = self.bpEntry.get_text() - rx = re.compile("^[\w\._\-]+:\d+\s*(\sif\s+\S+.*)?$") + bpspec = bpspec.strip() + rx = re.compile("^[\w\._\-]+:\d+(\s+if\s+\S+.*)?$") #Check if format is correct if not rx.search(bpspec): @@ -115,12 +117,16 @@ class BreakpointsFrame (gtk.Frame): pos = ifsplit[0].strip() [file,lineno] = string.split(pos, ":") - pos = self.debugger.setBreakpoint(file, lineno, cond) + self.addBreakpoint(file, lineno, cond) + + + + def addBreakpoint(self, file, lineno, cond=None): + + no = self.debugger.setBreakpoint(file, lineno, cond) - if pos!=None: - iter = self.model.append() - self.model.set(iter, 0, pos) - self.model.set(iter, 1, bpspec) + if no!=None: + self.addBreakpointToList(no, file, lineno, cond) else: dialog = gtk.MessageDialog(None, \ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, \ @@ -128,9 +134,30 @@ class BreakpointsFrame (gtk.Frame): "Invalid specification!") dialog.run() dialog.destroy() - return + def applyConfiguration(self, conf): + for b in conf.breakpoints: + self.addBreakpoint(b["file"], b["lineno"], b["cond"]) + + def fillConfiguration(self, conf): + iter = self.model.get_iter_first() + while iter != None: + spec, = self.model.get(iter, 1) + conf.parseBreak(spec) + 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))) + else: + self.model.set(iter, 1, "%s:%s if %s" % (str(file), str(lineno), str(cond))) + def delBtnClicked(self, btn): @@ -153,10 +180,10 @@ class BreakpointsFrame (gtk.Frame): if not self.debugger.isActive(): return - self.updateValues() + self.updateValues(None) - def updateValues(self): + def updateValues(self, pos): bpnts = self.debugger.getBreakpoints() @@ -169,13 +196,7 @@ class BreakpointsFrame (gtk.Frame): for bp in bpnts: [no, file, lineno, cond] = bp - iter = self.model.append() - self.model.set(iter, 0, no) - - if cond==None: - self.model.set(iter, 1, "%s:%s" % (file, lineno)) - else: - self.model.set(iter, 1, "%s:%s if %s" % (file, lineno, cond)) + self.addBreakpointToList(no, file, lineno, cond)