diff flax/TimelineDMX.py @ 0:45b12307c695

Initial revision
author drewp
date Wed, 03 Jul 2002 09:37:57 +0000
parents
children 5670f66845ce
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/flax/TimelineDMX.py	Wed Jul 03 09:37:57 2002 +0000
@@ -0,0 +1,57 @@
+import sys, time, socket
+sys.path.append("../light8")
+import Tix as tk
+
+import Patch, Timeline, dmxclient, xmlrpclib
+import TheShow
+
+Patch.reload_data()
+
+class ShowRunner(tk.Frame):
+    def __init__(self, master, show):
+        tk.Frame.__init__(self, master)
+        self.master = master
+
+        self.show = show
+        self.find_player()
+        self.build_timeline_list()
+    def build_timeline_list(self):
+        self.tl_list = tk.Frame(self)
+        for tl in self.show.get_timelines():
+            b=tk.Button(self.tl_list,text=tl,
+                        anchor='w',pady=1)
+            b.config(command=lambda tl=tl: self.set_timeline(tl))
+            b.pack(side='top',fill='x')
+        self.tl_list.pack()
+    def set_timeline(self, tlname):
+        print "TimelineDMX: set timeline to", tlname
+        self.show.set_timeline(tlname)
+    def find_player(self):
+        self.player = xmlrpclib.Server("http://localhost:8040")
+    def send_levels(self):
+        levels = self.show.calc_active_submaster().get_dmx_list()
+        
+        dmxclient.outputlevels(levels)
+    def sync_times(self):
+        try:
+            playtime = self.player.gettime()
+            self.show.set_time(playtime)
+        except socket.error, e:
+            print "Server error %s, waiting"%e
+            time.sleep(2)
+    def mainloop(self):
+        try:
+            while 1:
+                self.sync_times()
+                self.send_levels()
+                time.sleep(0.01)
+                self.master.update()
+        except KeyboardInterrupt:
+            sys.exit(0)
+
+if __name__ == "__main__":
+    root = tk.Tk()
+    s = ShowRunner(root, TheShow.show)
+    s.show.set_timeline('strobe test')
+    s.pack()
+    s.mainloop()