diff light8/rsn.py @ 56:2af6698b0566

pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find) pulled Lightboard out of rsn.py (and fixed all the dependency problems i could find) made some exceptions print better
author drewp
date Tue, 09 Jul 2002 05:28:21 +0000
parents 3011c1028eb7
children eaf60f5dce86
line wrap: on
line diff
--- a/light8/rsn.py	Mon Jul 08 15:53:29 2002 +0000
+++ b/light8/rsn.py	Tue Jul 09 05:28:21 2002 +0000
@@ -13,6 +13,11 @@
 from subediting import Subediting
 from Fader import Fader
 import stage
+from Lightboard import Lightboard
+
+import Subs, Patch
+
+
 
 if len(sys.argv) >= 2:
     DUMMY = 0
@@ -28,199 +33,10 @@
 root.wm_geometry('+462+470')
 root.tk_focusFollowsMouse()
 
-import Subs, Patch
-
-def get_data(*args):
-    Subs.reload_data(DUMMY)
-    Patch.reload_data(DUMMY)
-    print "Patch:", Patch.patch
-    print "Subs:", ', '.join(Subs.subs.keys())
-
-get_data()
 
 parportdmx = io.ParportDMX(DUMMY)
 
-class Lightboard:
-    def __init__(self, master):
-        self.master = master
-
-        self.channel_levels = []
-        self.scalelevels = {}
-        self.xfader = Xfader(self.scalelevels) # doesn't draw any UI yet-- look for self.xfader.setupwidget()
-        self.oldlevels = [None] * 68 # never replace this; just clear it
-        self.subediting = Subediting(currentoutputlevels=self.oldlevels)
-
-        self.buildinterface()
-        self.load()
-        self.backgroundloop()
-        
-    def buildinterface(self):
-        global DUMMY
-        for w in self.master.winfo_children():
-            w.destroy()
-
-        stage_tl = toplevelat(22,30)
-        s = stage.Stage(stage_tl)
-        stage.createlights(s)
-        s.setsubediting(self.subediting)
-        s.pack()
-
-        sub_tl = toplevelat(0,0)
-        effect_tl = toplevelat(462,4)
-
-        self.subpanels = Subpanels(sub_tl, effect_tl, self, self.scalelevels,
-                                   Subs, self.xfader, self.changelevel,
-                                   self.subediting, Subs.longestsubname())
-
-        leveldisplay_tl = toplevelat(873,400)
-        leveldisplay_tl.bind('<Escape>', sys.exit)
-
-        self.leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels)
-        for i in range(0,len(self.channel_levels)):
-            self.channel_levels[i].config(text=self.oldlevels[i])
-            colorlabel(self.channel_levels[i])
-
-        Console(self)
-
-        # root frame
-        controlpanel = Controlpanel(root, self.xfader, self.refresh, self.quit)
-        
-        xf=Frame(root)
-        xf.pack(side='right')
-
-        root.bind('<q>', self.quit)
-        root.bind('<r>', self.refresh)
-        leveldisplay_tl.bind('<q>', self.quit)
-        leveldisplay_tl.bind('<r>', self.refresh)
-
-        self.xfader.setupwidget(xf)
-        controlpanel.pack()
-
-        cuefader_tl = toplevelat(78, 480)
-        cuefader = Fader(cuefader_tl, Subs.cues, self.scalelevels)
-        cuefader.pack()
-
-    def refresh(self, *args):
-        'rebuild interface, reload data'
-        get_data()
-        self.subediting.refresh()
-        self.buildinterface()
-        bindkeys(root,'<Escape>', self.quit)
-
-    def stageassub(self):
-        """returns the current onstage lighting as a levels
-        dictionary, skipping the zeros, and using names where
-        possible"""
-        levs=self.oldlevels
-        
-        return dict([(Patch.get_channel_name(i),l) for i,l
-                     in zip(range(1,len(levs)+1),levs)
-                     if l>0])
-    def save_sub(self, name, levels):
-        if not name:
-            print "Enter sub name in console."
-            return
-
-        st = ''
-        linebuf = 'subs["%s"] = {' % name
-        for channame,lev in levels.items():
-            if len(linebuf) > 60: 
-                st += linebuf + '\n   '
-                linebuf = ''
-
-            linebuf += ' "%s" : %d,' % (channame, lev)
-        st += linebuf + '}\n'
-        if DUMMY:
-            filename = 'ConfigDummy.py'
-        else:
-            filename = 'Config.py'
-        f = open(filename, 'a')
-        f.write(st)
-        f.close()
-        print 'Added sub:', st
-        self.refresh()
-
-    # this is called on a loop, and ALSO by the Scales
-    def changelevel(self, *args):
-        'Amp trims slider'
-
-        levels = [0] * 68
-        for name, s in Subs.subs.items():
-            newlevels = s.get_levels(level=self.scalelevels[name].get())
-            for (ch, fadelev) in newlevels.items():
-                levels[ch-1] = max(levels[ch-1], fadelev)
-
-        levels = [int(l) for l in levels]
-
-        for lev,lab,oldlev,numlab in zip(levels, self.channel_levels, 
-                                         self.oldlevels, 
-                                         self.leveldisplay.number_labels):
-            if lev != oldlev:
-                lab.config(text="%d" % lev)
-                colorlabel(lab)
-                if lev < oldlev:
-                    numlab['bg'] = 'blue'
-                else:
-                    numlab['bg'] = 'red'
-            else:
-                numlab['bg'] = 'lightPink'
-
-        self.oldlevels[:] = levels[:] # replace the elements in oldlevels - don't make a new list (Subediting is watching it)
-            
-        parportdmx.sendlevels(levels)
-
-    def load(self):
-        try:
-            filename = '/tmp/light9.prefs'
-            if DUMMY:
-                filename += '.dummy'
-            print "Loading from", filename
-            file = open(filename, 'r')
-            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)
-            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
-        except:
-            print "BigTrouble: Couldn't load prefs (%s)" % filename
-
-    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')
-        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, 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])
-        # print "substate", self.substate
-
-mr_lightboard = Lightboard(root)
+mr_lightboard = Lightboard(root,parportdmx,DUMMY)
 
 signal(SIGINT, mr_lightboard.quit)
 bindkeys(root,'<Escape>', mr_lightboard.quit)