X-Git-Url: https://git.sthu.org/?p=pygdb.git;a=blobdiff_plain;f=MainControlWindow.py;h=0b5c3f11413e36067c55c373fbb625a63d20d8ca;hp=d82baaf760ebe069695b14c5b5833fb5cd7c2dd0;hb=afd9117c8d1d5f614acc120f28c668655be20abf;hpb=0024f43ac5834f611179587a6fc25385ee5bf4a5 diff --git a/MainControlWindow.py b/MainControlWindow.py old mode 100755 new mode 100644 index d82baaf..0b5c3f1 --- a/MainControlWindow.py +++ b/MainControlWindow.py @@ -10,20 +10,20 @@ import sys 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 @@ -32,37 +32,29 @@ class MainControlWindow (gtk.Window): #Set title and add terminal self.set_title("Main Control") self.set_border_width(5) + + #Vertical box. Top: Buttons, Bottom: Terminal vpane + vbox = gtk.VBox(False,5) + self.add(vbox) - #The main horizontal pane left=buttons, right=terminals - hbox = gtk.HBox(False,0) - self.add(hbox) - hpaned = gtk.HPaned() - hbox.pack_start(hpaned, True, True) - - - - #Plug together the buttons - vbox = gtk.VButtonBox() - vbox.set_layout(gtk.BUTTONBOX_START) - hpaned.add1(vbox) + #Button box + hbtnbox = gtk.HBox(False, spacing=5) + #hbtnbox.set_layout(gtk.BUTTONBOX_START) + vbox.pack_start(hbtnbox) self.runBtn = gtk.Button("Run") - vbox.add(self.runBtn) + hbtnbox.add(self.runBtn) self.continueBtn = gtk.Button("Continue") - vbox.add(self.continueBtn) + hbtnbox.add(self.continueBtn) self.stepoverBtn = gtk.Button("Step Over") - vbox.add(self.stepoverBtn) + hbtnbox.add(self.stepoverBtn) self.stepinBtn = gtk.Button("Step In") - vbox.add(self.stepinBtn) + hbtnbox.add(self.stepinBtn) self.quitBtn = gtk.Button("Quit") - vbox.add(self.quitBtn) - - - #Plug together the terminals - vbox = gtk.VBox() - hpaned.add2(vbox) + hbtnbox.add(self.quitBtn) + #Vertical pane for terminals vpaned = gtk.VPaned() vbox.pack_start(vpaned, True, True) vpaned.add(self.dbgterm) @@ -71,8 +63,10 @@ class MainControlWindow (gtk.Window): #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.quitBtnHandler = self.quitBtn.connect('clicked', self.quitBtnClicked) @@ -82,66 +76,31 @@ class MainControlWindow (gtk.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 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.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.quitBtn.handler_unblock(self.quitBtnHandler) - def newSourcePosition(self, pos): - #Call the callbacks - for cb in self.newPosCbs: - cb(pos) - - - - -if __name__ == "__main__": - - def newpos(pos): - print "new pos: ", pos - - - clientCmd = string.join(sys.argv[1:]) - dbgterm = GdbTerminal.GdbTerminal(clientCmd) - mainCtrlWnd = MainControlWindow(dbgterm) - - mainCtrlWnd.newPosCbs += [newpos] - - gtk.main() - -