annotate light8/panels.py @ 0:45b12307c695

Initial revision
author drewp
date Wed, 03 Jul 2002 09:37:57 +0000
parents
children 7adc65771676
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
1 """some of the panels"""
45b12307c695 Initial revision
drewp
parents:
diff changeset
2 from __future__ import nested_scopes
45b12307c695 Initial revision
drewp
parents:
diff changeset
3
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 from Tix import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
5 from uihelpers import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 import Patch
45b12307c695 Initial revision
drewp
parents:
diff changeset
7 from FlyingFader import FlyingFader
45b12307c695 Initial revision
drewp
parents:
diff changeset
8
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 stdfont = ('Arial', 8)
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 monofont = ('Courier', 8)
45b12307c695 Initial revision
drewp
parents:
diff changeset
11
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 class Controlpanel(Frame):
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 def __init__(self, parent, xfader, refresh_cb, quit_cb, jostle_cb,
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 whatsup_cb=None):
45b12307c695 Initial revision
drewp
parents:
diff changeset
15 Frame.__init__(self,parent, bg='black')
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 controlpanel = self
45b12307c695 Initial revision
drewp
parents:
diff changeset
17 for txt,cmd in (
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 ('Quit', quit_cb),
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 ('Refresh', refresh_cb),
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 ('Clear all', xfader.clearallbuttons),
45b12307c695 Initial revision
drewp
parents:
diff changeset
21 ('On -> X', lambda: xfader.grab('x')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
22 ('Clear X', lambda: xfader.clearallbuttons('x')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 ('On -> Y', lambda: xfader.grab('y')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
24 ('Clear Y', lambda: xfader.clearallbuttons('y')),
45b12307c695 Initial revision
drewp
parents:
diff changeset
25 ("What's up?", whatsup_cb)):
45b12307c695 Initial revision
drewp
parents:
diff changeset
26 Button(controlpanel, text=txt, command=cmd, bg='black',
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 fg='white',font=stdfont, padx=0, pady=0).pack(side='top', fill='x')
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 # jostle button
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 Checkbutton(controlpanel, text="Jostle", bg='black', fg='white',
45b12307c695 Initial revision
drewp
parents:
diff changeset
30 command=jostle_cb).pack(side=TOP, fill=X)
45b12307c695 Initial revision
drewp
parents:
diff changeset
31
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 class Console:
45b12307c695 Initial revision
drewp
parents:
diff changeset
33 def __init__(self,lightboard):
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 t=toplevelat('console')
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 self.frame = Frame(t, bg='black')
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 self.entry=Entry(self.frame, bg='black', fg='white')
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 self.entry.pack(expand=1, fill='x')
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 self.entry.bind('<Return>',
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 lambda evt: self.execute(evt, self.entry.get()))
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 self.frame.pack(fill=BOTH, expand=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
41 self.lightboard=lightboard
45b12307c695 Initial revision
drewp
parents:
diff changeset
42
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 def execute(self, evt, str):
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 if str[0] == '*': # make a new sub from the current levels
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 self.lightboard.save_sub(str,self.lightboard.stageassub())
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 print '>>>', str
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 print eval(str)
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 self.frame.focus()
45b12307c695 Initial revision
drewp
parents:
diff changeset
50
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 class Leveldisplay:
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 def __init__(self, parent, channel_levels, num_channels=68):
45b12307c695 Initial revision
drewp
parents:
diff changeset
53 frames = (make_frame(parent), make_frame(parent))
45b12307c695 Initial revision
drewp
parents:
diff changeset
54 channel_levels[:]=[]
45b12307c695 Initial revision
drewp
parents:
diff changeset
55 self.number_labels = []
45b12307c695 Initial revision
drewp
parents:
diff changeset
56 for channel in range(1, num_channels+1):
45b12307c695 Initial revision
drewp
parents:
diff changeset
57
45b12307c695 Initial revision
drewp
parents:
diff changeset
58 # frame for this channel
45b12307c695 Initial revision
drewp
parents:
diff changeset
59 f = Frame(frames[channel > (num_channels/2)])
45b12307c695 Initial revision
drewp
parents:
diff changeset
60 # channel number -- will turn yellow when being altered
45b12307c695 Initial revision
drewp
parents:
diff changeset
61 num_lab = Label(f, text=str(channel), width=3, bg='grey40',
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 fg='white', font=stdfont, padx=0, pady=0, bd=0, height=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 num_lab.pack(side='left')
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 self.number_labels.append(num_lab)
45b12307c695 Initial revision
drewp
parents:
diff changeset
65
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 # text description of channel
45b12307c695 Initial revision
drewp
parents:
diff changeset
67 Label(f, text=Patch.get_channel_name(channel), width=8,
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 font=stdfont, anchor='w', padx=0, pady=0, bd=0,
45b12307c695 Initial revision
drewp
parents:
diff changeset
69 height=1, bg='black', fg='white').pack(side='left')
45b12307c695 Initial revision
drewp
parents:
diff changeset
70
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 # current level of channel, shows intensity with color
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 l = Label(f, width=3, bg='lightBlue', font=stdfont, anchor='e',
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 padx=1, pady=0, bd=0, height=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 l.pack(side='left')
45b12307c695 Initial revision
drewp
parents:
diff changeset
75 colorlabel(l)
45b12307c695 Initial revision
drewp
parents:
diff changeset
76 channel_levels.append(l)
45b12307c695 Initial revision
drewp
parents:
diff changeset
77 f.pack(side='top')
45b12307c695 Initial revision
drewp
parents:
diff changeset
78
45b12307c695 Initial revision
drewp
parents:
diff changeset
79 self.channel_levels = channel_levels
45b12307c695 Initial revision
drewp
parents:
diff changeset
80 # channel_levels is an output - changelevel will use it to access
45b12307c695 Initial revision
drewp
parents:
diff changeset
81 # these labels
45b12307c695 Initial revision
drewp
parents:
diff changeset
82
45b12307c695 Initial revision
drewp
parents:
diff changeset
83 class Subpanels:
45b12307c695 Initial revision
drewp
parents:
diff changeset
84 def __init__(self, scenesparent, effectsparent, scenes, lightboard,
45b12307c695 Initial revision
drewp
parents:
diff changeset
85 scalelevels, Subs, xfader,
45b12307c695 Initial revision
drewp
parents:
diff changeset
86 changelevel, subediting, longestname):
45b12307c695 Initial revision
drewp
parents:
diff changeset
87
45b12307c695 Initial revision
drewp
parents:
diff changeset
88 sublist = Subs.subs.items()
45b12307c695 Initial revision
drewp
parents:
diff changeset
89 sublist.sort()
45b12307c695 Initial revision
drewp
parents:
diff changeset
90
45b12307c695 Initial revision
drewp
parents:
diff changeset
91 for p in scenesparent,effectsparent,scenes:
45b12307c695 Initial revision
drewp
parents:
diff changeset
92 sw = ScrolledWindow(p, bg='black')
45b12307c695 Initial revision
drewp
parents:
diff changeset
93 for but,units in ( (4,-4),(5,4) ):
45b12307c695 Initial revision
drewp
parents:
diff changeset
94 sw.window.bind("<ButtonPress-%s>"%but,lambda ev,s=sw.vsb,u=units: s.tk.call('tkScrollByUnits',s,'hv',u))
45b12307c695 Initial revision
drewp
parents:
diff changeset
95
45b12307c695 Initial revision
drewp
parents:
diff changeset
96 sw.pack(expand=1,fill=BOTH)
45b12307c695 Initial revision
drewp
parents:
diff changeset
97 if p==scenesparent:
45b12307c695 Initial revision
drewp
parents:
diff changeset
98 scenesparent = sw.window
45b12307c695 Initial revision
drewp
parents:
diff changeset
99 elif p==effectsparent:
45b12307c695 Initial revision
drewp
parents:
diff changeset
100 effectsparent = sw.window
45b12307c695 Initial revision
drewp
parents:
diff changeset
101 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
102 scenes=sw.window
45b12307c695 Initial revision
drewp
parents:
diff changeset
103
45b12307c695 Initial revision
drewp
parents:
diff changeset
104 for name, sub in sublist:
45b12307c695 Initial revision
drewp
parents:
diff changeset
105 # choose one of the sub panels to add to
45b12307c695 Initial revision
drewp
parents:
diff changeset
106 if sub.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
107 parent=effectsparent
45b12307c695 Initial revision
drewp
parents:
diff changeset
108 side1='bottom'
45b12307c695 Initial revision
drewp
parents:
diff changeset
109 side2='left'
45b12307c695 Initial revision
drewp
parents:
diff changeset
110 orient1='vert'
45b12307c695 Initial revision
drewp
parents:
diff changeset
111 end1=0
45b12307c695 Initial revision
drewp
parents:
diff changeset
112 end2=1
45b12307c695 Initial revision
drewp
parents:
diff changeset
113 width1=len(name)
45b12307c695 Initial revision
drewp
parents:
diff changeset
114 elif name.startswith("*") and name[1].isdigit():
45b12307c695 Initial revision
drewp
parents:
diff changeset
115 parent=scenes
45b12307c695 Initial revision
drewp
parents:
diff changeset
116 side1='right'
45b12307c695 Initial revision
drewp
parents:
diff changeset
117 side2='top'
45b12307c695 Initial revision
drewp
parents:
diff changeset
118 orient1='horiz'
45b12307c695 Initial revision
drewp
parents:
diff changeset
119 end1=1
45b12307c695 Initial revision
drewp
parents:
diff changeset
120 end2=0
45b12307c695 Initial revision
drewp
parents:
diff changeset
121 width1=longestname
45b12307c695 Initial revision
drewp
parents:
diff changeset
122 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
123 parent=scenesparent
45b12307c695 Initial revision
drewp
parents:
diff changeset
124 side1='right'
45b12307c695 Initial revision
drewp
parents:
diff changeset
125 side2='top'
45b12307c695 Initial revision
drewp
parents:
diff changeset
126 orient1='horiz'
45b12307c695 Initial revision
drewp
parents:
diff changeset
127 end1=1
45b12307c695 Initial revision
drewp
parents:
diff changeset
128 end2=0
45b12307c695 Initial revision
drewp
parents:
diff changeset
129 width1=longestname
45b12307c695 Initial revision
drewp
parents:
diff changeset
130
45b12307c695 Initial revision
drewp
parents:
diff changeset
131 # make frame that surrounds the whole submaster
45b12307c695 Initial revision
drewp
parents:
diff changeset
132 f=Frame(parent, bd=1, relief='raised', bg='black')
45b12307c695 Initial revision
drewp
parents:
diff changeset
133 f.pack(fill='both',exp=1,side=side2)
45b12307c695 Initial revision
drewp
parents:
diff changeset
134
45b12307c695 Initial revision
drewp
parents:
diff changeset
135
45b12307c695 Initial revision
drewp
parents:
diff changeset
136 # make DoubleVar (there might be one left around from
45b12307c695 Initial revision
drewp
parents:
diff changeset
137 # before a refresh)
45b12307c695 Initial revision
drewp
parents:
diff changeset
138 if name not in scalelevels:
45b12307c695 Initial revision
drewp
parents:
diff changeset
139 # scalelevels[name]=FancyDoubleVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
140 scalelevels[name]=DoubleVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
141
45b12307c695 Initial revision
drewp
parents:
diff changeset
142 sub.set_slider_var(scalelevels[name])
45b12307c695 Initial revision
drewp
parents:
diff changeset
143
45b12307c695 Initial revision
drewp
parents:
diff changeset
144 scaleopts = {'troughcolor' : 'grey70'}
45b12307c695 Initial revision
drewp
parents:
diff changeset
145 if sub.color:
45b12307c695 Initial revision
drewp
parents:
diff changeset
146 scaleopts['troughcolor'] = sub.color
45b12307c695 Initial revision
drewp
parents:
diff changeset
147
45b12307c695 Initial revision
drewp
parents:
diff changeset
148 s = FlyingFader(f, label=str(name), variable=scalelevels[name],
45b12307c695 Initial revision
drewp
parents:
diff changeset
149 showvalue=0, length=100,
45b12307c695 Initial revision
drewp
parents:
diff changeset
150 width=14, sliderlength=14,
45b12307c695 Initial revision
drewp
parents:
diff changeset
151 to=end1,res=.001,from_=end2,bd=1, font=stdfont,
45b12307c695 Initial revision
drewp
parents:
diff changeset
152 orient=orient1,
45b12307c695 Initial revision
drewp
parents:
diff changeset
153 labelwidth=width1,
45b12307c695 Initial revision
drewp
parents:
diff changeset
154 **scaleopts)
45b12307c695 Initial revision
drewp
parents:
diff changeset
155 s.configure(bg='black')
45b12307c695 Initial revision
drewp
parents:
diff changeset
156 s.label.configure(bg='black', fg='white')
45b12307c695 Initial revision
drewp
parents:
diff changeset
157 s.vlabel.configure(bg='black', fg='white')
45b12307c695 Initial revision
drewp
parents:
diff changeset
158 s.scale.configure(bg='black', fg='white')
45b12307c695 Initial revision
drewp
parents:
diff changeset
159
45b12307c695 Initial revision
drewp
parents:
diff changeset
160 # tell subediting what widgets to highlight when it's
45b12307c695 Initial revision
drewp
parents:
diff changeset
161 # editing a sub
45b12307c695 Initial revision
drewp
parents:
diff changeset
162 for w in (s,s.label,s.vlabel, s.scale):
45b12307c695 Initial revision
drewp
parents:
diff changeset
163 subediting.register(subname=name,widget=w)
45b12307c695 Initial revision
drewp
parents:
diff changeset
164
45b12307c695 Initial revision
drewp
parents:
diff changeset
165 if not sub.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
166 self.subeditingbuttons(f,side1,sub,name,lightboard,subediting)
45b12307c695 Initial revision
drewp
parents:
diff changeset
167
45b12307c695 Initial revision
drewp
parents:
diff changeset
168 self.axisbuttons(f,s,xfader,stdfont,side1,name)
45b12307c695 Initial revision
drewp
parents:
diff changeset
169
45b12307c695 Initial revision
drewp
parents:
diff changeset
170 s.pack(side='left', fill=BOTH, expand=1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
171
45b12307c695 Initial revision
drewp
parents:
diff changeset
172 # effects frame?
45b12307c695 Initial revision
drewp
parents:
diff changeset
173 sframe = Frame(f,bd=2,relief='groove')
45b12307c695 Initial revision
drewp
parents:
diff changeset
174 sub.draw_tk(sframe)
45b12307c695 Initial revision
drewp
parents:
diff changeset
175 sframe.pack(side='left',fill='y')
45b12307c695 Initial revision
drewp
parents:
diff changeset
176
45b12307c695 Initial revision
drewp
parents:
diff changeset
177 def subediting_edit(self,subediting,sub):
45b12307c695 Initial revision
drewp
parents:
diff changeset
178 subediting.setsub(sub)
45b12307c695 Initial revision
drewp
parents:
diff changeset
179
45b12307c695 Initial revision
drewp
parents:
diff changeset
180 def subediting_save(self,name,sub,lightboard):
45b12307c695 Initial revision
drewp
parents:
diff changeset
181 lightboard.save_sub(name,sub.getlevels(),refresh=0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
182
45b12307c695 Initial revision
drewp
parents:
diff changeset
183 def subeditingbuttons(self,f,side1,sub,name,lightboard,subediting):
45b12307c695 Initial revision
drewp
parents:
diff changeset
184 for txt,cmd in (("Edit",lambda subediting=subediting,sub=sub: self.subediting_edit(subediting,sub)),
45b12307c695 Initial revision
drewp
parents:
diff changeset
185 ("Save",lambda sub=sub,name=name,lightboard=lightboard: self.subediting_save(name,sub,lightboard)),
45b12307c695 Initial revision
drewp
parents:
diff changeset
186 ("SaveStg",lambda l=lightboard,name=name: l.save_sub(name,l.stageassub(),refresh=1)),
45b12307c695 Initial revision
drewp
parents:
diff changeset
187 ):
45b12307c695 Initial revision
drewp
parents:
diff changeset
188 eb = Button(f,text=txt,font=stdfont,padx=0,pady=0,
45b12307c695 Initial revision
drewp
parents:
diff changeset
189 bd=1,command=cmd, bg='black', fg='white')
45b12307c695 Initial revision
drewp
parents:
diff changeset
190 eb.pack(side=side1,fill='both',padx=0,pady=0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
191
45b12307c695 Initial revision
drewp
parents:
diff changeset
192 def axisbuttons(self,f,s,xfader,stdfont,side1,name):
45b12307c695 Initial revision
drewp
parents:
diff changeset
193 for axis in ('y','x'):
45b12307c695 Initial revision
drewp
parents:
diff changeset
194 cvar=IntVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
195 eb_color = ('red', 'green')[axis == 'y']
45b12307c695 Initial revision
drewp
parents:
diff changeset
196 cb=Togglebutton(f,text=axis.upper(),variable=cvar,font=stdfont,
45b12307c695 Initial revision
drewp
parents:
diff changeset
197 padx=3, pady=0, bd=1, downcolor=eb_color,
45b12307c695 Initial revision
drewp
parents:
diff changeset
198 bg='black', fg='white')
45b12307c695 Initial revision
drewp
parents:
diff changeset
199 cb.pack(side=side1,fill='both', padx=0, pady=0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
200 s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
45b12307c695 Initial revision
drewp
parents:
diff changeset
201 xfader.registerbutton(name,axis,cvar)