X-Git-Url: https://git.sthu.org/?p=pygdb.git;a=blobdiff_plain;f=StatusWindow.py;h=07abd4c616b7fa0a14fca888a56af4ad00d06c7c;hp=1eb486251471aa9d540a27b5108b67607f5d02fd;hb=afd9117c8d1d5f614acc120f28c668655be20abf;hpb=9a8e5a643a533e00a2c8fdd6f03ea7b7a5e5d649 diff --git a/StatusWindow.py b/StatusWindow.py index 1eb4862..07abd4c 100644 --- a/StatusWindow.py +++ b/StatusWindow.py @@ -5,51 +5,101 @@ __author__ = "shuber" import gtk +import re +import string +import os import vte -import WatchesFrame +import Configuration +import DbgTerminal import BreakpointsFrame +import PositionFrame +import WatchesFrame -class StatusWindow (gtk.Window): - def __init__(self, parent, debugger): +class StatusWindow (gtk.Window): + def __init__(self, debugger): gtk.Window.__init__(self) - self.set_screen(parent.get_screen()) + 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 += [PositionFrame.PositionFrame(debugger), \ + WatchesFrame.WatchesFrame(debugger), \ + BreakpointsFrame.BreakpointsFrame(debugger) ] + + #Register callback after frames! + self.debugger.gotActiveCallback += [self.updateValues] - self.watchesFrame = WatchesFrame.WatchesFrame(debugger) - vpaned.add1(self.watchesFrame) + #First paned window + self.paned1 = gtk.VPaned() + vbox.add(self.paned1) + #Second one + self.paned2 = gtk.VPaned() + self.paned1.add2(self.paned2) - self.breakpointsFrame = BreakpointsFrame.BreakpointsFrame(debugger) - vpaned.add2(self.breakpointsFrame) + self.paned1.add1(self.frames[1]) + self.paned2.add1(self.frames[2]) + self.paned2.add2(self.frames[0]) self.show_all() - def updateValues(self, pos): + 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() + + for f in self.frames: + f.applyConfiguration(conf) + + + 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()) + conf.addInt("statuswnd-paned2", self.paned2.get_position()) + + for f in self.frames: + f.fillConfiguration(conf) + + + def updateValues(self, status, param): + + conf = Configuration.Configuration() + self.fillConfiguration(conf) + conf.store(".pygdb.conf") - if pos == None: - self.status.set_text("Exited") - else: - file, lineno = pos - self.status.set_text("%s:%s" % (file, lineno)) + DbgTerminal.updateVim() - self.watchesFrame.updateValues() - self.breakpointsFrame.updateValues()