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 50 insertions and 12 deletions:
0 comments (0 inline, 0 general)
light8/Subs.py
Show inline comments
 
@@ -5,16 +5,23 @@ from types import TupleType
 

	
 
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):
 
        self.value = IntVar()
 
        self.value.set(initial)
 
    def get_value(self):
 
@@ -81,12 +88,14 @@ class LabelParam(Param):
 
    def __init__(self, initial=''):
 
        self.value = StringVar()
 
        self.value.set(initial)
 
    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)
 
        l.pack()
 

	
 
class ButtonParam(Param):
 
@@ -140,21 +149,29 @@ class SliderAdjuster:
 
    def set(self, level):
 
        if self.var is not None:
 
            self.var.set(level)
 
    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:
 
            self.params = Params()
 
            self.generator = self.levels(self.params, self.slideradjuster)
 
            self.generator.next()
 
@@ -163,13 +180,20 @@ class Sub:
 
        if self.is_effect:
 
            self.slideradjuster.var = slidervar
 
    def draw_tk(self, frame):
 
        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: 
 
            self.slideradjuster.atzero = 1
 
            return d
 
        if self.is_effect:
 
@@ -191,11 +215,11 @@ def reload_data(dummy):
 

	
 
    subs = {}
 
    for name, levels in Config.subs.items():
 
        if type(name) == TupleType:
 
            name, color = name
 
        else:
 
            color=None
 
            color = None
 

	
 
        subs[name] = Sub(levels, color=color)
 

	
 
    # subs = dict([(name, Sub(levels)) for name, levels in Config.subs.items()])
light8/rsn.py
Show inline comments
 
@@ -124,14 +124,21 @@ class Lightboard:
 
            p = cPickle.load(file)
 
            for s, v in p.scalelevels.items():
 
                try:
 
                    self.scalelevels[s].set(v)
 
                except:
 
                    print "Couldn't set %s -> %s" % (s, v)
 
        except:
 
            print "Couldn't load prefs (%s)" % filename
 
            for name, substate in p.substate.items():
 
                try:
 
                    Subs.subs[name].set_state(substate)
 
                except:
 
                    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
 
        # name = console_entry.get() # read from console
 
        if not name:
 
            print "Enter sub name in console."
 
@@ -158,25 +165,32 @@ class Lightboard:
 
        print 'Added sub:', st
 
        self.refresh()
 
    def backgroundloop(self, *args):
 
        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()])
 
            for name, lev in scalelevels.items()])
 
        self.substate = dict([(name, subobj.get_state())
 
            for name, subobj in subs])
 

	
 
mr_lightboard = Lightboard(root)
 

	
 
signal(SIGINT, mr_lightboard.quit)
 
bindkeys(root,'<Escape>', mr_lightboard.quit)
 

	
0 comments (0 inline, 0 general)