diff light8/rsn.py @ 28:b0342f9ee328

attempts to save params, better loading behavior
author dmcc
date Sun, 07 Jul 2002 10:17:00 +0000
parents 219d6fcbc28d
children f595fdd4c548
line wrap: on
line diff
--- a/light8/rsn.py	Sun Jul 07 08:36:21 2002 +0000
+++ b/light8/rsn.py	Sun Jul 07 10:17:00 2002 +0000
@@ -127,8 +127,15 @@
                     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
@@ -161,19 +168,26 @@
         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)