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, vimservername):
gtk.Window.__init__(self)
+
+ self.vimservername = vimservername
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,self), \
+ 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()
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())
+
+ conf.setCommand( self.debugger.clientCmd )
+
for f in self.frames:
f.fillConfiguration(conf)
- def updateValues(self, pos):
+ def updateValues(self, status, param):
- if pos == None:
- self.status.set_text("Exited")
- else:
- file, lineno = pos
- self.status.set_text("%s:%s" % (file, lineno))
+ conf = Configuration.Configuration()
+ self.fillConfiguration(conf)
+ conf.store(".pygdb.conf")
- for f in self.frames:
- f.updateValues(pos)
+ self.updateVim()
+
+
+ def updateVim(self):
+ os.system('gvim --servername %s --remote-send "<ESC> :GDBLoadConfig<CR>"' % \
+ self.vimservername)
+
+ def gotoVim(self, file, lineno):
+ file = self.debugger.toAbsPath(file)
+ os.system('gvim --servername %s --remote-send "<ESC>:e %s<CR>:%s<CR>"' % \
+ (self.vimservername, file, lineno))