14 import ClientIOTerminal
17 class MainControlWindow (gtk
.Window
):
19 def __init__(self
, dbgterm
):
22 gtk
.Window
.__init
__(self
)
23 self
.connect("destroy", DbgTerminal
.quitHandler
)
25 dbgterm
.gotActiveCallback
+= [self
.enableButtons
]
26 dbgterm
.gotInactiveCallback
+= [self
.disableButtons
]
29 self
.dbgterm
= dbgterm
30 self
.clientioterm
= ClientIOTerminal
.ClientIOTerminal(self
.dbgterm
.client_ptymaster
)
32 #Set title and add terminal
33 self
.set_title("Main Control")
34 self
.set_border_width(5)
37 #Vertical box. Top: Buttons, Bottom: Terminal vpane
38 vbox
= gtk
.VBox(False,5)
42 hbtnbox
= gtk
.HBox(False, spacing
=5)
43 #hbtnbox.set_layout(gtk.BUTTONBOX_START)
44 vbox
.pack_start(hbtnbox
, expand
=False)
46 self
.runBtn
= gtk
.Button("Run")
47 hbtnbox
.add(self
.runBtn
)
48 self
.continueBtn
= gtk
.Button("Continue")
49 hbtnbox
.add(self
.continueBtn
)
50 self
.stepoverBtn
= gtk
.Button("Step Over")
51 hbtnbox
.add(self
.stepoverBtn
)
52 self
.stepinBtn
= gtk
.Button("Step In")
53 hbtnbox
.add(self
.stepinBtn
)
54 self
.stepoutBtn
= gtk
.Button("Step Out")
55 hbtnbox
.add(self
.stepoutBtn
)
56 self
.quitBtn
= gtk
.Button("Quit")
57 hbtnbox
.add(self
.quitBtn
)
59 #Vertical pane for terminals
61 vbox
.pack_start(vpaned
)
64 hbox
= gtk
.HBox(False, 0)
65 vpaned
.pack1(hbox
, resize
=True)
66 scrollbar
= gtk
.VScrollbar(dbgterm
.get_adjustment())
67 hbox
.pack_start(dbgterm
)
68 hbox
.pack_start(scrollbar
, expand
=False)
71 hbox
= gtk
.HBox(False, 0)
73 scrollbar
= gtk
.VScrollbar(self
.clientioterm
.get_adjustment())
74 hbox
.pack_start(self
.clientioterm
)
75 hbox
.pack_start(scrollbar
, expand
=False)
79 self
.runBtnHandler
= self
.runBtn
.connect('clicked', self
.runBtnClicked
)
80 self
.continueBtnHandler
= self
.continueBtn
.connect('clicked', \
81 self
.continueBtnClicked
)
82 self
.stepoverBtnHandler
= self
.stepoverBtn
.connect('clicked', \
83 self
.stepoverBtnClicked
)
84 self
.stepinBtnHandler
= self
.stepinBtn
.connect('clicked', self
.stepinBtnClicked
)
85 self
.stepoutBtnHandler
= self
.stepoutBtn
.connect('clicked', self
.stepoutBtnClicked
)
86 self
.quitBtnHandler
= self
.quitBtn
.connect('clicked', self
.quitBtnClicked
)
93 def runBtnClicked(self
, btn
):
94 pos
= self
.dbgterm
.setRun()
96 def continueBtnClicked(self
, btn
):
97 pos
= self
.dbgterm
.setContinue()
99 def stepoverBtnClicked(self
, btn
):
100 pos
= self
.dbgterm
.setStepover()
102 def stepinBtnClicked(self
, btn
):
103 pos
= self
.dbgterm
.setStepin()
105 def stepoutBtnClicked(self
, btn
):
106 pos
= self
.dbgterm
.setStepout()
108 def quitBtnClicked(self
, btn
):
109 self
.dbgterm
.setQuit()
111 def disableButtons(self
, *w
):
112 self
.runBtn
.handler_block(self
.runBtnHandler
)
113 self
.continueBtn
.handler_block(self
.continueBtnHandler
)
114 self
.stepoverBtn
.handler_block(self
.stepoverBtnHandler
)
115 self
.stepinBtn
.handler_block(self
.stepinBtnHandler
)
116 self
.stepoutBtn
.handler_block(self
.stepoutBtnHandler
)
117 self
.quitBtn
.handler_block(self
.quitBtnHandler
)
119 def enableButtons(self
, *w
):
120 self
.runBtn
.handler_unblock(self
.runBtnHandler
)
121 self
.continueBtn
.handler_unblock(self
.continueBtnHandler
)
122 self
.stepoverBtn
.handler_unblock(self
.stepoverBtnHandler
)
123 self
.stepinBtn
.handler_unblock(self
.stepinBtnHandler
)
124 self
.stepoutBtn
.handler_unblock(self
.stepoutBtnHandler
)
125 self
.quitBtn
.handler_unblock(self
.quitBtnHandler
)