diff light8/rsn.py @ 12:7adc65771676

big restructuring - moved lots of things (including most panels) to other files
author drewp
date Sun, 07 Jul 2002 06:16:11 +0000
parents f974a462133f
children 7dbe8067acea
line wrap: on
line diff
--- a/light8/rsn.py	Sun Jul 07 06:01:57 2002 +0000
+++ b/light8/rsn.py	Sun Jul 07 06:16:11 2002 +0000
@@ -7,7 +7,11 @@
 from signal import *
 import sys, thread, cPickle
 
+import io
+from uihelpers import *
+from panels import *
 from Xfader import *
+import stage
 
 if len(sys.argv) >= 2:
     DUMMY = 0
@@ -32,32 +36,11 @@
 
 get_data()
 
-if not DUMMY:
-    getparport()
-
-def sendlevels(levels):
-    if DUMMY: return
-    levels = list(levels) + [0]
-    if levels[14] > 0: levels[14] = 100
-    # print "levels", ' '.join(["%3.1f" % l for l in levels])
-    outstart()
-    for p in range(1,70):
-        outbyte(levels[p-1]*255/100)
+io.init(DUMMY)
 
 channel_levels = []
 scalelevels = {}
 fades = {}
-stdfont = ('Arial', 8)
-monofont = ('Courier', 8)
-
-def colorlabel(label):
-    txt=label['text'] or "0"
-    lev=float(txt)/100
-    low=(80,80,180)
-    high=(255,55,050)
-    out = [int(l+lev*(h-l)) for h,l in zip(high,low)]
-    col="#%02X%02X%02X" % tuple(out)
-    label.config(bg=col)
 
 _oldlevels=[None] * 68
 
@@ -80,45 +63,17 @@
 
     _oldlevels = levels[:]
         
-    sendlevels(levels)
+    io.sendlevels(levels)
 
 def backgroundloop(*args):
     root.after(50, backgroundloop, ())
     changelevel()
-    
-def make_frame(parent):
-    f = Frame(parent, bd=0)
-    f.pack(side='left')
-    return f
-
-def add_fade(slider, evt):
-    print 'b3!'
-
-def execute(evt, str):
-    if str[0] == '*': # make a new sub
-        make_sub(str)
-    else:
-        print '>>>', str
-        print eval(str)
-    console_frame.focus()
-    
-def console():
-    global console_entry, console_frame
-    print "Light 8: Everything's under control"
-    t=Toplevel(root)
-    console_frame = Frame(t)
-    console_entry=Entry(console_frame)
-    console_entry.pack(expand=1, fill='x')
-    console_entry.bind('<Return>', lambda evt: execute(evt, 
-                                        console_entry.get()))
-    console_frame.pack(fill=BOTH, expand=1)
-    t.wm_geometry("599x19+267+717")
 
 buildinterface = None # temporary
 def refresh(*args):
     get_data()
     buildinterface()
-    bindkeys('<Escape>', quit)
+    bindkeys(root,'<Escape>', quit)
 
 def quit(*args):
     filename = '/tmp/light9.prefs'
@@ -130,117 +85,42 @@
     root.destroy()
     sys.exit()
 
-def bindkeys(key, func):
-    root.bind(key, func)
-    for w in root.winfo_children():
-        w.bind(key, func)
+
+xfader=Xfader(scalelevels)
 
 
-def toggle_slider(s):
-    if s.get() == 0:
-        s.set(100)
-    else:
-        s.set(0)
-def printout(t):
-    print t
-    
-xfader=Xfader(scalelevels)
 
 def buildinterface(*args):
-    global channel_levels, _oldlevels, leveldisplay, stdfont, monofnt, xfader
+    global channel_levels, _oldlevels, leveldisplay, xfader
     for w in root.winfo_children():
         w.destroy()
 
-    sublist = Subs.subs.items()
-    sublist.sort()
-
-    sub_tl = Toplevel()
-    sub_tl.wm_geometry("+0+0")
-    effect_tl = Toplevel()
-    effect_tl.wm_geometry("+0+352")
-
-    for name, sub in sublist:
-        if sub.is_effect:
-            f=Frame(effect_tl, bd=1, relief='raised')
-        else:
-            f=Frame(sub_tl, bd=1, relief='raised')
-
-        f.pack(fill='both',exp=1,side='left')
-        
-        if name not in scalelevels:
-            scalelevels[name]=DoubleVar()
-
-        sub.set_slider_var(scalelevels[name])
+    stage_tl=toplevelat(165,90)
+    s=stage.Stage(stage_tl)
+    stage.createlights(s)
+    s.pack()
 
