changeset 144:f433e95f2e42

subcomposer is now a module. You can still run it from the command subcomposer is now a module. You can still run it from the command line. If you want it to work as a module, you need to call the considersendupdate() method with the period of the after loop that it should use.
author dmcc
date Wed, 02 Jul 2003 10:21:59 +0000
parents 79aabb5db3ce
children a5515960d476
files flax/Subcomposer.py flax/subcomposer
diffstat 2 files changed, 6 insertions(+), 142 deletions(-) [+]
line wrap: on
line diff
--- a/flax/Subcomposer.py	Sun Jun 15 15:20:53 2003 +0000
+++ b/flax/Subcomposer.py	Wed Jul 02 10:21:59 2003 +0000
@@ -9,11 +9,10 @@
 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 @@
         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 @@
                 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 @@
         
         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 @@
     e.bind("<Return>",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:
--- a/flax/subcomposer	Sun Jun 15 15:20:53 2003 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -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("<Return>",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)