Add LICENSE
[pygdb.git] / MainControlWindow.py
1 #!/usr/bin/python
2 #shuber, 2008-06-04
3
4 __author__ = "shuber"
5
6
7 import gtk
8 import string
9 import sys
10 import vte
11
12
13 import DbgTerminal
14 import ClientIOTerminal
15
16
17 class MainControlWindow (gtk.Window):
18
19 def __init__(self, dbgterm):
20
21 #Set up GTK stuff
22 gtk.Window.__init__(self)
23 self.connect("destroy", DbgTerminal.quitHandler )
24
25 dbgterm.gotActiveCallback += [self.enableButtons]
26 dbgterm.gotInactiveCallback += [self.disableButtons]
27
28 #Set terminals
29 self.dbgterm = dbgterm
30 self.clientioterm = ClientIOTerminal.ClientIOTerminal(self.dbgterm.client_ptymaster)
31
32 #Set title and add terminal
33 self.set_title("Main Control")
34 self.set_border_width(5)
35
36
37 #Vertical box. Top: Buttons, Bottom: Terminal vpane
38 vbox = gtk.VBox(False,5)
39 self.add(vbox)
40
41 #Button box
42 hbtnbox = gtk.HBox(False, spacing=5)
43 #hbtnbox.set_layout(gtk.BUTTONBOX_START)
44 vbox.pack_start(hbtnbox, expand=False)
45
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)
58
59 #Vertical pane for terminals
60 vpaned = gtk.VPaned()
61 vbox.pack_start(vpaned)
62
63 #Debugger terminal
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)
69
70 #Client I/O terminal
71 hbox = gtk.HBox(False, 0)
72 vpaned.pack2(hbox)
73 scrollbar = gtk.VScrollbar(self.clientioterm.get_adjustment())
74 hbox.pack_start(self.clientioterm)
75 hbox.pack_start(scrollbar, expand=False)
76
77
78 #Install handlers
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)
87
88 #Show the window
89 self.show_all()
90
91
92
93 def runBtnClicked(self, btn):
94 pos = self.dbgterm.setRun()
95
96 def continueBtnClicked(self, btn):
97 pos = self.dbgterm.setContinue()
98
99 def stepoverBtnClicked(self, btn):
100 pos = self.dbgterm.setStepover()
101
102 def stepinBtnClicked(self, btn):
103 pos = self.dbgterm.setStepin()
104
105 def stepoutBtnClicked(self, btn):
106 pos = self.dbgterm.setStepout()
107
108 def quitBtnClicked(self, btn):
109 self.dbgterm.setQuit()
110
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)
118
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)
126