comparison light8/Lightboard.py @ 67:0bf7e664f913

window pos saving
author dmcc
date Tue, 09 Jul 2002 09:27:47 +0000
parents 2f2eb802e93d
children 57b3c454465a
comparison
equal deleted inserted replaced
66:8b6befd8b97e 67:0bf7e664f913
2 2
3 from Tix import * 3 from Tix import *
4 from time import sleep 4 from time import sleep
5 from signal import signal, SIGINT 5 from signal import signal, SIGINT
6 import sys, cPickle 6 import sys, cPickle
7 import shelve
7 8
8 import io 9 import io
9 from uihelpers import * 10 from uihelpers import *
10 from panels import * 11 from panels import *
11 from Xfader import * 12 from Xfader import *
13 from Fader import Fader 14 from Fader import Fader
14 import stage 15 import stage
15 import Subs, Patch 16 import Subs, Patch
16 17
17 class Pickles: 18 class Pickles:
18 def __init__(self, scalelevels, subs=None): 19 def __init__(self, scalelevels, subs=None, windowpos=None):
19 self.scalelevels = dict([(name, lev.get()) 20 self.scalelevels = dict([(name, lev.get())
20 for name, lev in scalelevels.items()]) 21 for name, lev in scalelevels.items()])
21 self.substate = dict([(name, subobj.get_state()) 22 self.substate = dict([(name, subobj.get_state())
22 for name, subobj in subs]) 23 for name, subobj in subs])
23 # print "substate", self.substate 24 self.windowpos = windowpos
24 25
25 class Lightboard: 26 class Lightboard:
26 def __init__(self, master, parportdmx, DUMMY): 27 def __init__(self, master, parportdmx, DUMMY):
27 self.master = master 28 self.master = master
28 self.parportdmx = parportdmx 29 self.parportdmx = parportdmx
32 self.scalelevels = {} 33 self.scalelevels = {}
33 self.xfader = Xfader(self.scalelevels) # doesn't draw any UI yet-- look for self.xfader.setupwidget() 34 self.xfader = Xfader(self.scalelevels) # doesn't draw any UI yet-- look for self.xfader.setupwidget()
34 self.oldlevels = [None] * 68 # never replace this; just clear it 35 self.oldlevels = [None] * 68 # never replace this; just clear it
35 self.subediting = Subediting(currentoutputlevels=self.oldlevels) 36 self.subediting = Subediting(currentoutputlevels=self.oldlevels)
36 37
38 self.shelf = shelve.open('/tmp/light9.newprefs')
39 self.windowpos = self.shelf.get('window', {})
37 self.get_data() 40 self.get_data()
38 self.buildinterface() 41 self.buildinterface()
39 self.load() 42 self.load()
40 self.backgroundloop() 43 self.backgroundloop()
41 self.updatestagelevels() 44 self.updatestagelevels()
42 45
43 def buildinterface(self): 46 def buildinterface(self):
44 for w in self.master.winfo_children(): 47 for w in self.master.winfo_children():
45 w.destroy() 48 w.destroy()
46 49
47 stage_tl = toplevelat(22,30) 50 stage_tl = toplevelat('stage', self.windowpos)
48 s = stage.Stage(stage_tl) 51 s = stage.Stage(stage_tl)
49 stage.createlights(s) 52 stage.createlights(s)
50 s.setsubediting(self.subediting) 53 s.setsubediting(self.subediting)
51 s.pack() 54 s.pack()
52 self.stage = s # save it 55 self.stage = s # save it
53 56
54 sub_tl = toplevelat(0,0,w=440,h=610) 57 sub_tl = toplevelat('sub', self.windowpos)
55 effect_tl = toplevelat(462,4) 58 effect_tl = toplevelat('effect', self.windowpos)
56 59
57 self.subpanels = Subpanels(sub_tl, effect_tl, self, self.scalelevels, 60 self.subpanels = Subpanels(sub_tl, effect_tl, self, self.scalelevels,
58 Subs, self.xfader, self.changelevel, 61 Subs, self.xfader, self.changelevel,
59 self.subediting, Subs.longestsubname()) 62 self.subediting, Subs.longestsubname())
60 63
61 leveldisplay_tl = toplevelat(873,400) 64 leveldisplay_tl = toplevelat('leveldisplay', self.windowpos)
62 leveldisplay_tl.bind('<Escape>', sys.exit) 65 leveldisplay_tl.bind('<Escape>', sys.exit)
63 66
64 self.leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels) 67 self.leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels)
65 for i in range(0,len(self.channel_levels)): 68 for i in range(0,len(self.channel_levels)):
66 self.channel_levels[i].config(text=self.oldlevels[i]) 69 self.channel_levels[i].config(text=self.oldlevels[i])
80 leveldisplay_tl.bind('<r>', self.refresh) 83 leveldisplay_tl.bind('<r>', self.refresh)
81 84
82 self.xfader.setupwidget(xf) 85 self.xfader.setupwidget(xf)
83 controlpanel.pack() 86 controlpanel.pack()
84 87
85 cuefader_tl = toplevelat(78, 480) 88 cuefader_tl = toplevelat('cuefader', self.windowpos)
86 cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels) 89 cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels)
87 cuefader.pack() 90 cuefader.pack()
88 91
89 def get_data(self,*args): 92 def get_data(self,*args):
90 Subs.reload_data(self.DUMMY) 93 Subs.reload_data(self.DUMMY)
197 def quit(self, *args): 200 def quit(self, *args):
198 self.save() 201 self.save()
199 self.master.destroy() 202 self.master.destroy()
200 sys.exit() 203 sys.exit()
201 def save(self, *args): 204 def save(self, *args):
205
206
202 filename = '/tmp/light9.prefs' 207 filename = '/tmp/light9.prefs'
203 if self.DUMMY: 208 if self.DUMMY:
204 filename += '.dummy' 209 filename += '.dummy'
205 print "Saving to", filename 210 print "Saving to", filename
206 file = open(filename, 'w') 211 file = open(filename, 'w')
212
213 # {name : (tkname, geom)}
214 windowitems = self.windowpos.items()
215 windowmapping = dict([(pair[0], name) for name, pair in windowitems])
216 # print "windowmapping", windowmapping
217 # print "windowpos", self.windowpos
218
219 for w in self.master.winfo_children():
220 tkname, geom = str(w), w.winfo_geometry()
221 try:
222 name = windowmapping[tkname]
223 self.windowpos[name] = (tkname, geom)
224 # print name, "geom is", geom
225 except:
226 # print "failed to save windowpos"
227 pass
228 self.shelf['window'] = self.windowpos
229 self.shelf.close()
230
207 try: 231 try:
208 cPickle.dump(Pickles(self.scalelevels, Subs.subs.items()), file) 232 cPickle.dump(Pickles(self.scalelevels, Subs.subs.items()), file)
209 except cPickle.UnpickleableError: 233 except cPickle.UnpickleableError:
210 print "UnpickleableError! There's yer problem." 234 print "UnpickleableError! There's yer problem."