-        scaleopts = {}
-        if sub.color:
-            scaleopts['troughcolor'] = sub.color
-        s=Scale(f,command=lambda l,name=name: changelevel(name,l),showvalue=0,
-                length=300-17,variable=scalelevels[name],width=20,
-                to=0,res=.001,from_=1,bd=1, **scaleopts)
-        l=Label(f,text=str(name), font=stdfont, padx=0, pady=0)
-        v=Label(f,textvariable=scalelevels[name], font=stdfont, padx=0, pady=0)
-        l.pack(side='bottom')
-        v.pack(side='bottom')
+    sub_tl = toplevelat(0,0)
+    effect_tl = toplevelat(0,352)
 
-        for axis in ('y','x'):
-            cvar=IntVar()
-            cb=Checkbutton(f,text=axis,variable=cvar,font=stdfont, padx=0, pady=0, bd=1)
-            button = ('Alt','Control')[axis=='y'] # unused?
-#            s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
-            cb.pack(side='bottom',fill='both', padx=0, pady=0)
-            xfader.registerbutton(name,axis,cvar)
-
-        s.pack(side='left')
-        s.bind('<3>', lambda evt, v=scalelevels[name]: toggle_slider(v))\
-        
-        sframe = Frame(f,bd=2,relief='groove')
-        sub.draw_tk(sframe)
-        sframe.pack(side='left',fill='y')
+    Subpanels(sub_tl,effect_tl,scalelevels,Subs,xfader,changelevel)
 
     # def event_printer(evt):
         # print dir(evt)
 
     # sub_tl.bind('<b>', event_printer)
-    leveldisplay=Toplevel(root)    
+    leveldisplay=toplevelat(873,400)
     leveldisplay.bind('<Escape>', sys.exit)
-    leveldisplay.wm_geometry('+873+400')
-    frames = (make_frame(leveldisplay), make_frame(leveldisplay))
-    channel_levels=[]
-    for channel in range(1, 69):
-        f=Frame(frames[channel > 34])
-        Label(f,text=str(channel), width=3, bg='lightPink', 
-            font=stdfont, padx=0, pady=0, bd=0, height=1).pack(side='left')
-        Label(f,text=Patch.get_channel_name(channel), width=8, 
-            font=stdfont, anchor='w', padx=0, pady=0, bd=0, height=1).pack(side='left')
-        l=Label(f,text=_oldlevels[channel-1], width=3, bg='lightBlue', 
-            font=stdfont, anchor='e', padx=1, pady=0, bd=0, height=1)
-        l.pack(side='left')
-        colorlabel(l)
-        channel_levels.append(l)
-        f.pack(side='top')
-    
-    console()
+
+    Leveldisplay(leveldisplay,_oldlevels)
+
+    Console()
 
     # root frame
-    controlpanel = Frame(root)
-    xf=Frame(controlpanel)
+    controlpanel = Controlpanel(root,xfader,refresh,quit)
+    
+    xf=Frame(root)
     xf.pack(side='right')
-    for txt,cmd in (
-        ('Quit',       quit),
-        ('Refresh',    refresh),
-        ('Clear all', xfader.clearallbuttons),
-        ('On -> X',     lambda: xfader.grab('x')),
-        ('Clear X',     lambda: xfader.clearallbuttons('x')),
-        ('On -> Y',     lambda: xfader.grab('y')),
-        ('Clear Y',     lambda: xfader.clearallbuttons('y'))):
-        Button(controlpanel, text=txt, command=cmd).pack(side='top', fill='x')
-
-    # Button(controlpanel, text='Quit',       command=quit).pack(side='left')
-    # Button(controlpanel, text='Refresh',    command=refresh).pack(side='left')
-    # Button(controlpanel, text='Clearxfade', command=xfader.clearallbuttons).pack(side='left')
-    # Button(controlpanel, text='Grab x',     command=lambda: xfader.grab('x')).pack(side='left')
-    # Button(controlpanel, text='Grab y',     command=lambda: xfader.grab('y')).pack(side='left')
 
     root.bind('<q>', quit)
     root.bind('<r>', refresh)
@@ -250,6 +130,7 @@
     xfader.setupwidget(xf)
     controlpanel.pack()
 
+
 buildinterface()
 
 class Pickles:
@@ -304,11 +185,11 @@
 
 load()
 signal(SIGINT, quit)
-bindkeys('<Escape>', quit)
+bindkeys(root,'<Escape>', quit)
 
-# bindkeys('<q>', quit)
-# bindkeys('<r>', refresh)
-# bindkeys('<s>', make_sub)
+# bindkeys(root,'<q>', quit)
+# bindkeys(root,'<r>', refresh)
+# bindkeys(root,'<s>', make_sub)
 backgroundloop()
 root.mainloop() # Receiver switches main