X-Git-Url: https://git.sthu.org/?a=blobdiff_plain;f=StatusWindow.py;h=e021fed1a18b2f4c1b26d901ffbca4ac5e1786d2;hb=d7a00b7d9d8b49655f714abc53361bed08e0355d;hp=121c0b8a7f5b9375e2b6614ffa90abf3ad427d1e;hpb=f2698c930f26434a100e0b4c1e4f39291b55b4f9;p=pygdb.git diff --git a/StatusWindow.py b/StatusWindow.py index 121c0b8..e021fed 100644 --- a/StatusWindow.py +++ b/StatusWindow.py @@ -5,8 +5,12 @@ __author__ = "shuber" import gtk +import re +import string +import os import vte +import DbgTerminal import BreakpointsFrame import WatchesFrame @@ -22,22 +26,29 @@ class StatusWindow (gtk.Window): self.set_border_width(5) self.set_title("Status") self.set_default_size(400,600) - self.connect("destroy", lambda *w: gtk.main_quit()) + self.connect("destroy", DbgTerminal.quitHandler) vbox = gtk.VBox(False, 5) self.add(vbox) + hbox = gtk.HBox(False, 5) + vbox.pack_start(hbox, False, False) + + self.viewBtn = gtk.Button("View") + self.viewBtn.connect("clicked", self.viewBtnClicked) + hbox.pack_start(self.viewBtn, False, False) self.status = gtk.Label("Not Running") - vbox.pack_start(self.status, False, False) - vpaned = gtk.VPaned() - vbox.add(vpaned) + hbox.pack_start(self.status, False, False) + + self.paned1 = gtk.VPaned() + vbox.add(self.paned1) #Adding the frames self.frames = [] self.frames += [WatchesFrame.WatchesFrame(debugger)] self.frames += [BreakpointsFrame.BreakpointsFrame(debugger)] - vpaned.add1(self.frames[0]) - vpaned.add2(self.frames[1]) + self.paned1.add1(self.frames[0]) + self.paned1.add2(self.frames[1]) #Register callback function for new positions #and update the values @@ -48,6 +59,16 @@ class StatusWindow (gtk.Window): def applyConfiguration(self, conf): + w = conf.findInt("statuswnd-width") + h = conf.findInt("statuswnd-height") + paned1 = conf.findInt("statuswnd-paned1") + + if w!=None and h!=None: + self.resize(w,h) + if paned1!=None: + self.paned1.set_position(paned1) + + while not self.debugger.isActive(): gtk.main_iteration() @@ -56,6 +77,11 @@ class StatusWindow (gtk.Window): def fillConfiguration(self, conf): + + conf.addInt("statuswnd-width", self.get_size()[0]) + conf.addInt("statuswnd-height", self.get_size()[1]) + conf.addInt("statuswnd-paned1", self.paned1.get_position()) + for f in self.frames: f.fillConfiguration(conf) @@ -72,3 +98,21 @@ class StatusWindow (gtk.Window): f.updateValues(pos) + def viewBtnClicked(self, btn): + + status = self.status.get_label().strip() + rx = re.compile("\S+:\d+") + + #It is a path + if rx.search(status): + try: + [file,lineno] = string.split(status,":") + lineno = int(lineno) + + os.system('gvim -R -c ":%d" %s' % (lineno,file)) + + except OSError: + pass + + +