import gtk
import vte
-import WatchesFrame
import BreakpointsFrame
+import WatchesFrame
+
class StatusWindow (gtk.Window):
- def __init__(self, mainctrlwnd, debugger, closecb=None):
+ def __init__(self, mainctrlwnd, debugger):
gtk.Window.__init__(self)
- self.set_screen(mainctrlwnd.get_screen())
-
+ self.debugger = debugger
+
self.set_border_width(5)
self.set_title("Status")
self.set_default_size(400,600)
+ self.connect("destroy", lambda *w: gtk.main_quit())
- if closecb!=None:
- self.connect("destroy", lambda *w: closecb())
+ vbox = gtk.VBox(False, 5)
+ self.add(vbox)
+ self.status = gtk.Label("Not Running")
+ vbox.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)]
+ self.paned1.add1(self.frames[0])
+ self.paned1.add2(self.frames[1])
#Register callback function for new positions
- self.mainctrlwnd = mainctrlwnd
+ #and update the values
mainctrlwnd.newPosCbs += [self.updateValues]
+ self.show_all()
- 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)
+ def applyConfiguration(self, conf):
- self.watchesFrame = WatchesFrame.WatchesFrame(debugger)
- vpaned.add1(self.watchesFrame)
+ w = conf.findInt("statuswnd-width")
+ h = conf.findInt("statuswnd-height")
+ paned1 = conf.findInt("statuswnd-paned1")
- self.breakpointsFrame = BreakpointsFrame.BreakpointsFrame(debugger)
- vpaned.add2(self.breakpointsFrame)
+ if w!=None and h!=None:
+ self.resize(w,h)
+ if paned1!=None:
+ self.paned1.set_position(paned1)
- self.show_all()
+
+ 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())
+
+ for f in self.frames:
+ f.fillConfiguration(conf)
def updateValues(self, pos):
file, lineno = pos
self.status.set_text("%s:%s" % (file, lineno))
- self.watchesFrame.updateValues()
- self.breakpointsFrame.updateValues()
+ for f in self.frames:
+ f.updateValues(pos)