X-Git-Url: https://git.sthu.org/?p=pygdb.git;a=blobdiff_plain;f=StatusWindow.py;h=3d77dea2d21b939efcf72968e87bd0a184183182;hp=121c0b8a7f5b9375e2b6614ffa90abf3ad427d1e;hb=ae13f1cd2401475e1fc58be3418fb349cd69fb98;hpb=f2698c930f26434a100e0b4c1e4f39291b55b4f9 diff --git a/StatusWindow.py b/StatusWindow.py index 121c0b8..3d77dea 100644 --- a/StatusWindow.py +++ b/StatusWindow.py @@ -5,49 +5,76 @@ __author__ = "shuber" import gtk +import re +import string +import os import vte +import Configuration +import DbgTerminal import BreakpointsFrame +import PositionFrame import WatchesFrame class StatusWindow (gtk.Window): - def __init__(self, mainctrlwnd, debugger): - + def __init__(self, debugger): gtk.Window.__init__(self) + self.debugger = debugger + self.debugger.gotActiveCallback += [self.updateValues] 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 container of frames vbox = gtk.VBox(False, 5) self.add(vbox) - self.status = gtk.Label("Not Running") - vbox.pack_start(self.status, False, False) - vpaned = gtk.VPaned() - vbox.add(vpaned) - + #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.frames += [PositionFrame.PositionFrame(debugger), \ + WatchesFrame.WatchesFrame(debugger), \ + BreakpointsFrame.BreakpointsFrame(debugger) ] - #Register callback function for new positions - #and update the values - mainctrlwnd.newPosCbs += [self.updateValues] + #Register callback after frames! + self.debugger.gotActiveCallback += [self.updateValues] + + #First paned window + self.paned1 = gtk.VPaned() + vbox.add(self.paned1) + #Second one + self.paned2 = gtk.VPaned() + self.paned1.add2(self.paned2) + + self.paned1.add1(self.frames[1]) + self.paned2.add1(self.frames[2]) + self.paned2.add2(self.frames[0]) self.show_all() def applyConfiguration(self, conf): + w = conf.findInt("statuswnd-width") + h = conf.findInt("statuswnd-height") + paned1 = conf.findInt("statuswnd-paned1") + paned2 = conf.findInt("statuswnd-paned2") + + if w!=None and h!=None: + self.resize(w,h) + if paned1!=None: + self.paned1.set_position(paned1) + if paned2!=None: + self.paned2.set_position(paned2) + + while not self.debugger.isActive(): gtk.main_iteration() @@ -56,19 +83,19 @@ class StatusWindow (gtk.Window): def fillConfiguration(self, conf): - for f in self.frames: - f.fillConfiguration(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()) + conf.addInt("statuswnd-paned2", self.paned2.get_position()) - def updateValues(self, pos): + for f in self.frames: + f.fillConfiguration(conf) - if pos == None: - self.status.set_text("Exited") - else: - file, lineno = pos - self.status.set_text("%s:%s" % (file, lineno)) - for f in self.frames: - f.updateValues(pos) + def updateValues(self, status, param): + conf = Configuration.Configuration() + self.fillConfiguration(conf) + conf.store(".pygdb.conf")