4866134766793687c48d1df1fcc6483c88990d01
14 import ClientIOTerminal
17 class MainControlWindow (gtk
.Window
):
19 #Callbacks for new positions
22 def __init__(self
, dbgterm
, quitonclose
=True):
25 gtk
.Window
.__init
__(self
)
27 self
.connect("destroy", lambda *w
: gtk
.main_quit() )
30 self
.dbgterm
= dbgterm
31 self
.clientioterm
= ClientIOTerminal
.ClientIOTerminal(self
.dbgterm
.client_ptymaster
)
33 #Set title and add terminal
34 self
.set_title("Main Control")
35 self
.set_border_width(5)
38 #Vertical box. Top: Buttons, Bottom: Terminal vpane
39 vbox
= gtk
.VBox(False,5)
43 hbtnbox
= gtk
.HButtonBox()
44 hbtnbox
.set_layout(gtk
.BUTTONBOX_START
)
45 vbox
.pack_start(hbtnbox
)
47 self
.runBtn
= gtk
.Button("Run")
48 hbtnbox
.add(self
.runBtn
)
49 self
.continueBtn
= gtk
.Button("Continue")
50 hbtnbox
.add(self
.continueBtn
)
51 self
.stepoverBtn
= gtk
.Button("Step Over")
52 hbtnbox
.add(self
.stepoverBtn
)
53 self
.stepinBtn
= gtk
.Button("Step In")
54 hbtnbox
.add(self
.stepinBtn
)
55 self
.quitBtn
= gtk
.Button("Quit")
56 hbtnbox
.add(self
.quitBtn
)
58 #Vertical pane for terminals
60 vbox
.pack_start(vpaned
, True, True)
61 vpaned
.add(self
.dbgterm
)
62 vpaned
.add(self
.clientioterm
)
66 self
.runBtnHandler
= self
.runBtn
.connect('clicked', self
.runBtnClicked
)
67 self
.continueBtnHandler
= self
.continueBtn
.connect('clicked', self
.continueBtnClicked
)
68 self
.stepoverBtnHandler
= self
.stepoverBtn
.connect('clicked', self
.stepoverBtnClicked
)
69 self
.stepinBtnHandler
= self
.stepinBtn
.connect('clicked', self
.stepinBtnClicked
)
70 self
.quitBtnHandler
= self
.quitBtn
.connect('clicked', self
.quitBtnClicked
)
77 def runBtnClicked(self
, btn
):
79 pos
= self
.dbgterm
.setRun()
80 self
.newSourcePosition(pos
)
83 def continueBtnClicked(self
, btn
):
85 pos
= self
.dbgterm
.setContinue()
86 self
.newSourcePosition(pos
)
89 def stepoverBtnClicked(self
, btn
):
91 pos
= self
.dbgterm
.setStepover()
92 self
.newSourcePosition(pos
)
95 def stepinBtnClicked(self
, btn
):
97 pos
= self
.dbgterm
.setStepin()
98 self
.newSourcePosition(pos
)
101 def quitBtnClicked(self
, btn
):
102 self
.dbgterm
.setQuit()
104 def disableButtons(self
):
105 self
.runBtn
.handler_block(self
.runBtnHandler
)
106 self
.continueBtn
.handler_block(self
.continueBtnHandler
)
107 self
.stepoverBtn
.handler_block(self
.stepoverBtnHandler
)
108 self
.stepinBtn
.handler_block(self
.stepinBtnHandler
)
109 self
.quitBtn
.handler_block(self
.quitBtnHandler
)
111 def enableButtons(self
):
112 self
.runBtn
.handler_unblock(self
.runBtnHandler
)
113 self
.continueBtn
.handler_unblock(self
.continueBtnHandler
)
114 self
.stepoverBtn
.handler_unblock(self
.stepoverBtnHandler
)
115 self
.stepinBtn
.handler_unblock(self
.stepinBtnHandler
)
116 self
.quitBtn
.handler_unblock(self
.quitBtnHandler
)
118 def newSourcePosition(self
, pos
):
120 for cb
in self
.newPosCbs
: