Mercurial > code > home > repos > light9
comparison light8/Subs.py @ 28:b0342f9ee328
attempts to save params, better loading behavior
author | dmcc |
---|---|
date | Sun, 07 Jul 2002 10:17:00 +0000 |
parents | dea1e1d6d439 |
children | f595fdd4c548 |
comparison
equal
deleted
inserted
replaced
27:bee0862f4436 | 28:b0342f9ee328 |
---|---|
6 stdfont = ('Arial', 8) | 6 stdfont = ('Arial', 8) |
7 | 7 |
8 class Param: # abstract | 8 class Param: # abstract |
9 def get_value(self): | 9 def get_value(self): |
10 pass | 10 pass |
11 def set_value(self): | 11 def set_value(self, v): |
12 pass | 12 pass |
13 def draw_tk(self, frame): | 13 def draw_tk(self, frame): |
14 pass | 14 pass |
15 def __getstate__(self): | |
16 print "get_state:", self.get_value() | |
17 return {'value' : self.get_value()} | |
18 def __setstate__(self, dict): | |
19 print "set_state to", dict | |
20 self.value = StringVar() | |
21 self.set_value(dict['value']) | |
15 | 22 |
16 class CheckboxParam(Param): | 23 class CheckboxParam(Param): |
17 def __init__(self, initial=0): | 24 def __init__(self, initial=0): |
18 self.value = IntVar() | 25 self.value = IntVar() |
19 self.value.set(initial) | 26 self.value.set(initial) |
82 self.value = StringVar() | 89 self.value = StringVar() |
83 self.value.set(initial) | 90 self.value.set(initial) |
84 def get_value(self): | 91 def get_value(self): |
85 return self.value.get() | 92 return self.value.get() |
86 def set_value(self, v): | 93 def set_value(self, v): |
94 if 'value' not in self.__dict__: | |
95 self.value = StringVar() | |
87 self.value.set(v) | 96 self.value.set(v) |
88 def draw_tk(self, frame): | 97 def draw_tk(self, frame): |
89 l = Label(frame, textvariable=self.value, font=stdfont) | 98 l = Label(frame, textvariable=self.value, font=stdfont) |
90 l.pack() | 99 l.pack() |
91 | 100 |
141 if self.var is not None: | 150 if self.var is not None: |
142 self.var.set(level) | 151 self.var.set(level) |
143 def get(self, level): | 152 def get(self, level): |
144 if self.var is not None: | 153 if self.var is not None: |
145 return self.var.get() | 154 return self.var.get() |
146 | |
147 return None | 155 return None |
148 def justturnedon(self): | 156 def justturnedon(self): |
149 return self.atzero | 157 return self.atzero |
158 def __getstate__(self): | |
159 state = self.__dict__.copy() | |
160 # remove var (non-pickleable) | |
161 try: | |
162 del state['var'] | |
163 except KeyError: | |
164 pass | |
165 return state | |
166 # no setstate needed | |
150 | 167 |
151 class Sub: | 168 class Sub: |
152 def __init__(self, levels, dimmers=68, color=None): | 169 def __init__(self, levels, dimmers=68, color=None): |
153 self.levels = levels | 170 self.levels = levels |
154 self.dimmers = dimmers | 171 self.dimmers = dimmers # needed? |
155 self.is_effect = callable(self.levels) | 172 self.is_effect = callable(self.levels) |
156 self.slideradjuster = SliderAdjuster() | 173 self.slideradjuster = SliderAdjuster() |
157 if self.is_effect: | 174 if self.is_effect: |
158 self.params = Params() | 175 self.params = Params() |
159 self.generator = self.levels(self.params, self.slideradjuster) | 176 self.generator = self.levels(self.params, self.slideradjuster) |
164 self.slideradjuster.var = slidervar | 181 self.slideradjuster.var = slidervar |
165 def draw_tk(self, frame): | 182 def draw_tk(self, frame): |
166 if self.is_effect: | 183 if self.is_effect: |
167 self.params.draw_tk(frame) | 184 self.params.draw_tk(frame) |
168 def get_state(self): | 185 def get_state(self): |
169 pass | 186 state = self.__dict__.copy() |
187 if self.is_effect: | |
188 del state['levels'] | |
189 del state['generator'] | |
190 | |
191 return state | |
192 def set_state(self, statedict): | |
193 self.__dict__.update(statedict) | |
170 def get_levels(self, level): | 194 def get_levels(self, level): |
171 d = {} | 195 d = {} |
172 if level == 0: | 196 if level == 0: |
173 self.slideradjuster.atzero = 1 | 197 self.slideradjuster.atzero = 1 |
174 return d | 198 return d |
192 subs = {} | 216 subs = {} |
193 for name, levels in Config.subs.items(): | 217 for name, levels in Config.subs.items(): |
194 if type(name) == TupleType: | 218 if type(name) == TupleType: |
195 name, color = name | 219 name, color = name |
196 else: | 220 else: |
197 color=None | 221 color = None |
198 | 222 |
199 subs[name] = Sub(levels, color=color) | 223 subs[name] = Sub(levels, color=color) |
200 | 224 |
201 # subs = dict([(name, Sub(levels)) for name, levels in Config.subs.items()]) | 225 # subs = dict([(name, Sub(levels)) for name, levels in Config.subs.items()]) |