annotate light8/Subs.py @ 15:c76b62eccdec

put **kw back in, they now go to the scale and can override the defaults. put **kw back in, they now go to the scale and can override the defaults. for our purposes, we probably want to edit the defaults so we don't have them in every call.
author dmcc
date Sun, 07 Jul 2002 06:18:40 +0000
parents f974a462133f
children dea1e1d6d439
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]),
4
f974a462133f added light8 from the posted light8-1.0.tgz
drewp
parents: 0
diff changeset
75 height=len(self.options))
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()])