1 """
2 A layout manager for gtk windows.
3 """
4
5 import gtk
6 import cPickle as pickle
7
9
10 lyt_restore = True
11
13 return self.__class__.__name__
14
17
20
22 """
23 Returns a tuple of (x, y, xsize, ysize) for later use in setGeometry()
24 """
25 x, y = self.get_position()
26 xsize, ysize = self.get_size()
27 return (x, y, xsize, ysize)
28
30 self.move(geom[0], geom[1])
31 self.resize(geom[2], geom[3])
32
34
36 self.windows = []
37 self.winclasses = {}
38 self.defaultgeom = {}
39
41 if clsname == None:
42 clsname = cls.__name__
43 self.winclasses[clsname] = (cls,args)
44 self.defaultgeom[clsname] = defgeom
45
47 return self.winclasses.get(name)[0]
48
50 clstup = self.winclasses.get(clsname)
51 if clstup == None:
52 raise Exception("Layout manager doesn't know how to make %s" % clsname)
53 cls, args = clstup
54 win = cls(*args)
55 self.manageWindow(win)
56 return win
57
59 '''
60 Get an existing instance of the given window type. If one does not
61 exist, make one instead.
62 '''
63 for win in self.getManagedWindows():
64 if win.getWindowName() == name:
65 return win
66 return self.createWindow(name)
67
69 try:
70 for line in fd.readlines():
71
72 clsname, geom, state = line.split(':', 2)
73
74 clstup = self.winclasses.get(clsname)
75 if clstup == None:
76 print "ERROR: unregistered class in layout: %s" % clsname
77 continue
78
79 cls, args = clstup
80
81 win = cls(*args)
82 win.setGeometry(eval(geom))
83 try:
84 win.setWindowState(eval(state))
85 except Exception, e:
86 print "ERROR: Failed to set window state: %s %s" % (clsname, e)
87
88 self.__trackWindow(win)
89
90 return True
91
92 except Exception, e:
93 print 'Layout Error: %s' % e
94 return False
95
107
112
115
117 self.__trackWindow(window)
118 geom = self.defaultgeom.get(window.__class__.__name__)
119 if geom != None:
120 window.setGeometry(geom)
121
123 try:
124 self.windows.remove(window)
125 except ValueError, e:
126 pass
127
129 for win in self.windows:
130 if win == omit:
131 continue
132 win.emit('delete_event', None)
133 win.destroy()
134