Stefan Schuermans commited on 2014-01-15 21:52:48
Showing 5 changed files, with 23 additions and 16 deletions.
| ... | ... |
@@ -1,7 +1,7 @@ |
| 1 | 1 |
#! /usr/bin/env python |
| 2 | 2 |
|
| 3 | 3 |
# BlinkenArea Stage Director |
| 4 |
-# Copyright 2013 Stefan Schuermans <stefan@blinkenarea.org> |
|
| 4 |
+# Copyright 2013-2014 Stefan Schuermans <stefan@blinkenarea.org> |
|
| 5 | 5 |
# Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
| 6 | 6 |
# a blinkenarea.org project - https://www.blinkenarea.org/ |
| 7 | 7 |
|
| ... | ... |
@@ -19,7 +19,7 @@ class Playlist: |
| 19 | 19 |
- entries are played one after another |
| 20 | 20 |
- playing halts at stop points |
| 21 | 21 |
- <entry> = <name> <whitespace> <duration> |
| 22 |
- - <stop point> = "" |
|
| 22 |
+ - <stop point> = <name> |
|
| 23 | 23 |
- <name> = [A-Za-Z0-9_]+ |
| 24 | 24 |
- <duration> = ((<hours>:)?<minutes>:)?<seconds> |
| 25 | 25 |
- <hours> = [0-9]+ |
| ... | ... |
@@ -33,10 +33,12 @@ class Playlist: |
| 33 | 33 |
# "name": string, name of entry |
| 34 | 34 |
# "durtaion": float, in seconds } |
| 35 | 35 |
self.reEntry = re.compile("^\s*([A-Za-z0-9_]+)\s+([0-9:.]+)\s*$")
|
| 36 |
+ self.reStop = re.compile("^\s*([A-Za-z0-9_]+)\s*$")
|
|
| 36 | 37 |
|
| 37 | 38 |
def read(self, filename): |
| 38 | 39 |
"""read the playlist from filename, replacing the current playlist""" |
| 39 | 40 |
self.entries = [] |
| 41 |
+ try: |
|
| 40 | 42 |
f = open(filename, "r") |
| 41 | 43 |
for line in f: |
| 42 | 44 |
mEntry = self.reEntry.match(line) |
| ... | ... |
@@ -49,9 +51,15 @@ class Playlist: |
| 49 | 51 |
#print("DEBUG playlist entry normal %s %f" %
|
| 50 | 52 |
# (self.entries[-1]["name"], self.entries[-1]["duration"])) |
| 51 | 53 |
else: |
| 52 |
- self.entries.append({"type": "stop"})
|
|
| 54 |
+ mStop = self.reStop.match(line) |
|
| 55 |
+ if mStop: |
|
| 56 |
+ name = mStop.group(1) |
|
| 57 |
+ self.entries.append({"type": "stop",
|
|
| 58 |
+ "name": name}) |
|
| 53 | 59 |
#print("DEBUG playlist entry stop")
|
| 54 | 60 |
f.close() |
| 61 |
+ except IOError: |
|
| 62 |
+ pass |
|
| 55 | 63 |
|
| 56 | 64 |
def update(self, store): |
| 57 | 65 |
"""update the contents of a Gtk ListStore with the contents of this |
| ... | ... |
@@ -63,7 +71,7 @@ class Playlist: |
| 63 | 71 |
name = entry["name"] |
| 64 | 72 |
duration = time_fmt.sec2str(entry["duration"]) |
| 65 | 73 |
else: |
| 66 |
- name = "" |
|
| 74 |
+ name = entry["name"] |
|
| 67 | 75 |
duration = "STOP" |
| 68 | 76 |
store.append([idx, Pango.Weight.NORMAL, name, duration]) |
| 69 | 77 |
idx = idx + 1 |
| ... | ... |
@@ -8,7 +8,7 @@ |
| 8 | 8 |
<property name="type_hint">dialog</property> |
| 9 | 9 |
<property name="program_name">BlinkenArea Stage Director</property> |
| 10 | 10 |
<property name="version">0.1.1</property> |
| 11 |
- <property name="copyright" translatable="yes">Copyright 2013 Stefan Schuermans <stefan@blinkenarea.org> |
|
| 11 |
+ <property name="copyright" translatable="yes">Copyright 2013-2014 Stefan Schuermans <stefan@blinkenarea.org> |
|
| 12 | 12 |
Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
| 13 | 13 |
a blinkenarea.org project - https://www.blinkenarea.org/</property> |
| 14 | 14 |
<property name="website">https://www.blinkenarea.org</property> |
| ... | ... |
@@ -561,7 +561,7 @@ a blinkenarea.org project - https://www.blinkenarea.org/</property> |
| 561 | 561 |
</child> |
| 562 | 562 |
</object> |
| 563 | 563 |
<packing> |
| 564 |
- <property name="expand">False</property> |
|
| 564 |
+ <property name="expand">True</property> |
|
| 565 | 565 |
<property name="fill">True</property> |
| 566 | 566 |
<property name="position">2</property> |
| 567 | 567 |
</packing> |
| ... | ... |
@@ -1,13 +1,13 @@ |
| 1 | 1 |
#! /usr/bin/env python |
| 2 | 2 |
|
| 3 | 3 |
# BlinkenArea Stage Director |
| 4 |
-# Copyright 2013 Stefan Schuermans <stefan@blinkenarea.org> |
|
| 4 |
+# Copyright 2013-2014 Stefan Schuermans <stefan@blinkenarea.org> |
|
| 5 | 5 |
# Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
| 6 | 6 |
# a blinkenarea.org project - https://www.blinkenarea.org/ |
| 7 | 7 |
|
| 8 | 8 |
import os |
| 9 |
+from gi.repository import GObject |
|
| 9 | 10 |
from gi.repository import Gtk |
| 10 |
-import gobject |
|
| 11 | 11 |
from gi.repository import Pango |
| 12 | 12 |
import socket |
| 13 | 13 |
import struct |
| ... | ... |
@@ -67,8 +67,8 @@ class StageDirector: |
| 67 | 67 |
self.setupSock() |
| 68 | 68 |
self.updateEntry() |
| 69 | 69 |
self.updateButtonVisibility() |
| 70 |
- gobject.timeout_add(10, self.onTimer10ms) |
|
| 71 |
- gobject.timeout_add(100, self.onTimer100ms) |
|
| 70 |
+ GObject.timeout_add(10, self.onTimer10ms) |
|
| 71 |
+ GObject.timeout_add(100, self.onTimer100ms) |
|
| 72 | 72 |
|
| 73 | 73 |
def showPosition(self): |
| 74 | 74 |
"""update the position texts next to the position slider""" |
| ... | ... |
@@ -121,8 +121,7 @@ class StageDirector: |
| 121 | 121 |
self.stEntryIdx = -1 |
| 122 | 122 |
# get name of current entry |
| 123 | 123 |
self.stName = "" |
| 124 |
- if self.stEntryIdx >= 0 and \ |
|
| 125 |
- self.playlist.entries[self.stEntryIdx]["type"] == "normal": |
|
| 124 |
+ if self.stEntryIdx >= 0: |
|
| 126 | 125 |
self.stName = self.playlist.entries[self.stEntryIdx]["name"] |
| 127 | 126 |
# make current entry bold, all others non-bold |
| 128 | 127 |
def update(model, path, it, user_data): |
| ... | ... |
@@ -1,7 +1,7 @@ |
| 1 | 1 |
#! /usr/bin/env python |
| 2 | 2 |
|
| 3 | 3 |
# BlinkenArea Stage Director |
| 4 |
-# Copyright 2013 Stefan Schuermans <stefan@blinkenarea.org> |
|
| 4 |
+# Copyright 2013-2014 Stefan Schuermans <stefan@blinkenarea.org> |
|
| 5 | 5 |
# Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
| 6 | 6 |
# a blinkenarea.org project - https://www.blinkenarea.org/ |
| 7 | 7 |
|
| 8 | 8 |