Mercurial > code > home > repos > light9
comparison light8/ExtSliderMapper.py @ 94:29a8b23d8db5
ready for better scalelevel variable, checkbutton -> label
author | dmcc |
---|---|
date | Sat, 13 Jul 2002 03:23:35 +0000 |
parents | 827a675131dc |
children | d1a1ded20ec7 |
comparison
equal
deleted
inserted
replaced
93:d6c48d2d3bd6 | 94:29a8b23d8db5 |
---|---|
11 self.synced = BooleanVar() # currently synced | 11 self.synced = BooleanVar() # currently synced |
12 self.synced.set(synced) | 12 self.synced.set(synced) |
13 self.extlevel = DoubleVar() # external slider's input | 13 self.extlevel = DoubleVar() # external slider's input |
14 self.extlevel.set(extinputlevel) | 14 self.extlevel.set(extinputlevel) |
15 self.widgets = [] # list of widgets drawn | 15 self.widgets = [] # list of widgets drawn |
16 self.sublabel = None # the label which represents a sub level. we hold on to | 16 self.sublabel = None # the label which represents a sub level. |
17 # it so we can change its textvariable | 17 # we hold on to it so we can change its |
18 self.lastbgcolor = None # last background color drawn to avoid unnecessary | 18 # textvariable |
19 # updates | 19 self.statuslabel = None # tells us sync status |
20 self.ignoreunsync = 0 # whether to ignore the next request to unsync | 20 self.lastbgcolor = None # last background color drawn to avoid |
21 # this is because we trace the slider variable, but | 21 # unnecessary redraws |
22 # we are also semi-responsible for setting it in | |
23 # Lightboard.changelevels. | |
24 def ignorenextunync(self): | |
25 print "skipping next unsync" | |
26 self.ignoreunsync += 1 | |
27 self.sync() | |
28 # self.color_bg() | |
29 def sync(self, *args): | 22 def sync(self, *args): |
30 # print "syncing" | |
31 self.synced.set(1) | 23 self.synced.set(1) |
32 # self.color_bg() | 24 self.color_bg() |
33 def unsync(self, *args): | 25 def unsync(self, *args): |
34 if self.ignoreunsync > 0: | |
35 print "skipped unsync", self.ignoreunsync | |
36 self.synced.set(1) | |
37 self.color_bg() | |
38 self.ignoreunsync -= 1 | |
39 return | |
40 ''' | |
41 print "unsyncing" | |
42 ''' | |
43 self.synced.set(0) | 26 self.synced.set(0) |
44 # self.color_bg() | 27 self.color_bg() |
45 def issynced(self): | 28 def issynced(self): |
46 return self.synced.get() | 29 return self.synced.get() |
47 def disconnect(self, *args): | 30 def disconnect(self, *args): |
48 self.set_subname('disconnected') # a bit hack-like | 31 self.set_subname('disconnected') # a bit hack-like |
49 self.sublabel.configure(text="N/A") | 32 self.sublabel.configure(text="N/A") |
50 self.color_bg() | 33 self.color_bg() |
51 def isdisconnected(self): | 34 def isdisconnected(self): |
52 return self.subname.get() == 'disconnected' | 35 return self.subname.get() == 'disconnected' # a bit more hack-like |
53 def check_synced(self, *args): | 36 def check_synced(self, *args): |
54 'If external level is near than the sublevel, it synces' | 37 'If external level is near than the sublevel, it synces' |
55 if self.isdisconnected(): | 38 if self.isdisconnected(): |
56 self.unsync() | 39 self.unsync() |
57 return | 40 return |
67 self.subname.set(newname) | 50 self.subname.set(newname) |
68 self.unsync() | 51 self.unsync() |
69 self.color_bg() | 52 self.color_bg() |
70 def color_bg(self): | 53 def color_bg(self): |
71 if self.widgets: | 54 if self.widgets: |
72 self.check_synced() | |
73 if self.isdisconnected(): | 55 if self.isdisconnected(): |
74 color = 'honeyDew4' | 56 color = 'honeyDew4' |
75 elif self.issynced(): | 57 elif self.issynced(): |
76 # elif abs(self.extlevel.get() - self.sublevel.get()) <= 0.02: | 58 # elif abs(self.extlevel.get() - self.sublevel.get()) <= 0.02: |
77 color = 'honeyDew2' | 59 color = 'honeyDew2' |
78 else: # unsynced | 60 else: # unsynced |
79 color = 'red' | 61 color = 'red' |
62 | |
63 if self.statuslabel: | |
64 if color == 'honeyDew2': # connected | |
65 self.statuslabel['text'] = 'Sync' | |
66 else: | |
67 self.statuslabel['text'] = 'No sync' | |
80 | 68 |
81 # print "color", color, "lastbgcolor", self.lastbgcolor | 69 # print "color", color, "lastbgcolor", self.lastbgcolor |
82 if self.lastbgcolor == color: return | 70 if self.lastbgcolor == color: return |
83 for widget in self.widgets: | 71 for widget in self.widgets: |
84 widget.configure(bg=color) | 72 widget.configure(bg=color) |
103 c.slistbox.listbox.insert(END, "disconnected") | 91 c.slistbox.listbox.insert(END, "disconnected") |
104 for s in subnames: | 92 for s in subnames: |
105 c.slistbox.listbox.insert(END, s) | 93 c.slistbox.listbox.insert(END, s) |
106 c.entry.configure(width=12) | 94 c.entry.configure(width=12) |
107 statframe = Frame(frame) | 95 statframe = Frame(frame) |
96 | |
97 ''' | |
108 cb = Checkbutton(statframe, variable=self.synced, | 98 cb = Checkbutton(statframe, variable=self.synced, |
109 text="Synced") | 99 text="Synced") |
110 cb.grid(columnspan=2, sticky=W) | 100 cb.grid(columnspan=2, sticky=W) |
101 ''' | |
102 self.statuslabel = Label(statframe, text="No sync") | |
103 self.statuslabel.grid(columnspan=2, sticky=W) | |
111 ilabel = Label(statframe, text="Input", fg='blue') | 104 ilabel = Label(statframe, text="Input", fg='blue') |
112 ilabel.grid(row=1, sticky=W) | 105 ilabel.grid(row=1, sticky=W) |
113 extlabel = Label(statframe, textvariable=self.extlevel, width=5) | 106 extlabel = Label(statframe, textvariable=self.extlevel, width=5) |
114 extlabel.grid(row=1, column=1) | 107 extlabel.grid(row=1, column=1) |
115 rlabel = Label(statframe, text="Real") | 108 rlabel = Label(statframe, text="Real") |
118 self.sublabel.grid(row=2, column=1) | 111 self.sublabel.grid(row=2, column=1) |
119 statframe.pack(side=BOTTOM, expand=1, fill=X) | 112 statframe.pack(side=BOTTOM, expand=1, fill=X) |
120 c.pack() | 113 c.pack() |
121 frame.pack(side=LEFT, expand=1, fill=BOTH) | 114 frame.pack(side=LEFT, expand=1, fill=BOTH) |
122 | 115 |
123 self.widgets = [frame, c, statframe, cb, ilabel, extlabel, rlabel, | 116 self.widgets = [frame, c, statframe, self.statuslabel, ilabel, extlabel, |
124 self.sublabel] | 117 rlabel, self.sublabel] |
125 | 118 |
126 class ExtSliderMapper(Frame): | 119 class ExtSliderMapper(Frame): |
127 def __init__(self, parent, sliderlevels, sliderinput, filename='slidermapping', | 120 def __init__(self, parent, sliderlevels, sliderinput, filename='slidermapping', |
128 numsliders=4): | 121 numsliders=4): |
129 'Slider levels is scalelevels, sliderinput is an ExternalInput object' | 122 'Slider levels is scalelevels, sliderinput is an ExternalInput object' |
181 | 174 |
182 rawlevels = self.sliderinput.get_levels() | 175 rawlevels = self.sliderinput.get_levels() |
183 for rawlev, slidermap in zip(rawlevels, self.current_mappings): | 176 for rawlev, slidermap in zip(rawlevels, self.current_mappings): |
184 slidermap.changed_extinput(rawlev) | 177 slidermap.changed_extinput(rawlev) |
185 | 178 |
179 ''' | |
186 outputlevels = {} | 180 outputlevels = {} |
187 for m in self.current_mappings: | 181 for m in self.current_mappings: |
188 if m.issynced(): | 182 if m.issynced(): |
189 k, v = m.get_level_pair() | 183 k, v = m.get_level_pair() |
190 outputlevels[k] = v | 184 outputlevels[k] = v |
192 return outputlevels | 186 return outputlevels |
193 ''' | 187 ''' |
194 return dict([m.get_level_pair() | 188 return dict([m.get_level_pair() |
195 for m in self.current_mappings | 189 for m in self.current_mappings |
196 if m.issynced()]) | 190 if m.issynced()]) |
197 ''' | |
198 def draw_interface(self): | 191 def draw_interface(self): |
199 self.reallevellabels = [] | 192 self.reallevellabels = [] |
200 subchoiceframe = Frame(self) | 193 subchoiceframe = Frame(self) |
201 for m in self.current_mappings: | 194 for m in self.current_mappings: |
202 m.draw_interface(subchoiceframe, self.subnames) | 195 m.draw_interface(subchoiceframe, self.subnames) |