import vte
-import GdbTerminal
+import DbgTerminal
import ClientIOTerminal
class MainControlWindow (gtk.Window):
- #Callbacks for new positions
- newPosCbs = []
-
def __init__(self, dbgterm):
#Set up GTK stuff
gtk.Window.__init__(self)
- self.connect("destroy", lambda *w: gtk.main_quit())
+ self.connect("destroy", DbgTerminal.quitHandler )
+
+ dbgterm.gotActiveCallback += [self.enableButtons]
+ dbgterm.gotInactiveCallback += [self.disableButtons]
#Set terminals
self.dbgterm = dbgterm
self.add(vbox)
#Button box
- hbtnbox = gtk.HButtonBox()
- hbtnbox.set_layout(gtk.BUTTONBOX_START)
- vbox.pack_start(hbtnbox)
+ hbtnbox = gtk.HBox(False, spacing=5)
+ #hbtnbox.set_layout(gtk.BUTTONBOX_START)
+ vbox.pack_start(hbtnbox, expand=False)
self.runBtn = gtk.Button("Run")
hbtnbox.add(self.runBtn)
hbtnbox.add(self.stepoverBtn)
self.stepinBtn = gtk.Button("Step In")
hbtnbox.add(self.stepinBtn)
+ self.stepoutBtn = gtk.Button("Step Out")
+ hbtnbox.add(self.stepoutBtn)
self.quitBtn = gtk.Button("Quit")
hbtnbox.add(self.quitBtn)
#Vertical pane for terminals
vpaned = gtk.VPaned()
- vbox.pack_start(vpaned, True, True)
- vpaned.add(self.dbgterm)
- vpaned.add(self.clientioterm)
+ vbox.pack_start(vpaned)
+
+ #Debugger terminal
+ hbox = gtk.HBox(False, 0)
+ vpaned.pack1(hbox, resize=True)
+ scrollbar = gtk.VScrollbar(dbgterm.get_adjustment())
+ hbox.pack_start(dbgterm)
+ hbox.pack_start(scrollbar, expand=False)
+
+ #Client I/O terminal
+ hbox = gtk.HBox(False, 0)
+ vpaned.pack2(hbox)
+ scrollbar = gtk.VScrollbar(self.clientioterm.get_adjustment())
+ hbox.pack_start(self.clientioterm)
+ hbox.pack_start(scrollbar, expand=False)
#Install handlers
self.runBtnHandler = self.runBtn.connect('clicked', self.runBtnClicked)
- self.continueBtnHandler = self.continueBtn.connect('clicked', self.continueBtnClicked)
- self.stepoverBtnHandler = self.stepoverBtn.connect('clicked', self.stepoverBtnClicked)
+ self.continueBtnHandler = self.continueBtn.connect('clicked', \
+ self.continueBtnClicked)
+ self.stepoverBtnHandler = self.stepoverBtn.connect('clicked', \
+ self.stepoverBtnClicked)
self.stepinBtnHandler = self.stepinBtn.connect('clicked', self.stepinBtnClicked)
+ self.stepoutBtnHandler = self.stepoutBtn.connect('clicked', self.stepoutBtnClicked)
self.quitBtnHandler = self.quitBtn.connect('clicked', self.quitBtnClicked)
#Show the window
def runBtnClicked(self, btn):
- self.disableButtons()
pos = self.dbgterm.setRun()
- self.newSourcePosition(pos)
- self.enableButtons()
def continueBtnClicked(self, btn):
- self.disableButtons()
pos = self.dbgterm.setContinue()
- self.newSourcePosition(pos)
- self.enableButtons()
def stepoverBtnClicked(self, btn):
- self.disableButtons()
pos = self.dbgterm.setStepover()
- self.newSourcePosition(pos)
- self.enableButtons()
def stepinBtnClicked(self, btn):
- self.disableButtons()
pos = self.dbgterm.setStepin()
- self.newSourcePosition(pos)
- self.enableButtons()
+
+ def stepoutBtnClicked(self, btn):
+ pos = self.dbgterm.setStepout()
def quitBtnClicked(self, btn):
self.dbgterm.setQuit()
- def disableButtons(self):
+ def disableButtons(self, *w):
self.runBtn.handler_block(self.runBtnHandler)
self.continueBtn.handler_block(self.continueBtnHandler)
self.stepoverBtn.handler_block(self.stepoverBtnHandler)
self.stepinBtn.handler_block(self.stepinBtnHandler)
+ self.stepoutBtn.handler_block(self.stepoutBtnHandler)
self.quitBtn.handler_block(self.quitBtnHandler)
- def enableButtons(self):
+ def enableButtons(self, *w):
self.runBtn.handler_unblock(self.runBtnHandler)
self.continueBtn.handler_unblock(self.continueBtnHandler)
self.stepoverBtn.handler_unblock(self.stepoverBtnHandler)
self.stepinBtn.handler_unblock(self.stepinBtnHandler)
+ self.stepoutBtn.handler_unblock(self.stepoutBtnHandler)
self.quitBtn.handler_unblock(self.quitBtnHandler)
- def newSourcePosition(self, pos):
- #Call the callbacks
- for cb in self.newPosCbs:
- cb(pos)
-
-
-
-
-if __name__ == "__main__":
-
-
- import StatusWindow
-
-
- clientCmd = string.join(sys.argv[1:])
- dbgterm = GdbTerminal.GdbTerminal(clientCmd)
- mainCtrlWnd = MainControlWindow(dbgterm)
-
- statusWnd = StatusWindow.StatusWindow(mainCtrlWnd, dbgterm)
- mainCtrlWnd.newPosCbs += [statusWnd.updateValues]
-
- gtk.main()
-
-