annotate flax/TimelineDMX.py-merge @ 271:97c08a1c4351

gyrocontroller: remap buttons, fix keep mode Also, solo mode is now default, colors are brighter, numeric names for subs are converted to subs with only that channel up, send zeroes when exiting
author David McClosky <dmcc@bigasterisk.com>
date Fri, 17 Jun 2005 04:23:07 +0000
parents 851cf44cea40
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
206
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
1 import sys, time, socket
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
2 sys.path.append("../light8")
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
3 import Tix as tk
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
4
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
5 import Patch, Timeline, dmxclient, xmlrpclib
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
6 import TheShow
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
7
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
8 Patch.reload_data()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
9
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
10 <<<<<<< TimelineDMX.py
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
11 class ShowRunner(tk.Frame):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
12 def __init__(self, master):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
13 tk.Frame.__init__(self, master)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
14 self.master = master
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
15
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
16 self.lastsenttime=0 # time of last send to dmx server
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
17 self.lastsentlevels=None # levels last sent to dmx server
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
18
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
19 self.show = TheShow.show
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
20 =======
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
21 class ShowRunner(tk.Frame):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
22 def __init__(self, master, show):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
23 tk.Frame.__init__(self, master)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
24 self.master = master
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
25
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
26 self.show = show
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
27 >>>>>>> 1.2
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
28 self.find_player()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
29 <<<<<<< TimelineDMX.py
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
30 self.draw_ui()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
31
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
32 def draw_ui(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
33 self.build_timeline_list()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
34 self.draw_buttons()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
35 def draw_buttons(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
36 self.buttonframe = tk.Frame(self, bd=2, relief='raised')
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
37 self.refreshbutton = tk.Button(self.buttonframe, command=self.refresh,
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
38 text="Refresh", bg='blue')
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
39 self.refreshbutton.pack()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
40 self.nothing = tk.Button(self.buttonframe, \
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
41 command=lambda: self.set_timeline(None), text="Nothing", \
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
42 bg='red')
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
43 self.nothing.pack()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
44 self.buttonframe.pack()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
45 def build_timeline_list(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
46 self.tl_list = tk.Frame(self)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
47 timelines = self.show.get_timelines()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
48 timelines.sort()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
49 for tl in timelines:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
50 b=tk.Button(self.tl_list,text=tl,
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
51 anchor='w',pady=1)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
52 b.config(command=lambda tl=tl: self.set_timeline(tl))
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
53 b.pack(side='top',fill='x')
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
54 self.tl_list.pack()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
55 def set_timeline(self, tlname):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
56 print "TimelineDMX: set timeline to", tlname
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
57 self.show.set_timeline(tlname)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
58 =======
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
59 self.build_timeline_list()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
60 def build_timeline_list(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
61 self.tl_list = tk.Frame(self)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
62 for tl in self.show.get_timelines():
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
63 b=tk.Button(self.tl_list,text=tl,
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
64 anchor='w',pady=1)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
65 b.config(command=lambda tl=tl: self.set_timeline(tl))
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
66 b.pack(side='top',fill='x')
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
67 self.tl_list.pack()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
68 def set_timeline(self, tlname):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
69 print "TimelineDMX: set timeline to", tlname
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
70 self.show.set_timeline(tlname)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
71 >>>>>>> 1.2
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
72 def find_player(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
73 self.player = xmlrpclib.Server("http://dash:8040")
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
74 def send_levels(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
75 <<<<<<< TimelineDMX.py
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
76 try:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
77 # avoid sending the same levels too often (send only
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
78 # when there's a change, or if a second has passed)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
79 levels = self.show.calc_active_submaster().get_dmx_list()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
80 if levels!=self.lastsentlevels or time.time()>self.lastsenttime+1:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
81 dmxclient.outputlevels(levels)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
82 self.lastsentlevels=levels[:]
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
83 self.lastsenttime=time.time()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
84
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
85 except AttributeError: # hackified!
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
86 pass
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
87 =======
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
88 levels = self.show.calc_active_submaster().get_dmx_list()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
89
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
90 dmxclient.outputlevels(levels)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
91 >>>>>>> 1.2
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
92 def sync_times(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
93 try:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
94 playtime = self.player.gettime()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
95 self.show.set_time(playtime)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
96 except socket.error, e:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
97 print "Server error %s, waiting"%e
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
98 time.sleep(2)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
99 def mainloop(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
100 try:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
101 while 1:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
102 self.sync_times()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
103 self.send_levels()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
104 time.sleep(0.01)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
105 self.master.update()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
106 except KeyboardInterrupt:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
107 sys.exit(0)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
108 def refresh(self):
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
109 print "refresh..."
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
110 # :)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
111 # print "reserved for future feature"
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
112 import TheShow
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
113 self.show = TheShow.show
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
114 self.tl_list.destroy()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
115 self.buttonframe.destroy()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
116 self.draw_ui()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
117
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
118 if __name__ == "__main__":
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
119 <<<<<<< TimelineDMX.py
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
120 root = tk.Tk()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
121 s = ShowRunner(root)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
122 # s.show.set_timeline('song01')
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
123 s.pack()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
124
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
125 import atexit
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
126 def stop_sending_levels():
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
127 s.set_timeline(None)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
128 dmxclient.outputlevels([])
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
129 atexit.register(stop_sending_levels)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
130
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
131 import sys
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
132 try:
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
133 timelinename = sys.argv[1]
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
134 s.set_timeline(timelinename)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
135 root.withdraw()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
136 except: # uh oh
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
137 pass
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
138
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
139 =======
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
140 root = tk.Tk()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
141 s = ShowRunner(root, TheShow.show)
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
142 s.show.set_timeline('strobe test')
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
143 s.pack()
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
144 >>>>>>> 1.2
851cf44cea40 rename clientid and allow it as an argument
drewp
parents:
diff changeset
145 s.mainloop()