Files
@ 4136e92829e3
Branch filter:
Location: light9/flax/subcomposer - annotation
4136e92829e3
2.4 KiB
text/plain
toplevelat is smarter now...and even more confusing
toplevelat is smarter now...and even more confusing
yay legacy names!
toplevelat is smarter now...and even more confusing
yay legacy names!
6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 6dfe10a54fc4 | #!/usr/bin/python
from __future__ import division, nested_scopes
import Tkinter as tk
from dmxchanedit import Levelbox
import sys,os,time,atexit
sys.path.append("../light8")
import dmxclient
import Patch
import Submaster
import dispatcher
def persistentlevels():
"""adjusts levels from subcomposer.savedlevels, if possible; and
arranges to save the levels in that file upon exit"""
global levels
try:
levels[:]=map(float,file("subcomposer.savedlevels","r").read().split())
except IOError:
pass
atexit.register(lambda: file("subcomposer.savedlevels","w").
write(" ".join(map(str,levels))))
def levelchanged(channel,newlevel):
global lb, levels
if channel>len(levels):
return
levels[channel-1]=max(0,min(1,float(newlevel)))
lb.setlevels(levels)
def savenewsub(levels,subname):
leveldict={}
for i,lev in zip(range(len(levels)),levels):
if lev!=0:
leveldict[Patch.get_channel_name(i+1)]=lev
s=Submaster.Submaster(subname,leveldict)
s.save()
def Savebox(master,levels):
f=tk.Frame(master,bd=2,relief='raised')
tk.Label(f,text="Save this as:").pack(side='left')
e=tk.Entry(f)
e.pack(side='left',exp=1,fill='x')
def cmd():
subname=e.get()
savenewsub(levels,subname)
print "saved new sub",subname
tk.Button(f,text="Save",command=cmd).pack(side='left')
return f
#############################
levels=[0]*68 # levels should never get overwritten, just edited
persistentlevels()
root=tk.Tk()
root.config(bg='black')
lb=Levelbox(root)
lb.pack(side='top')
savebox=Savebox(root,levels)
savebox.pack(side='top')
# the dmx levels we edit and output, range is 0..1 (dmx chan 1 is
# the 0 element)
lb.setlevels(levels)
dispatcher.connect(levelchanged,"levelchanged")
lastupdate=0 # time we last sent to dmx
root.update() # get the windows drawn
lastsent=[] # copy of levels
def sendupdate():
global levels,lastupdate,lastsent
dmxclient.outputlevels(levels)
lastupdate=time.time()
lastsent=levels[:]
dispatcher.connect(sendupdate,"levelchanged")
while 1:
if 0:
for i in range(20): # don't let Tk take all the time
tk._tkinter.dooneevent()
print "loop"
else:
root.update()
if lastsent!=levels or time.time()>lastupdate+1:
sendupdate()
time.sleep(.01)
|