diff --git a/light8/panels.py b/light8/panels.py --- a/light8/panels.py +++ b/light8/panels.py @@ -1,4 +1,5 @@ """some of the panels""" +from __future__ import nested_scopes from Tkinter import * from uihelpers import * @@ -25,24 +26,50 @@ class Controlpanel(Frame): fill='x') class Console: - def __init__(self): + def __init__(self,refresh,currentlevels,configfilename): print "Light 8: Everything's under control" t=toplevelat(267,717,w=599,h=19) self.frame = Frame(t) self.entry=Entry(self.frame) self.entry.pack(expand=1, fill='x') - self.entry.bind('', lambda evt: self.execute(evt, - self.entry.get())) + self.entry.bind('', + lambda evt: self.execute(evt, self.entry.get())) self.frame.pack(fill=BOTH, expand=1) + self.refreshcmd=refresh + self.currentlevels=currentlevels + self.configfilename=configfilename - def execute(evt, str): + def execute(self, evt, str): if str[0] == '*': # make a new sub - make_sub(str) + self.make_sub(str) else: print '>>>', str print eval(str) self.frame.focus() + def make_sub(self, name): + i = 1 + if not name: + print "Enter sub name in console." + return + + st = '' + linebuf = 'subs["%s"] = {' % name + for l in self.currentlevels: + if l: + if len(linebuf) > 60: + st += linebuf + '\n ' + linebuf = '' + + linebuf += ' "%s" : %d,' % (Patch.get_channel_name(i), l) + i += 1 + st += linebuf + '}\n' + f = open(self.configfilename, 'a') + f.write(st) + f.close() + print 'Added sub:', st + self.refreshcmd() + class Leveldisplay: def __init__(self, parent, channel_levels, num_channels=68): frames = (make_frame(parent), make_frame(parent)) @@ -87,6 +114,7 @@ class Subpanels: if sub.is_effect: parent=effectsparent side1='bottom' + side2='left' orient1='vert' end1=0 end2=1 @@ -94,6 +122,7 @@ class Subpanels: else: parent=scenesparent side1='right' + side2='top' orient1='horiz' end1=1 end2=0 @@ -101,7 +130,7 @@ class Subpanels: # make frame that surrounds the whole submaster f=Frame(parent, bd=1, relief='raised') - f.pack(fill='both',exp=1,side=('top','left')[sub.is_effect]) + f.pack(fill='both',exp=1,side=side2) # make DoubleVar (there might be one left around from before a refresh) if name not in scalelevels: @@ -122,7 +151,8 @@ class Subpanels: **scaleopts) if not sub.is_effect: - eb = Button(f,text="E",font=stdfont,padx=0,pady=0,bd=1,command=lambda subediting=subediting,sub=sub: subediting.setsub(sub)) + eb = Togglebutton(f,text="Edit",font=stdfont,padx=0,pady=0,bd=1, + command=lambda: subediting.setsub(sub)) eb.pack(side=side1,fill='both',padx=0,pady=0) for axis in ('y','x'): diff --git a/light8/rsn.py b/light8/rsn.py --- a/light8/rsn.py +++ b/light8/rsn.py @@ -46,7 +46,7 @@ class Lightboard: 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 + self.oldlevels = [None] * 68 # never replace this; just clear it self.subediting = Subediting(currentoutputlevels=self.oldlevels) self.buildinterface() @@ -54,6 +54,7 @@ class Lightboard: self.backgroundloop() def buildinterface(self): + global DUMMY for w in self.master.winfo_children(): w.destroy() @@ -74,7 +75,11 @@ class Lightboard: self.leveldisplay = Leveldisplay(leveldisplay_tl, self.channel_levels) - Console() + if DUMMY: + filename = 'ConfigDummy.py' + else: + filename = 'Config.py' + Console(self.refresh,currentlevels=self.oldlevels,configfilename=filename) # root frame controlpanel = Controlpanel(root, self.xfader, self.refresh, self.quit) @@ -149,32 +154,7 @@ class Lightboard: print "EOFrror: Couldn't load prefs (%s)" % filename except: print "BigTrouble: Couldn't load prefs (%s)" % filename - def make_sub(self, name): - i = 1 - if not name: - print "Enter sub name in console." - return - st = '' - linebuf = 'subs["%s"] = {' % name - for l in self.oldlevels: - if l: - if len(linebuf) > 60: - st += linebuf + '\n ' - linebuf = '' - - linebuf += ' "%s" : %d,' % (Patch.get_channel_name(i), l) - i += 1 - 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() def backgroundloop(self, *args): self.master.after(50, self.backgroundloop, ()) self.changelevel()