0
|
1 import sys, time, socket
|
|
2 sys.path.append("../light8")
|
139
|
3 import Tix as tk
|
0
|
4
|
|
5 import Patch, Timeline, dmxclient, xmlrpclib
|
|
6 import TheShow
|
|
7
|
|
8 Patch.reload_data()
|
|
9
|
139
|
10 class ShowRunner(tk.Frame):
|
|
11 def __init__(self, master, show):
|
|
12 tk.Frame.__init__(self, master)
|
|
13 self.master = master
|
|
14
|
0
|
15 self.show = show
|
|
16 self.find_player()
|
139
|
17 self.build_timeline_list()
|
|
18 def build_timeline_list(self):
|
|
19 self.tl_list = tk.Frame(self)
|
|
20 for tl in self.show.get_timelines():
|
|
21 b=tk.Button(self.tl_list,text=tl,
|
|
22 anchor='w',pady=1)
|
|
23 b.config(command=lambda tl=tl: self.set_timeline(tl))
|
|
24 b.pack(side='top',fill='x')
|
|
25 self.tl_list.pack()
|
|
26 def set_timeline(self, tlname):
|
|
27 print "TimelineDMX: set timeline to", tlname
|
|
28 self.show.set_timeline(tlname)
|
0
|
29 def find_player(self):
|
|
30 self.player = xmlrpclib.Server("http://localhost:8040")
|
|
31 def send_levels(self):
|
|
32 levels = self.show.calc_active_submaster().get_dmx_list()
|
|
33
|
|
34 dmxclient.outputlevels(levels)
|
|
35 def sync_times(self):
|
|
36 try:
|
|
37 playtime = self.player.gettime()
|
|
38 self.show.set_time(playtime)
|
|
39 except socket.error, e:
|
|
40 print "Server error %s, waiting"%e
|
|
41 time.sleep(2)
|
|
42 def mainloop(self):
|
|
43 try:
|
|
44 while 1:
|
|
45 self.sync_times()
|
|
46 self.send_levels()
|
|
47 time.sleep(0.01)
|
139
|
48 self.master.update()
|
0
|
49 except KeyboardInterrupt:
|
|
50 sys.exit(0)
|
|
51
|
|
52 if __name__ == "__main__":
|
139
|
53 root = tk.Tk()
|
|
54 s = ShowRunner(root, TheShow.show)
|
0
|
55 s.show.set_timeline('strobe test')
|
139
|
56 s.pack()
|
0
|
57 s.mainloop()
|