Files
@ 69ca2b2fc133
Branch filter:
Location: light9/light8/Xfader.py - annotation
69ca2b2fc133
2.6 KiB
text/x-python
overcomplicated attempt at persisting the pane layout in the rdf graph
this was hard because we have to somehow wait for the graph to load before config'ing the panes
this was hard because we have to somehow wait for the graph to load before config'ing the panes
71489bb71528 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 e04f7b552bcd 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 45b12307c695 | from Tix import *
from __future__ import division
class Xfader(Canvas):
def __init__(self, scalelevelsIn):
global scalelevels
scalelevels=scalelevelsIn
self.checkbuttons={}
self.startcoord=None
def sub2(self,a,b):
return ( (a[0]-b[0]), (a[1]-b[1]))
def down(self,ev):
global scalelevels
self.startcoord=(ev.x,-ev.y)
self.startlevels = dict([(k,v.get()) for k,v in scalelevels.items()])
# find the channel names of the selected subs
self.onchannel = {
'x':[x for x in scalelevels.keys() if self.checkbuttons[x]['x'].get()],
'y':[x for x in scalelevels.keys() if self.checkbuttons[x]['y'].get()]
}
#self.create_line(0,0,100,100,tag='transient')
def getoriglevel(self,subname):
return self.startlevels[subname]
def up(self,ev):
self.startcoord=None
self.delete('transient')
# self.clearallbuttons()
def moved(self,ev):
if self.startcoord is None:
return
pos=(ev.x,-ev.y)
deltas= self.sub2(pos,self.startcoord)
for axis,delta in zip(('x','y'),deltas):
onchan=self.onchannel[axis]
for subn in onchan:
newlev = self.getoriglevel(subn) + 1.0*delta/75
newlev = int(newlev*1000)/1000.0
newlev = min(1.0,max(newlev,0.0))
scalelevels[subn].set( newlev )
def width(self):
return int(self['width'])
def height(self):
return int(self['height'])
def setupwidget(self,parent):
Canvas.__init__(self,parent,width=150,height=150,bg="grey40")
self.pack(side='bottom')
self.create_rectangle(5,5,self.width()-5,self.height()-5)
self.create_line(0,self.height()/2,150,self.height()/2)
self.create_line(self.width()/2,0,self.width()/2,self.height())
self.bind("<ButtonPress-1>",self.down)
self.bind("<ButtonRelease-1>",self.up)
self.bind("<B1-Motion>",self.moved)
def registerbutton(self,subname,axis,checkvar):
if subname not in self.checkbuttons:
self.checkbuttons[subname]={}
self.checkbuttons[subname][axis]=checkvar
def clearallbuttons(self, axis='both'):
for cb in self.checkbuttons.values():
if axis == 'both':
for a in cb.values():
a.set(0)
else:
cb[axis].set(0)
def grab(self,axis):
self.clearallbuttons(axis)
for n,sv in scalelevels.items():
if sv.get() and n != 'blacklight':
self.checkbuttons[n][axis].set(1)
|