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()])