Changeset - 219d6fcbc28d
[Not reviewed]
default
0 3 0
dmcc - 22 years ago 2002-07-07 08:33:52

Reclassification, minor cleanups
Reclassification, minor cleanups
No more global variables in rsn! They are all in a class called
LightBoard.
3 files changed with 99 insertions and 98 deletions:
0 comments (0 inline, 0 general)
light8/panels.py
Show inline comments
 
@@ -8,8 +8,6 @@ from FlyingFader import FlyingFader
 
stdfont = ('Arial', 8)
 
monofont = ('Courier', 8)
 

	
 

	
 

	
 
class Controlpanel(Frame):
 
    def __init__(self,parent,xfader,refresh_cb,quit_cb):
 
        Frame.__init__(self,parent)
 
@@ -22,8 +20,8 @@ class Controlpanel(Frame):
 
            ('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=txt, command=cmd).pack(side='top', 
 
                fill='x')
 

	
 
class Console:
 
    def __init__(self):
 
@@ -32,7 +30,8 @@ class Console:
 
        self.frame = Frame(t)
 
        self.entry=Entry(self.frame)
 
        self.entry.pack(expand=1, fill='x')
 
        self.entry.bind('<Return>', lambda evt: self.execute(evt, self.entry.get()))
 
        self.entry.bind('<Return>', lambda evt: self.execute(evt, 
 
            self.entry.get()))
 
        self.frame.pack(fill=BOTH, expand=1)
 
    
 
    def execute(evt, str):
 
@@ -44,23 +43,36 @@ class Console:
 
        self.frame.focus()
 

	
 
