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()