annotate light8/Subs.py @ 26:219d6fcbc28d

Reclassification, minor cleanups Reclassification, minor cleanups No more global variables in rsn! They are all in a class called LightBoard.
author dmcc
date Sun, 07 Jul 2002 08:33:52 +0000
parents dea1e1d6d439
children b0342f9ee328
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 from Patch import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
2 from time import time
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
3 from Tkinter import *
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 from types import TupleType
45b12307c695 Initial revision
drewp
parents:
diff changeset
5
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 stdfont = ('Arial', 8)
45b12307c695 Initial revision
drewp
parents:
diff changeset
7
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 class Param: # abstract
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 pass
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
11 def set_value(self):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 pass
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 pass
45b12307c695 Initial revision
drewp
parents:
diff changeset
15
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 class CheckboxParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
17 def __init__(self, initial=0):
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 self.value = IntVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 return self.value.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 self.c = Checkbutton(frame, variable=self.value)
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 self.c.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
25
45b12307c695 Initial revision
drewp
parents:
diff changeset
26 class SliderParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 def __init__(self, range=(0, 1), res=0.01, initial=0, orient='v',
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 **options):
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 self.value = DoubleVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
30 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
31 self.options = {'res' : res, 'to' : range[0], 'from' : range[1],
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 'orient' : orient,
45b12307c695 Initial revision
drewp
parents:
diff changeset
33 'font' : stdfont, 'length' : 50, 'sliderlength' : 10,
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 'width' : 10}
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 self.options.update(options)
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 return self.value.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 s = Scale(frame, variable=self.value, **self.options)
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 s.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
41
45b12307c695 Initial revision
drewp
parents:
diff changeset
42 class TextParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 def __init__(self, initial=''):
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 self.value = StringVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 return self.value.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 def select_all(self, evt):
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 self.e.select_range(0, END)
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 def unfocus(self, evt):
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 self.frame.focus()
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
53 self.frame = frame
45b12307c695 Initial revision
drewp
parents:
diff changeset
54 self.e = Entry(frame, textvariable=self.value)
45b12307c695 Initial revision
drewp
parents:
diff changeset
55 self.e.bind("<Return>", self.unfocus)
45b12307c695 Initial revision
drewp
parents:
diff changeset
56 self.e.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
57
45b12307c695 Initial revision
drewp
parents:
diff changeset
58 class ListParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
59 def __init__(self, options=(), multiple=0, initial=''):
45b12307c695 Initial revision
drewp
parents:
diff changeset
60 self.value = StringVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
61 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 self.options = options
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 if multiple:
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 self.selectmode = 'MULTIPLE'
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 self.selectmode = 'SINGLE'
45b12307c695 Initial revision
drewp
parents:
diff changeset
67 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 try:
45b12307c695 Initial revision
drewp
parents:
diff changeset
69 return self.l.get(self.l.curselection())
45b12307c695 Initial revision
drewp
parents:
diff changeset
70 except:
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 return ''
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 self.l = Listbox(frame, selectmode=self.selectmode, font=stdfont,
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 width=max([len(o) for o in self.options]),
21
dea1e1d6d439 shared Listbox problem solved. exportselection=0!
dmcc
parents: 4
diff changeset
75 height=len(self.options), exportselection=0)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
76 for o in self.options:
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 self.l.insert(END, o)
45b12307c695 Initial revision
drewp
parents:
diff changeset
78 self.l.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
79
45b12307c695 Initial revision
drewp
parents:
diff changeset
80 class LabelParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
81 def __init__(self, initial=''):
45b12307c695 Initial revision
drewp
parents:
diff changeset
82 self.value = StringVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
83 self.value.set(initial)
45b12307c695 Initial revision
drewp
parents:
diff changeset
84 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
85 return self.value.get()
45b12307c695 Initial revision
drewp
parents:
diff changeset
86 def set_value(self, v):
45b12307c695 Initial revision
drewp
parents:
diff changeset
87 self.value.set(v)
45b12307c695 Initial revision
drewp
parents:
diff changeset
88 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
89 l = Label(frame, textvariable=self.value, font=stdfont)
45b12307c695 Initial revision
drewp
parents:
diff changeset
90 l.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
91
45b12307c695 Initial revision
drewp
parents:
diff changeset
92 class ButtonParam(Param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
93 def __init__(self, text, **options):
45b12307c695 Initial revision
drewp
parents:
diff changeset
94 self.options = {'text' : text}
45b12307c695 Initial revision
drewp
parents:
diff changeset
95 self.options.update(options)
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 self.pressed = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
97 self.unread = 0 # unread button presses
45b12307c695 Initial revision
drewp
parents:
diff changeset
98 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
99 b = Button(frame, **self.options)
45b12307c695 Initial revision
drewp
parents:
diff changeset
100 b.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
101 b.bind('<ButtonPress>', self.activate)
45b12307c695 Initial revision
drewp
parents:
diff changeset
102 b.bind('<ButtonRelease>', self.deactivate)
45b12307c695 Initial revision
drewp
parents:
diff changeset
103 def get_value(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
104 if self.unread:
45b12307c695 Initial revision
drewp
parents:
diff changeset
105 self.unread = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
106 return 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
107
45b12307c695 Initial revision
drewp
parents:
diff changeset
108 return self.pressed
45b12307c695 Initial revision
drewp
parents:
diff changeset
109 def activate(self, evt):
45b12307c695 Initial revision
drewp
parents:
diff changeset
110 self.pressed = 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
111 self.unread = 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
112 def deactivate(self, evt):
45b12307c695 Initial revision
drewp
parents:
diff changeset
113 self.pressed = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
114
45b12307c695 Initial revision
drewp
parents:
diff changeset
115 class Params:
45b12307c695 Initial revision
drewp
parents:
diff changeset
116 def __init__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
117 self.params = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
118 def add_param(self, name, param):
45b12307c695 Initial revision
drewp
parents:
diff changeset
119 self.params[name] = param
45b12307c695 Initial revision
drewp
parents:
diff changeset
120 def get_param_value(self, name):
45b12307c695 Initial revision
drewp
parents:
diff changeset
121 return self.params[name].get_value()
45b12307c695 Initial revision
drewp
parents:
diff changeset
122 def __getitem__(self, name):
45b12307c695 Initial revision
drewp
parents:
diff changeset
123 return self.params[name].get_value()
45b12307c695 Initial revision
drewp
parents:
diff changeset
124 def __setitem__(self, name, value):
45b12307c695 Initial revision
drewp
parents:
diff changeset
125 self.params[name].set_value(value)
45b12307c695 Initial revision
drewp
parents:
diff changeset
126 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
127 for name,param in self.params.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
128 f = Frame(frame)
45b12307c695 Initial revision
drewp
parents:
diff changeset
129 l = Label(f, text=name, font=stdfont)
45b12307c695 Initial revision
drewp
parents:
diff changeset
130 l.pack(side='left')
45b12307c695 Initial revision
drewp
parents:
diff changeset
131 pframe = Frame(f)
45b12307c695 Initial revision
drewp
parents:
diff changeset
132 param.draw_tk(pframe)
45b12307c695 Initial revision
drewp
parents:
diff changeset
133 pframe.pack(side='right')
45b12307c695 Initial revision
drewp
parents:
diff changeset
134 f.pack()
45b12307c695 Initial revision
drewp
parents:
diff changeset
135
45b12307c695 Initial revision
drewp
parents:
diff changeset
136 class SliderAdjuster:
45b12307c695 Initial revision
drewp
parents:
diff changeset
137 def __init__(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
138 self.var = None
45b12307c695 Initial revision
drewp
parents:
diff changeset
139 self.atzero = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
140 def set(self, level):
45b12307c695 Initial revision
drewp
parents:
diff changeset
141 if self.var is not None:
45b12307c695 Initial revision
drewp
parents:
diff changeset
142 self.var.set(level)
45b12307c695 Initial revision
drewp
parents:
diff changeset
143 def get(self, level):
45b12307c695 Initial revision
drewp
parents:
diff changeset
144 if self.var is not None:
45b12307c695 Initial revision
drewp
parents:
diff changeset
145 return self.var.get()
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
146
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
147 return None
45b12307c695 Initial revision
drewp
parents:
diff changeset
148 def justturnedon(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
149 return self.atzero
45b12307c695 Initial revision
drewp
parents:
diff changeset
150
45b12307c695 Initial revision
drewp
parents:
diff changeset
151 class Sub:
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
152 def __init__(self, levels, dimmers=68, color=None):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
153 self.levels = levels
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
154 self.dimmers = dimmers
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
155 self.is_effect = callable(self.levels)
45b12307c695 Initial revision
drewp
parents:
diff changeset
156 self.slideradjuster = SliderAdjuster()
45b12307c695 Initial revision
drewp
parents:
diff changeset
157 if self.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
158 self.params = Params()
45b12307c695 Initial revision
drewp
parents:
diff changeset
159 self.generator = self.levels(self.params, self.slideradjuster)
45b12307c695 Initial revision
drewp
parents:
diff changeset
160 self.generator.next()
45b12307c695 Initial revision
drewp
parents:
diff changeset
161 self.color = color
45b12307c695 Initial revision
drewp
parents:
diff changeset
162 def set_slider_var(self, slidervar):
45b12307c695 Initial revision
drewp
parents:
diff changeset
163 if self.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
164 self.slideradjuster.var = slidervar
45b12307c695 Initial revision
drewp
parents:
diff changeset
165 def draw_tk(self, frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
166 if self.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
167 self.params.draw_tk(frame)
45b12307c695 Initial revision
drewp
parents:
diff changeset
168 def get_state(self):
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
169 pass
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
170 def get_levels(self, level):
45b12307c695 Initial revision
drewp
parents:
diff changeset
171 d = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
172 if level == 0:
45b12307c695 Initial revision
drewp
parents:
diff changeset
173 self.slideradjuster.atzero = 1
45b12307c695 Initial revision
drewp
parents:
diff changeset
174 return d
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
175 if self.is_effect:
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
176 d = self.generator.next()
45b12307c695 Initial revision
drewp
parents:
diff changeset
177 self.slideradjuster.atzero = 0
45b12307c695 Initial revision
drewp
parents:
diff changeset
178 else: # dictionary (standard)
45b12307c695 Initial revision
drewp
parents:
diff changeset
179 d = self.levels
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
180 return dict([(get_dmx_channel(ch), float(lev) * float(level))
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
181 for ch, lev in d.items()])
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
182
45b12307c695 Initial revision
drewp
parents:
diff changeset
183 def reload_data(dummy):
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
184 global subs
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
185 if dummy:
45b12307c695 Initial revision
drewp
parents:
diff changeset
186 import ConfigDummy as Config
45b12307c695 Initial revision
drewp
parents:
diff changeset
187 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
188 import Config
45b12307c695 Initial revision
drewp
parents:
diff changeset
189
45b12307c695 Initial revision
drewp
parents:
diff changeset
190 reload(Config)
45b12307c695 Initial revision
drewp
parents:
diff changeset
191
45b12307c695 Initial revision
drewp
parents:
diff changeset
192 subs = {}
45b12307c695 Initial revision
drewp
parents:
diff changeset
193 for name, levels in Config.subs.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
194 if type(name) == TupleType:
45b12307c695 Initial revision
drewp
parents:
diff changeset
195 name, color = name
45b12307c695 Initial revision
drewp
parents:
diff changeset
196 else:
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
197 color=None
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
198
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
199 subs[name] = Sub(levels, color=color)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
200
45b12307c695 Initial revision
drewp
parents:
diff changeset
201 # subs = dict([(name, Sub(levels)) for name, levels in Config.subs.items()])