class Leveldisplay:
 
    def __init__(self,parent,_oldlevels,channel_levels):
 
        
 
    def __init__(self, parent, channel_levels, num_channels=68):
 
        frames = (make_frame(parent), make_frame(parent))
 
        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')
 
        self.number_labels = {}
 
        for channel in range(1, num_channels+1):
 

	
 
            # frame for this channel
 
            f = Frame(frames[channel > (num_channels/2)])
 
            # channel number -- will turn yellow when being altered
 
            num_lab = Label(f, text=str(channel), width=3, bg='lightPink', 
 
                font=stdfont, padx=0, pady=0, bd=0, height=1)
 
            num_lab.pack(side='left')
 
            self.number_labels[channel] = num_lab
 

	
 
            # text description of channel
 
            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, width=3, bg='lightBlue', #text=_oldlevels[channel-1],
 
                font=stdfont, anchor='e', padx=1, pady=0, bd=0, height=1)
 
                font=stdfont, anchor='w', padx=0, pady=0, bd=0, 
 
                height=1).pack(side='left')
 

	
 
            # current level of channel, shows intensity with color
 
            l = Label(f, 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')
 
        # channel_levels is an output - changelevel will use it to access these labels
 

	
 
        self.channel_levels = channel_levels
 
        # channel_levels is an output - changelevel will use it to access 
 
        # these labels
 

	
 
class Subpanels:
 
    def __init__(self, scenesparent, effectsparent, scalelevels, Subs, xfader,
light8/rsn.py
Show inline comments
 
@@ -38,60 +38,19 @@ get_data()
 

	
 
io.init(DUMMY)
 

	
 
channel_levels = []
 
scalelevels = {}
 
fades = {}
 

	
 
_oldlevels=[None] * 68
 

	
 
# this is called on a loop, and ALSO by the Scales
 
def changelevel(*args):
 
    'Amp trims slider'
 
    global _oldlevels
 

	
 
    levels = [0] * 68
 
    for name, s in Subs.subs.items():
 
        newlevels = s.get_levels(level=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 in zip(levels, channel_levels, _oldlevels):
 
        if lev != oldlev:
 
            lab.config(text="%d" % lev)
 
            colorlabel(lab)
 

	
 
    _oldlevels = levels[:]
 
class Lightboard:
 
    def __init__(self, master):
 
        self.master = master
 
        
 
    io.sendlevels(levels)
 

	
 
def backgroundloop(*args):
 
    root.after(50, backgroundloop, ())
 
    changelevel()
 

	
 
buildinterface = None # temporary
 
def refresh(*args):
 
    get_data()
 
    buildinterface()
 
    bindkeys(root,'<Escape>', quit)
 
        self.channel_levels = []
 
        self.scalelevels = {}
 
        self.oldlevels = [None] * 68
 

	
 
def quit(*args):
 
    filename = '/tmp/light9.prefs'
 
    if DUMMY:
 
        filename += '.dummy'
 
    print "Saving to", filename
 
    file = open(filename, 'w')
 
    cPickle.dump(Pickles(scalelevels), file)
 
    root.destroy()
 
    sys.exit()
 

	
 

	
 
xfader=Xfader(scalelevels)
 

	
 
def buildinterface(*args):
 
    global channel_levels, _oldlevels, leveldisplay, xfader
 
    for w in root.winfo_children():
 
        self.buildinterface()
 
        self.load()
 
        self.backgroundloop()
 
    def buildinterface(self):
 
        for w in self.master.winfo_children():
 
        w.destroy()
 

	
 
    stage_tl=toplevelat(165,90)
 
@@ -102,42 +61,60 @@ def buildinterface(*args):
 
    sub_tl = toplevelat(0,0)
 
    effect_tl = toplevelat(0,352)
 

	
 
    Subpanels(sub_tl,effect_tl,scalelevels,Subs,xfader,changelevel)
 
        self.xfader = Xfader(self.scalelevels)
 

	
 
    # def event_printer(evt):
 
        # print dir(evt)
 
        self.subpanels = Subpanels(sub_tl, effect_tl, self.scalelevels, Subs, 
 
            self.xfader, self.changelevel)
 

	
 
    # sub_tl.bind('<b>', event_printer)
 
    leveldisplay=toplevelat(873,400)
 
    leveldisplay.bind('<Escape>', sys.exit)
 
        leveldisplay_tl = toplevelat(873,400)
 
        leveldisplay_tl.bind('<Escape>', sys.exit)
 

	
 
    Leveldisplay(leveldisplay,_oldlevels,channel_levels)
 
        leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels)
 

	
 
    Console()
 

	
 
    # root frame
 
    controlpanel = Controlpanel(root,xfader,refresh,quit)
 
        controlpanel = Controlpanel(root, self.xfader, self.refresh, quit)
 
    
 
    xf=Frame(root)
 
    xf.pack(side='right')
 

	
 
    root.bind('<q>', quit)
 
    root.bind('<r>', refresh)
 
    leveldisplay.bind('<q>', quit)
 
    leveldisplay.bind('<r>', refresh)
 
        root.bind('<r>', self.refresh)
 
        leveldisplay_tl.bind('<q>', quit)
 
        leveldisplay_tl.bind('<r>', self.refresh)
 

	
 
    xfader.setupwidget(xf)
 
        self.xfader.setupwidget(xf)
 
    controlpanel.pack()
 

	
 
    def refresh(self, *args):
 
        'rebuild interface, reload data'
 
        get_data()
 
        self.buildinterface()
 
        bindkeys(root,'<Escape>', quit)
 

	
 
buildinterface()
 
    # this is called on a loop, and ALSO by the Scales
 
    def changelevel(self, *args):
 
        'Amp trims slider'
 

	
 
class Pickles:
 
    def __init__(self, scalelevels):
 
        self.scalelevels = dict([(name, lev.get()) 
 
            for name,lev in scalelevels.items()])
 
        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]
 

	
 
def load():
 
        for lev,lab,oldlev in zip(levels, self.channel_levels, self.oldlevels):
 
            if lev != oldlev:
 
                lab.config(text="%d" % lev)
 
                colorlabel(lab)
 

	
 
        self.oldlevels = levels[:]
 
            
 
        io.sendlevels(levels)
 

	
 
    def load(self):
 
    try:
 
        filename = '/tmp/light9.prefs'
 
        if DUMMY:
 
@@ -147,14 +124,13 @@ def load():
 
        p = cPickle.load(file)
 
        for s, v in p.scalelevels.items():
 
            try:
 
                scalelevels[s].set(v)
 
                    self.scalelevels[s].set(v)
 
            except:
 
                print "Couldn't set %s -> %s" % (s, v)
 
    except:
 
        print "Couldn't load prefs (%s)" % filename
 

	
 
def make_sub(name):
 
    global _oldlevels
 
    def make_sub(self, name):
 
    i = 1
 
    # name = console_entry.get() # read from console
 
    if not name:
 
@@ -163,7 +139,7 @@ def make_sub(name):
 

	
 
    st = ''
 
    linebuf = 'subs["%s"] = {' % name
 
    for l in _oldlevels:
 
        for l in self.oldlevels:
 
        if l:
 
            if len(linebuf) > 60: 
 
                st += linebuf + '\n   '
 
@@ -180,14 +156,31 @@ def make_sub(name):
 
    f.write(st)
 
    f.close()
 
    print 'Added sub:', st
 
    refresh()
 
        self.refresh()
 
    def backgroundloop(self, *args):
 
        self.master.after(50, self.backgroundloop, ())
 
        self.changelevel()
 
    def quit(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()
 

	
 
load()
 
signal(SIGINT, quit)
 
bindkeys(root,'<Escape>', quit)
 
class Pickles:
 
    def __init__(self, scalelevels):
 
        self.scalelevels = dict([(name, lev.get()) 
 
            for name,lev in scalelevels.items()])
 

	
 
mr_lightboard = Lightboard(root)
 

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

	
 
# bindkeys(root,'<q>', quit)
 
# bindkeys(root,'<r>', refresh)
 
# bindkeys(root,'<s>', make_sub)
 
backgroundloop()
 
root.mainloop() # Receiver switches main
light8/uihelpers.py
Show inline comments
 
@@ -7,13 +7,11 @@ def make_frame(parent):
 
    f.pack(side='left')
 
    return f
 

	
 

	
 
def bindkeys(root,key, func):
 
    root.bind(key, func)
 
    for w in root.winfo_children():
 
        w.bind(key, func)
 

	
 

	
 
def toplevelat(x,y,w=None,h=None):
 
    tl=Toplevel()
 
    if w and h:
 
@@ -22,7 +20,6 @@ def toplevelat(x,y,w=None,h=None):
 
        tl.wm_geometry("+%d+%d"%(x,y))
 
    return tl
 

	
 

	
 
def toggle_slider(s):
 
    if s.get() == 0:
 
        s.set(100)
 
@@ -33,7 +30,6 @@ def toggle_slider(s):
 
def printout(t):
 
    print t
 
    
 

	
 
def colorlabel(label):
 
    """color a label based on its own text"""
 
    txt=label['text'] or "0"
0 comments (0 inline, 0 general)