diff --git a/flax/Subcomposer.py b/flax/Subcomposer.py --- a/flax/Subcomposer.py +++ b/flax/Subcomposer.py @@ -9,11 +9,10 @@ import dmxclient import Patch import Submaster -from dispatch import dispatcher +import dispatcher class Subcomposer(tk.Frame): - def __init__(self, master, levelboxopts=None, dmxdummy=0, numchannels=68, - use_persistentlevels=0): + def __init__(self, master, levelboxopts=None, dmxdummy=0, numchannels=68): tk.Frame.__init__(self, master, bg='black') self.dmxdummy = dmxdummy self.numchannels = numchannels @@ -41,8 +40,7 @@ class Subcomposer(tk.Frame): dispatcher.connect(self.levelchanged,"levelchanged") dispatcher.connect(self.sendupdate,"levelchanged") - if use_persistentlevels: - self.persistentlevels() + self.persistentlevels() self.lastupdate=0 # time we last sent to dmx @@ -69,7 +67,7 @@ class Subcomposer(tk.Frame): return self.levels[channel-1]=max(0,min(1,float(newlevel))) self.levelbox.setlevels(self.levels) - def savenewsub(self, levels, subname): + def savenewsub(self, subname): leveldict={} for i,lev in zip(range(len(self.levels)),self.levels): if lev!=0: @@ -77,7 +75,7 @@ class Subcomposer(tk.Frame): s=Submaster.Submaster(subname,leveldict) s.save() - def loadsub(self, levels, subname): + def loadsub(self, subname): """puts a sub into the levels, replacing old level values""" s=Submaster.Submasters().get_sub_by_name(subname) self.levels[:]=[0]*68 @@ -110,32 +108,14 @@ def Savebox(master, levels, verb="Save", e.bind("",cb) tk.Button(f,text=verb,command=cb).pack(side='left') return f - -def open_sub_editing_window(subname, use_mainloop=1, dmxdummy=0): - if use_mainloop: - toplevel = tk.Tk() - else: - toplevel = tk.Toplevel() - if dmxdummy: - dummy_str = ' (dummy)' - else: - dummy_str = '' - toplevel.title("Subcomposer: %s%s" % (subname, dummy_str)) - sc = Subcomposer(toplevel, use_persistentlevels=0, dmxdummy=dmxdummy) - sc.pack(fill='both', expand=1) - sc.loadsub(None, subname) # don't ask - sc.considersendupdate(use_after_loop=10) - if use_mainloop: - tk.mainloop() ############################# if __name__ == "__main__": root=tk.Tk() root.config(bg='black') - root.tk_setPalette("#004633") - sc = Subcomposer(root, dmxdummy=0) + sc = Subcomposer(root, dmxdummy=1) sc.pack() while 1: diff --git a/flax/subcomposer b/flax/subcomposer deleted file mode 100644 --- a/flax/subcomposer +++ /dev/null @@ -1,116 +0,0 @@ -#!/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=None,newlevel=None): - global lb, levels - if channel is not None and newlevel is not None: - 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 loadsub(levels,subname): - """puts a sub into the levels, replacing old level values""" - s=Submaster.Submasters().get_sub_by_name(subname) - levels[:]=[0]*68 - levels[:]=s.get_dmx_list() - dispatcher.send("levelchanged") -def Savebox(master,levels,verb="Save", - cmd=savenewsub): - f=tk.Frame(master,bd=2,relief='raised') - tk.Label(f,text="Sub name:").pack(side='left') - e=tk.Entry(f) - e.pack(side='left',exp=1,fill='x') - def cb(*args): - subname=e.get() - cmd(levels,subname) - print "sub",verb,subname - e.bind("",cb) - tk.Button(f,text=verb,command=cb).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') - -loadbox=Savebox(root,levels,verb="Load",cmd=loadsub) -loadbox.pack(side='top') - -def alltozero(): - levels[:]=[0]*68 - dispatcher.send("levelchanged") -tk.Button(root,text="all to zero",command=alltozero).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)