comparison light8/panels.py @ 53:032b2b67bc10

result of July 7th on-site editing
author dmcc
date Mon, 08 Jul 2002 14:31:20 +0000
parents 065896b0913c
children f177a2ff34f5
comparison
equal deleted inserted replaced
52:065896b0913c 53:032b2b67bc10
24 ('Clear Y', lambda: xfader.clearallbuttons('y'))): 24 ('Clear Y', lambda: xfader.clearallbuttons('y'))):
25 Button(controlpanel, text=txt, command=cmd).pack(side='top', 25 Button(controlpanel, text=txt, command=cmd).pack(side='top',
26 fill='x') 26 fill='x')
27 27
28 class Console: 28 class Console:
29 def __init__(self,refresh,currentlevels,configfilename): 29 def __init__(self,lightboard):
30 print "Light 8: Everything's under control" 30 print "Light 8: Everything's under control"
31 t=toplevelat(267,717,w=599,h=19) 31 t=toplevelat(267,717,w=599,h=19)
32 self.frame = Frame(t) 32 self.frame = Frame(t)
33 self.entry=Entry(self.frame) 33 self.entry=Entry(self.frame)
34 self.entry.pack(expand=1, fill='x') 34 self.entry.pack(expand=1, fill='x')
35 self.entry.bind('<Return>', 35 self.entry.bind('<Return>',
36 lambda evt: self.execute(evt, self.entry.get())) 36 lambda evt: self.execute(evt, self.entry.get()))
37 self.frame.pack(fill=BOTH, expand=1) 37 self.frame.pack(fill=BOTH, expand=1)
38 self.refreshcmd=refresh 38 self.lightboard=lightboard
39 self.currentlevels=currentlevels
40 self.configfilename=configfilename
41 39
42 def execute(self, evt, str): 40 def execute(self, evt, str):
43 if str[0] == '*': # make a new sub 41 if str[0] == '*': # make a new sub from the current levels
44 self.make_sub(str) 42 self.lightboard.save_sub(str,self.lightboard.stageassub())
45 else: 43 else:
46 print '>>>', str 44 print '>>>', str
47 print eval(str) 45 print eval(str)
48 self.frame.focus() 46 self.frame.focus()
49
50 def make_sub(self, name):
51 i = 1
52 if not name:
53 print "Enter sub name in console."
54 return
55
56 st = ''
57 linebuf = 'subs["%s"] = {' % name
58 for l in self.currentlevels:
59 if l:
60 if len(linebuf) > 60:
61 st += linebuf + '\n '
62 linebuf = ''
63
64 linebuf += ' "%s" : %d,' % (Patch.get_channel_name(i), l)
65 i += 1
66 st += linebuf + '}\n'
67 f = open(self.configfilename, 'a')
68 f.write(st)
69 f.close()
70 print 'Added sub:', st
71 self.refreshcmd()
72 47
73 class Leveldisplay: 48 class Leveldisplay:
74 def __init__(self, parent, channel_levels, num_channels=68): 49 def __init__(self, parent, channel_levels, num_channels=68):
75 frames = (make_frame(parent), make_frame(parent)) 50 frames = (make_frame(parent), make_frame(parent))
76 channel_levels[:]=[] 51 channel_levels[:]=[]
101 self.channel_levels = channel_levels 76 self.channel_levels = channel_levels
102 # channel_levels is an output - changelevel will use it to access 77 # channel_levels is an output - changelevel will use it to access
103 # these labels 78 # these labels
104 79
105 class Subpanels: 80 class Subpanels:
106 def __init__(self, scenesparent, effectsparent, scalelevels, Subs, xfader, 81 def __init__(self, scenesparent, effectsparent, lightboard,
107 changelevel, subediting, longestname): 82 scalelevels, Subs, xfader,
83 changelevel, subediting, longestname):
108 84
109 sublist = Subs.subs.items() 85 sublist = Subs.subs.items()
110 sublist.sort() 86 sublist.sort()
111 87
112 for name, sub in sublist: 88 for name, sub in sublist:
130 106
131 # make frame that surrounds the whole submaster 107 # make frame that surrounds the whole submaster
132 f=Frame(parent, bd=1, relief='raised') 108 f=Frame(parent, bd=1, relief='raised')
133 f.pack(fill='both',exp=1,side=side2) 109 f.pack(fill='both',exp=1,side=side2)
134 110
135 # make DoubleVar (there might be one left around from before a refresh) 111 # make DoubleVar (there might be one left around from
112 # before a refresh)
136 if name not in scalelevels: 113 if name not in scalelevels:
137 scalelevels[name]=DoubleVar() 114 scalelevels[name]=DoubleVar()
138 115
139 sub.set_slider_var(scalelevels[name]) 116 sub.set_slider_var(scalelevels[name])
140 117
141 scaleopts = {} 118 scaleopts = {'troughcolor' : 'grey70'}
142 if sub.color: 119 if sub.color:
143 scaleopts['troughcolor'] = sub.color 120 scaleopts['troughcolor'] = sub.color
144 121
145 s = FlyingFader(f, label=str(name), variable=scalelevels[name], 122 s = FlyingFader(f, label=str(name), variable=scalelevels[name],
146 showvalue=0, length=300-17, 123 showvalue=0, length=300-17,
147 width=18, sliderlength=18, 124 width=14, sliderlength=14,
148 to=end1,res=.001,from_=end2,bd=0, font=stdfont, 125 to=end1,res=.001,from_=end2,bd=1, font=stdfont,
149 orient=orient1, 126 orient=orient1,
150 labelwidth=width1, 127 labelwidth=width1,
151 **scaleopts) 128 **scaleopts)
152 129
130 # tell subediting what widget to highlight when it's
131 # editing a sub
132 for w in (s,s.label,s.vlabel, s.scale):
133 subediting.register(subname=name,widget=w)
134
153 if not sub.is_effect: 135 if not sub.is_effect:
154 eb = Togglebutton(f,text="Edit",font=stdfont,padx=0,pady=0,bd=1, 136 self.subeditingbuttons(f,side1,sub,name,lightboard,subediting)
155 command=lambda: subediting.setsub(sub))
156 eb.pack(side=side1,fill='both',padx=0,pady=0)
157 137
158 for axis in ('y','x'): 138 self.axisbuttons(f,s,xfader,stdfont,side1,name)
159 cvar=IntVar()
160 eb_color = ('red', 'green')[axis == 'y']
161 cb=Togglebutton(f,text=axis.upper(),variable=cvar,font=stdfont,
162 padx=0, pady=0, bd=1, downcolor=eb_color)
163 cb.pack(side=side1,fill='both', padx=0, pady=0)
164 s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
165 xfader.registerbutton(name,axis,cvar)
166 139
167 s.pack(side='left', fill=BOTH) 140 s.pack(side='left', fill=BOTH)
168 141
169 # effects frame? 142 # effects frame?
170 sframe = Frame(f,bd=2,relief='groove') 143 sframe = Frame(f,bd=2,relief='groove')
171 sub.draw_tk(sframe) 144 sub.draw_tk(sframe)
172 sframe.pack(side='left',fill='y') 145 sframe.pack(side='left',fill='y')
146
147 def subediting_edit(self,subediting,sub):
148 subediting.setsub(sub)
149
150 def subediting_save(self,name,sub,lightboard):
151 lightboard.save_sub(name,sub.getlevels())
152
153 def subeditingbuttons(self,f,side1,sub,name,lightboard,subediting):
154 for txt,cmd in (("Edit",lambda subediting=subediting,sub=sub: self.subediting_edit(subediting,sub)),
155 ("Save",lambda sub=sub,name=name,lightboard=lightboard: self.subediting_save(name,sub,lightboard))):
156 eb = Button(f,text=txt,font=stdfont,padx=0,pady=0,
157 bd=1,command=cmd)
158 eb.pack(side=side1,fill='both',padx=0,pady=0)
159
160 def axisbuttons(self,f,s,xfader,stdfont,side1,name):
161 for axis in ('y','x'):
162 cvar=IntVar()
163 eb_color = ('red', 'green')[axis == 'y']
164 cb=Togglebutton(f,text=axis.upper(),variable=cvar,font=stdfont,
165 padx=3, pady=0, bd=1, downcolor=eb_color)
166 cb.pack(side=side1,fill='both', padx=0, pady=0)
167 s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
168 xfader.registerbutton(name,axis,cvar)
169
170