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