Mercurial > code > home > repos > light9
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." |