annotate light8/panels.py @ 60:f177a2ff34f5

scrolled sub panels
author drewp
date Tue, 09 Jul 2002 07:36:45 +0000
parents 032b2b67bc10
children 2508c6b7a4e0
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"""
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
2 from __future__ import nested_scopes
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
3
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 48
diff changeset
4 from Tix import *
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
5 from uihelpers import *
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 import Patch
19
6284a812da50 makefile - add link to ../Widgets/FlyingFader.py
dmcc
parents: 16
diff changeset
7 from FlyingFader import FlyingFader
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
8 import Pmw
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
9
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 stdfont = ('Arial', 8)
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 monofont = ('Courier', 8)
45b12307c695 Initial revision
drewp
parents:
diff changeset
12
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 class Controlpanel(Frame):
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
14 def __init__(self, parent, xfader, refresh_cb, quit_cb):
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
15 Frame.__init__(self,parent)
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
16 controlpanel = self
0
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')),
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
24 ('Clear Y', lambda: xfader.clearallbuttons('y'))):
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
25 Button(controlpanel, text=txt, command=cmd).pack(side='top',
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
26 fill='x')
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
27
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 class Console:
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
29 def __init__(self,lightboard):
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
30 print "Light 8: Everything's under control"
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
31 t=toplevelat(267,717,w=599,h=19)
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
32 self.frame = Frame(t)
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
33 self.entry=Entry(self.frame)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 self.entry.pack(expand=1, fill='x')
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
35 self.entry.bind('<Return>',
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
36 lambda evt: self.execute(evt, self.entry.get()))
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 self.frame.pack(fill=BOTH, expand=1)
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
38 self.lightboard=lightboard
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
39
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
40 def execute(self, evt, str):
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
41 if str[0] == '*': # make a new sub from the current levels
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
42 self.lightboard.save_sub(str,self.lightboard.stageassub())
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 print '>>>', str
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 print eval(str)
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
46 self.frame.focus()
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
47
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
48 class Leveldisplay:
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
49 def __init__(self, parent, channel_levels, num_channels=68):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 frames = (make_frame(parent), make_frame(parent))
16
7dbe8067acea fixed bug with channel levels not displaying
drewp
parents: 12
diff changeset
51 channel_levels[:]=[]
34
411de8b46aef the famous you-are-in-the-process-of-changing-this-light indicator.
dmcc
parents: 32
diff changeset
52 self.number_labels = []
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
53 for channel in range(1, num_channels+1):
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
54
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
55 # frame for this channel
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
56 f = Frame(frames[channel > (num_channels/2)])
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
57 # channel number -- will turn yellow when being altered
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
58 num_lab = Label(f, text=str(channel), width=3, bg='lightPink',
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
59 font=stdfont, padx=0, pady=0, bd=0, height=1)
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
60 num_lab.pack(side='left')
34
411de8b46aef the famous you-are-in-the-process-of-changing-this-light indicator.
dmcc
parents: 32
diff changeset
61 self.number_labels.append(num_lab)
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
62
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
63 # text description of channel
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
64 Label(f, text=Patch.get_channel_name(channel), width=8,
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
65 font=stdfont, anchor='w', padx=0, pady=0, bd=0,
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
66 height=1).pack(side='left')
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
67
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
68 # current level of channel, shows intensity with color
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
69 l = Label(f, width=3, bg='lightBlue', font=stdfont, anchor='e',
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
70 padx=1, pady=0, bd=0, height=1)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 l.pack(side='left')
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 colorlabel(l)
45b12307c695 Initial revision
drewp
parents:
diff changeset
73 channel_levels.append(l)
45b12307c695 Initial revision
drewp
parents:
diff changeset
74 f.pack(side='top')
26
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
75
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
76 self.channel_levels = channel_levels
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
77 # channel_levels is an output - changelevel will use it to access
219d6fcbc28d Reclassification, minor cleanups
dmcc
parents: 23
diff changeset
78 # these labels
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
79
45b12307c695 Initial revision
drewp
parents:
diff changeset
80 class Subpanels:
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
81 def __init__(self, scenesparent, effectsparent, lightboard,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
82 scalelevels, Subs, xfader,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
83 changelevel, subediting, longestname):
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
84
45b12307c695 Initial revision
drewp
parents:
diff changeset
85 sublist = Subs.subs.items()
45b12307c695 Initial revision
drewp
parents:
diff changeset
86 sublist.sort()
45b12307c695 Initial revision
drewp
parents:
diff changeset
87
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
88 for p in scenesparent,effectsparent:
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
89 sw = ScrolledWindow(p)
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
90 sw.window.bind("<ButtonPress-4>",lambda s=sw.vsb: scrollscrolledwindow(s,-1))
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
91 sw.window.bind("<ButtonPress-5>",lambda s=sw.vsb: scrollscrolledwindow(s,1))
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
92 sw.pack(expand=1,fill=BOTH)
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
93 if p==scenesparent:
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
94 scenesparent = sw.window
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
95 else:
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
96 effectsparent = sw.window
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
97
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
98 for name, sub in sublist:
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
99 # choose one of the sub panels to add to
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
100 if sub.is_effect:
45b12307c695 Initial revision
drewp
parents:
diff changeset
101 parent=effectsparent
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
102 side1='bottom'
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
103 side2='left'
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
104 orient1='vert'
32
925382e7cdc8 fixed small bug with orientable
drewp
parents: 30
diff changeset
105 end1=0
925382e7cdc8 fixed small bug with orientable
drewp
parents: 30
diff changeset
106 end2=1
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
107 width1=len(name)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
108 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
109 parent=scenesparent
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
110 side1='right'
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
111 side2='top'
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
112 orient1='horiz'
32
925382e7cdc8 fixed small bug with orientable
drewp
parents: 30
diff changeset
113 end1=1
925382e7cdc8 fixed small bug with orientable
drewp
parents: 30
diff changeset
114 end2=0
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
115 width1=longestname
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
116
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
117 # make frame that surrounds the whole submaster
12
7adc65771676 big restructuring - moved lots of things (including most panels) to other files
drewp
parents: 0
diff changeset
118 f=Frame(parent, bd=1, relief='raised')
48
2ef72bb3a707 finished the re-class of Console so it can make new subs again
drewp
parents: 43
diff changeset
119 f.pack(fill='both',exp=1,side=side2)
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
120
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
121
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
122 # make DoubleVar (there might be one left around from
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
123 # before a refresh)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
124 if name not in scalelevels:
45b12307c695 Initial revision
drewp
parents:
diff changeset
125 scalelevels[name]=DoubleVar()
45b12307c695 Initial revision
drewp
parents:
diff changeset
126
45b12307c695 Initial revision
drewp
parents:
diff changeset
127 sub.set_slider_var(scalelevels[name])
45b12307c695 Initial revision
drewp
parents:
diff changeset
128
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
129 scaleopts = {'troughcolor' : 'grey70'}
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
130 if sub.color:
45b12307c695 Initial revision
drewp
parents:
diff changeset
131 scaleopts['troughcolor'] = sub.color
19
6284a812da50 makefile - add link to ../Widgets/FlyingFader.py
dmcc
parents: 16
diff changeset
132
6284a812da50 makefile - add link to ../Widgets/FlyingFader.py
dmcc
parents: 16
diff changeset
133 s = FlyingFader(f, label=str(name), variable=scalelevels[name],
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
134 showvalue=0, length=100,
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
135 width=14, sliderlength=14,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
136 to=end1,res=.001,from_=end2,bd=1, font=stdfont,
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
137 orient=orient1,
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
138 labelwidth=width1,
30
e9d2e7754fd9 sideways subs, new x/y buttons (which don't draw right, but they work)
drewp
parents: 26
diff changeset
139 **scaleopts)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
140
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
141 # tell subediting what widgets to highlight when it's
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
142 # editing a sub
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
143 for w in (s,s.label,s.vlabel, s.scale):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
144 subediting.register(subname=name,widget=w)
38
0ce56c4dd355 small ui enhancements
drewp
parents: 34
diff changeset
145
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
146 if not sub.is_effect:
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
147 self.subeditingbuttons(f,side1,sub,name,lightboard,subediting)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
148
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
149 self.axisbuttons(f,s,xfader,stdfont,side1,name)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
150
60
f177a2ff34f5 scrolled sub panels
drewp
parents: 53
diff changeset
151 s.pack(side='left', fill=BOTH, expand=1)
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
152
45b12307c695 Initial revision
drewp
parents:
diff changeset
153 # effects frame?
45b12307c695 Initial revision
drewp
parents:
diff changeset
154 sframe = Frame(f,bd=2,relief='groove')
45b12307c695 Initial revision
drewp
parents:
diff changeset
155 sub.draw_tk(sframe)
45b12307c695 Initial revision
drewp
parents:
diff changeset
156 sframe.pack(side='left',fill='y')
53
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
157
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
158 def subediting_edit(self,subediting,sub):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
159 subediting.setsub(sub)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
160
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
161 def subediting_save(self,name,sub,lightboard):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
162 lightboard.save_sub(name,sub.getlevels())
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
163
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
164 def subeditingbuttons(self,f,side1,sub,name,lightboard,subediting):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
165 for txt,cmd in (("Edit",lambda subediting=subediting,sub=sub: self.subediting_edit(subediting,sub)),
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
166 ("Save",lambda sub=sub,name=name,lightboard=lightboard: self.subediting_save(name,sub,lightboard))):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
167 eb = Button(f,text=txt,font=stdfont,padx=0,pady=0,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
168 bd=1,command=cmd)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
169 eb.pack(side=side1,fill='both',padx=0,pady=0)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
170
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
171 def axisbuttons(self,f,s,xfader,stdfont,side1,name):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
172 for axis in ('y','x'):
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
173 cvar=IntVar()
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
174 eb_color = ('red', 'green')[axis == 'y']
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
175 cb=Togglebutton(f,text=axis.upper(),variable=cvar,font=stdfont,
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
176 padx=3, pady=0, bd=1, downcolor=eb_color)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
177 cb.pack(side=side1,fill='both', padx=0, pady=0)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
178 s.bind('<Key-%s>'%axis, lambda ev,cb=cb: cb.invoke)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
179 xfader.registerbutton(name,axis,cvar)
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
180
032b2b67bc10 result of July 7th on-site editing
dmcc
parents: 52
diff changeset
181