new feature: selecting on breakpoint sets entry-ctrl-text
[pygdb.git] / StatusWindow.py
1 #!/usr/bin/python
2 #shuber, 2008-06-04
3
4 __author__ = "shuber"
5
6
7 import gtk
8 import vte
9
10 import BreakpointsFrame
11 import WatchesFrame
12
13
14
15 class StatusWindow (gtk.Window):
16
17 def __init__(self, mainctrlwnd, debugger):
18
19 gtk.Window.__init__(self)
20 self.debugger = debugger
21
22 self.set_border_width(5)
23 self.set_title("Status")
24 self.set_default_size(400,600)
25 self.connect("destroy", lambda *w: gtk.main_quit())
26
27 vbox = gtk.VBox(False, 5)
28 self.add(vbox)
29
30 self.status = gtk.Label("Not Running")
31 vbox.pack_start(self.status, False, False)
32 self.paned1 = gtk.VPaned()
33 vbox.add(self.paned1)
34
35 #Adding the frames
36 self.frames = []
37 self.frames += [WatchesFrame.WatchesFrame(debugger)]
38 self.frames += [BreakpointsFrame.BreakpointsFrame(debugger)]
39 self.paned1.add1(self.frames[0])
40 self.paned1.add2(self.frames[1])
41
42 #Register callback function for new positions
43 #and update the values
44 mainctrlwnd.newPosCbs += [self.updateValues]
45
46 self.show_all()
47
48
49 def applyConfiguration(self, conf):
50
51 w = conf.findInt("statuswnd-width")
52 h = conf.findInt("statuswnd-height")
53 paned1 = conf.findInt("statuswnd-paned1")
54
55 if w!=None and h!=None:
56 self.resize(w,h)
57 if paned1!=None:
58 self.paned1.set_position(paned1)
59
60
61 while not self.debugger.isActive():
62 gtk.main_iteration()
63
64 for f in self.frames:
65 f.applyConfiguration(conf)
66
67
68 def fillConfiguration(self, conf):
69
70 conf.addInt("statuswnd-width", self.get_size()[0])
71 conf.addInt("statuswnd-height", self.get_size()[1])
72 conf.addInt("statuswnd-paned1", self.paned1.get_position())
73
74 for f in self.frames:
75 f.fillConfiguration(conf)
76
77
78 def updateValues(self, pos):
79
80 if pos == None:
81 self.status.set_text("Exited")
82 else:
83 file, lineno = pos
84 self.status.set_text("%s:%s" % (file, lineno))
85
86 for f in self.frames:
87 f.updateValues(pos)
88
89