Stefan Schuermans commited on 2014-05-21 20:59:46
Showing 2 changed files, with 31 additions and 4 deletions.
... | ... |
@@ -7,7 +7,7 @@ |
7 | 7 |
<property name="title" translatable="yes">About BlinkenArea Stage Director</property> |
8 | 8 |
<property name="type_hint">dialog</property> |
9 | 9 |
<property name="program_name">BlinkenArea Stage Director</property> |
10 |
- <property name="version">0.1.2</property> |
|
10 |
+ <property name="version">0.1.3</property> |
|
11 | 11 |
<property name="copyright" translatable="yes">Copyright 2013-2014 Stefan Schuermans <stefan@schuermans.info> |
12 | 12 |
Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
13 | 13 |
a blinkenarea.org project - https://www.blinkenarea.org/</property> |
... | ... |
@@ -614,7 +614,6 @@ a blinkenarea.org project - https://www.blinkenarea.org/</property> |
614 | 614 |
<property name="visible">True</property> |
615 | 615 |
<property name="can_focus">False</property> |
616 | 616 |
<property name="border_width">3</property> |
617 |
- <property name="orientation">vertical</property> |
|
618 | 617 |
<child> |
619 | 618 |
<object class="GtkCheckButton" id="SingleStep"> |
620 | 619 |
<property name="label" translatable="yes">single-step mode</property> |
... | ... |
@@ -627,11 +626,30 @@ a blinkenarea.org project - https://www.blinkenarea.org/</property> |
627 | 626 |
<property name="draw_indicator">True</property> |
628 | 627 |
</object> |
629 | 628 |
<packing> |
630 |
- <property name="expand">False</property> |
|
629 |
+ <property name="expand">True</property> |
|
631 | 630 |
<property name="fill">True</property> |
632 | 631 |
<property name="position">0</property> |
633 | 632 |
</packing> |
634 | 633 |
</child> |
634 |
+ <child> |
|
635 |
+ <object class="GtkCheckButton" id="UdpOutput"> |
|
636 |
+ <property name="label" translatable="yes">UDP output</property> |
|
637 |
+ <property name="use_action_appearance">False</property> |
|
638 |
+ <property name="visible">True</property> |
|
639 |
+ <property name="can_focus">True</property> |
|
640 |
+ <property name="receives_default">False</property> |
|
641 |
+ <property name="use_action_appearance">False</property> |
|
642 |
+ <property name="xalign">0</property> |
|
643 |
+ <property name="active">True</property> |
|
644 |
+ <property name="draw_indicator">True</property> |
|
645 |
+ <signal name="toggled" handler="onUdpOutput" swapped="no"/> |
|
646 |
+ </object> |
|
647 |
+ <packing> |
|
648 |
+ <property name="expand">True</property> |
|
649 |
+ <property name="fill">True</property> |
|
650 |
+ <property name="position">1</property> |
|
651 |
+ </packing> |
|
652 |
+ </child> |
|
635 | 653 |
</object> |
636 | 654 |
<packing> |
637 | 655 |
<property name="expand">False</property> |
... | ... |
@@ -38,6 +38,7 @@ class StageDirector: |
38 | 38 |
self.widLogoUdpErr = self.builder.get_object("LogoUdpErr") |
39 | 39 |
self.widLogoUdpOk = self.builder.get_object("LogoUdpOk") |
40 | 40 |
self.widSingleStep = self.builder.get_object("SingleStep") |
41 |
+ self.widUdpOutput = self.builder.get_object("UdpOutput") |
|
41 | 42 |
self.widStatus = self.builder.get_object("Status") |
42 | 43 |
handlers = { |
43 | 44 |
"onDestroy": self.onDestroy, |
... | ... |
@@ -52,6 +53,7 @@ class StageDirector: |
52 | 53 |
"onPause": self.onPause, |
53 | 54 |
"onStop": self.onStop, |
54 | 55 |
"onNext": self.onNext, |
56 |
+ "onUdpOutput": self.onUdpOutput, |
|
55 | 57 |
} |
56 | 58 |
self.builder.connect_signals(handlers) |
57 | 59 |
self.playlist = playlist.Playlist() |
... | ... |
@@ -158,7 +160,7 @@ class StageDirector: |
158 | 160 |
self.widLogoUdpErr.set_visible(True) |
159 | 161 |
self.widLogoUdpOk.set_visible(False) |
160 | 162 |
self.widStatus.remove_all(0) |
161 |
- self.widStatus.push(0, "UDP output ERROR") |
|
163 |
+ self.widStatus.push(0, "UDP output turned off") |
|
162 | 164 |
if self.sock is not None: |
163 | 165 |
self.sock.close() |
164 | 166 |
self.sock = None |
... | ... |
@@ -166,6 +168,7 @@ class StageDirector: |
166 | 168 |
def setupSock(self): |
167 | 169 |
"""create a new UDP socket and "connect" it to the destination address""" |
168 | 170 |
self.closeSock() |
171 |
+ if self.widUdpOutput.get_active(): |
|
169 | 172 |
try: |
170 | 173 |
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
171 | 174 |
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) |
... | ... |
@@ -177,6 +180,7 @@ class StageDirector: |
177 | 180 |
self.widLogoUdpOk.set_visible(True) |
178 | 181 |
except: |
179 | 182 |
self.closeSock() |
183 |
+ self.widStatus.push(0, "UDP output ERROR") |
|
180 | 184 |
|
181 | 185 |
def onDestroy(self, widget): |
182 | 186 |
"""window will be destroyed""" |
... | ... |
@@ -311,6 +315,11 @@ class StageDirector: |
311 | 315 |
self.stEntryIdx = 0 |
312 | 316 |
self.updateEntry() |
313 | 317 |
|
318 |
+ def onUdpOutput(self, widget): |
|
319 |
+ """UDP Output check box toggled""" |
|
320 |
+ # re-create UDP socket |
|
321 |
+ self.setupSock() |
|
322 |
+ |
|
314 | 323 |
def onTimer10ms(self): |
315 | 324 |
"""timer callback, every 10ms""" |
316 | 325 |
# update position if playing |
317 | 326 |