annotate light8/Xfader.py @ 2450:a4052905ca7d default tip

notes about how rdfdb syncs, or should sync
author drewp@bigasterisk.com
date Mon, 03 Jun 2024 23:01:54 -0700
parents e04f7b552bcd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51
71489bb71528 - Meet Fader. He is going to grow up and be a crossfader some day
dmcc
parents: 4
diff changeset
1 from Tix import *
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
2 from __future__ import division
45b12307c695 Initial revision
drewp
parents:
diff changeset
3
45b12307c695 Initial revision
drewp
parents:
diff changeset
4 class Xfader(Canvas):
45b12307c695 Initial revision
drewp
parents:
diff changeset
5 def __init__(self, scalelevelsIn):
45b12307c695 Initial revision
drewp
parents:
diff changeset
6 global scalelevels
45b12307c695 Initial revision
drewp
parents:
diff changeset
7 scalelevels=scalelevelsIn
45b12307c695 Initial revision
drewp
parents:
diff changeset
8 self.checkbuttons={}
45b12307c695 Initial revision
drewp
parents:
diff changeset
9 self.startcoord=None
45b12307c695 Initial revision
drewp
parents:
diff changeset
10 def sub2(self,a,b):
45b12307c695 Initial revision
drewp
parents:
diff changeset
11 return ( (a[0]-b[0]), (a[1]-b[1]))
45b12307c695 Initial revision
drewp
parents:
diff changeset
12 def down(self,ev):
45b12307c695 Initial revision
drewp
parents:
diff changeset
13 global scalelevels
45b12307c695 Initial revision
drewp
parents:
diff changeset
14 self.startcoord=(ev.x,-ev.y)
45b12307c695 Initial revision
drewp
parents:
diff changeset
15 self.startlevels = dict([(k,v.get()) for k,v in scalelevels.items()])
45b12307c695 Initial revision
drewp
parents:
diff changeset
16 # find the channel names of the selected subs
45b12307c695 Initial revision
drewp
parents:
diff changeset
17 self.onchannel = {
45b12307c695 Initial revision
drewp
parents:
diff changeset
18 'x':[x for x in scalelevels.keys() if self.checkbuttons[x]['x'].get()],
45b12307c695 Initial revision
drewp
parents:
diff changeset
19 'y':[x for x in scalelevels.keys() if self.checkbuttons[x]['y'].get()]
45b12307c695 Initial revision
drewp
parents:
diff changeset
20 }
45b12307c695 Initial revision
drewp
parents:
diff changeset
21
45b12307c695 Initial revision
drewp
parents:
diff changeset
22
45b12307c695 Initial revision
drewp
parents:
diff changeset
23 #self.create_line(0,0,100,100,tag='transient')
45b12307c695 Initial revision
drewp
parents:
diff changeset
24
45b12307c695 Initial revision
drewp
parents:
diff changeset
25 def getoriglevel(self,subname):
45b12307c695 Initial revision
drewp
parents:
diff changeset
26 return self.startlevels[subname]
45b12307c695 Initial revision
drewp
parents:
diff changeset
27 def up(self,ev):
45b12307c695 Initial revision
drewp
parents:
diff changeset
28 self.startcoord=None
45b12307c695 Initial revision
drewp
parents:
diff changeset
29 self.delete('transient')
45b12307c695 Initial revision
drewp
parents:
diff changeset
30 # self.clearallbuttons()
45b12307c695 Initial revision
drewp
parents:
diff changeset
31 def moved(self,ev):
45b12307c695 Initial revision
drewp
parents:
diff changeset
32 if self.startcoord is None:
45b12307c695 Initial revision
drewp
parents:
diff changeset
33 return
45b12307c695 Initial revision
drewp
parents:
diff changeset
34 pos=(ev.x,-ev.y)
45b12307c695 Initial revision
drewp
parents:
diff changeset
35 deltas= self.sub2(pos,self.startcoord)
45b12307c695 Initial revision
drewp
parents:
diff changeset
36 for axis,delta in zip(('x','y'),deltas):
45b12307c695 Initial revision
drewp
parents:
diff changeset
37 onchan=self.onchannel[axis]
45b12307c695 Initial revision
drewp
parents:
diff changeset
38 for subn in onchan:
45b12307c695 Initial revision
drewp
parents:
diff changeset
39 newlev = self.getoriglevel(subn) + 1.0*delta/75
45b12307c695 Initial revision
drewp
parents:
diff changeset
40 newlev = int(newlev*1000)/1000.0
45b12307c695 Initial revision
drewp
parents:
diff changeset
41 newlev = min(1.0,max(newlev,0.0))
45b12307c695 Initial revision
drewp
parents:
diff changeset
42 scalelevels[subn].set( newlev )
45b12307c695 Initial revision
drewp
parents:
diff changeset
43 def width(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
44 return int(self['width'])
45b12307c695 Initial revision
drewp
parents:
diff changeset
45 def height(self):
45b12307c695 Initial revision
drewp
parents:
diff changeset
46 return int(self['height'])
45b12307c695 Initial revision
drewp
parents:
diff changeset
47 def setupwidget(self,parent):
102
e04f7b552bcd - scroll wheel works everywhere
dmcc
parents: 51
diff changeset
48 Canvas.__init__(self,parent,width=150,height=150,bg="grey40")
0
45b12307c695 Initial revision
drewp
parents:
diff changeset
49 self.pack(side='bottom')
45b12307c695 Initial revision
drewp
parents:
diff changeset
50 self.create_rectangle(5,5,self.width()-5,self.height()-5)
45b12307c695 Initial revision
drewp
parents:
diff changeset
51 self.create_line(0,self.height()/2,150,self.height()/2)
45b12307c695 Initial revision
drewp
parents:
diff changeset
52 self.create_line(self.width()/2,0,self.width()/2,self.height())
45b12307c695 Initial revision
drewp
parents:
diff changeset
53 self.bind("<ButtonPress-1>",self.down)
45b12307c695 Initial revision
drewp
parents:
diff changeset
54 self.bind("<ButtonRelease-1>",self.up)
45b12307c695 Initial revision
drewp
parents:
diff changeset
55 self.bind("<B1-Motion>",self.moved)
45b12307c695 Initial revision
drewp
parents:
diff changeset
56
45b12307c695 Initial revision
drewp
parents:
diff changeset
57 def registerbutton(self,subname,axis,checkvar):
45b12307c695 Initial revision
drewp
parents:
diff changeset
58 if subname not in self.checkbuttons:
45b12307c695 Initial revision
drewp
parents:
diff changeset
59 self.checkbuttons[subname]={}
45b12307c695 Initial revision
drewp
parents:
diff changeset
60 self.checkbuttons[subname][axis]=checkvar
45b12307c695 Initial revision
drewp
parents:
diff changeset
61 def clearallbuttons(self, axis='both'):
45b12307c695 Initial revision
drewp
parents:
diff changeset
62 for cb in self.checkbuttons.values():
45b12307c695 Initial revision
drewp
parents:
diff changeset
63 if axis == 'both':
45b12307c695 Initial revision
drewp
parents:
diff changeset
64 for a in cb.values():
45b12307c695 Initial revision
drewp
parents:
diff changeset
65 a.set(0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
66 else:
45b12307c695 Initial revision
drewp
parents:
diff changeset
67 cb[axis].set(0)
45b12307c695 Initial revision
drewp
parents:
diff changeset
68 def grab(self,axis):
45b12307c695 Initial revision
drewp
parents:
diff changeset
69 self.clearallbuttons(axis)
45b12307c695 Initial revision
drewp
parents:
diff changeset
70 for n,sv in scalelevels.items():
45b12307c695 Initial revision
drewp
parents:
diff changeset
71 if sv.get() and n != 'blacklight':
45b12307c695 Initial revision
drewp
parents:
diff changeset
72 self.checkbuttons[n][axis].set(1)
45b12307c695 Initial revision
drewp
parents:
diff changeset
73
45b12307c695 Initial revision
drewp
parents:
diff changeset
74