annotate flax/TimelineDMX.py-merge @ 2105:35468f1dcf38

comments
author drewp@bigasterisk.com
date Wed, 01 Jun 2022 12:20:11 -0700
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()