Changeset - b0342f9ee328
[Not reviewed]
default
0 2 0
dmcc - 22 years ago 2002-07-07 10:17:00

attempts to save params, better loading behavior
2 files changed with 47 insertions and 9 deletions:
0 comments (0 inline, 0 general)
light8/Subs.py
Show inline comments
 
@@ -8,10 +8,17 @@ stdfont = ('Arial', 8)
 
class Param: # abstract
 
    def get_value(self):
 
        pass
 
    def set_value(self):
 
    def set_value(self, v):
 
        pass
 
    def draw_tk(self, frame):
 
        pass
 
    def __getstate__(self):
 
        print "get_state:", self.get_value()
 
        return {'value' : self.get_value()}
 
    def __setstate__(self, dict):
 
        print "set_state to", dict
 
        self.value = StringVar()
 
        self.set_value(dict['value'])
 

	
 
class CheckboxParam(Param):
 
    def __init__(self, initial=0):
 
@@ -84,6 +91,8 @@ class LabelParam(Param):
 
    def get_value(self):
 
        return self.value.get()
 
    def set_value(self, v):
 
        if 'value' not in self.__dict__:
 
            self.value = StringVar()
 
        self.value.set(v)
 
    def draw_tk(self, frame):
 
        l = Label(frame, textvariable=self.value, font=stdfont)
 
@@ -143,15 +152,23 @@ class SliderAdjuster:
 
    def get(self, level):
 
        if self.var is not None:
 
            return self.var.get()
 

	
 
        return None
 
    def justturnedon(self):
 
        return self.atzero
 
    def __getstate__(self):
 
        state = self.__dict__.copy()
 
        # remove var (non-pickleable)
 
        try:
 
            del state['var']
 
        except KeyError:
 
            pass
 
        return state
 
    # no setstate needed
 

	
 
class Sub:
 
    def __init__(self, levels, dimmers=68, color=None):
 
        self.levels = levels
 
        self.dimmers = dimmers
 
        self.dimmers = dimmers # needed?
 
        self.is_effect = callable(self.levels)
 
        self.slideradjuster = SliderAdjuster()
 
        if self.is_effect:
 
@@ -166,7 +183,14 @@ class Sub:
 
        if self.is_effect:
 
            self.params.draw_tk(frame)
 
    def get_state(self):
 
        pass
 
        state = self.__dict__.copy()
 
        if self.is_effect:
 
            del state['levels']
 
            del state['generator']
 

	
 
        return state
 
    def set_state(self, statedict):
 
        self.__dict__.update(statedict)
 
    def get_levels(self, level):
 
        d = {}
 
        if level == 0: 
light8/rsn.py
Show inline comments
 
@@ -127,8 +127,15 @@ class Lightboard:
 
                    self.scalelevels[s].set(v)
 
                except:
 
                    print "Couldn't set %s -> %s" % (s, v)
 
            for name, substate in p.substate.items():
 
                try:
 
                    Subs.subs[name].set_state(substate)
 
        except:
 
            print "Couldn't load prefs (%s)" % filename
 
                    print "Couldn't set sub %s state" % name
 
        except IOError:
 
            print "IOError: Couldn't load prefs (%s)" % filename
 
        except EOFError:
 
            print "EOFrror: Couldn't load prefs (%s)" % filename
 

	
 
    def make_sub(self, name):
 
        i = 1
 
@@ -161,19 +168,26 @@ class Lightboard:
 
        self.master.after(50, self.backgroundloop, ())
 
        self.changelevel()
 
    def quit(self, *args):
 
        self.save()
 
        root.destroy()
 
        sys.exit()
 
    def save(self, *args):
 
        filename = '/tmp/light9.prefs'
 
        if DUMMY:
 
            filename += '.dummy'
 
        print "Saving to", filename
 
        file = open(filename, 'w')
 
        cPickle.dump(Pickles(self.scalelevels), file)
 
        root.destroy()
 
        sys.exit()
 
        try:
 
            cPickle.dump(Pickles(self.scalelevels, Subs.subs.items()), file)
 
        except cPickle.UnpickleableError:
 
            print "UnpickleableError!  There's yer problem."
 

	
 
class Pickles:
 
    def __init__(self, scalelevels):
 
    def __init__(self, scalelevels, subs=None):
 
        self.scalelevels = dict([(name, lev.get()) 
 
            for name,lev in scalelevels.items()])
 
        self.substate = dict([(name, subobj.get_state())
 
            for name, subobj in subs])
 

	
 
mr_lightboard = Lightboard(root)
 

	
0 comments (0 inline, 0 general)