Stefan Schuermans commited on 2013-11-16 14:29:29
Showing 3 changed files, with 57 additions and 32 deletions.
... | ... |
@@ -7,7 +7,7 @@ import time_fmt |
7 | 7 |
class Playlist: |
8 | 8 |
def __init__(self): |
9 | 9 |
self.entries = [] |
10 |
- self.reEntry = re.compile('^\s*([A-Za-z0-9_]+)\s+([0-9:.]+)\s*$') |
|
10 |
+ self.reEntry = re.compile("^\s*([A-Za-z0-9_]+)\s+([0-9:.]+)\s*$") |
|
11 | 11 |
|
12 | 12 |
def read(self, filename): |
13 | 13 |
self.entries = [] |
... | ... |
@@ -17,13 +17,24 @@ class Playlist: |
17 | 17 |
if mEntry: |
18 | 18 |
name = mEntry.group(1) |
19 | 19 |
duration = time_fmt.str2sec(mEntry.group(2)) |
20 |
- self.entries.append({'type': 'normal', |
|
21 |
- 'name': name, |
|
22 |
- 'duration': duration}) |
|
23 |
- print("entry normal %s %f" % (self.entries[-1]['name'], |
|
24 |
- self.entries[-1]['duration'])) |
|
20 |
+ self.entries.append({"type": "normal", |
|
21 |
+ "name": name, |
|
22 |
+ "duration": duration}) |
|
23 |
+ print("entry normal %s %f" % (self.entries[-1]["name"], |
|
24 |
+ self.entries[-1]["duration"])) |
|
25 | 25 |
else: |
26 |
- self.entries.append({'type': 'stop'}) |
|
26 |
+ self.entries.append({"type": "stop"}) |
|
27 | 27 |
print("entry stop") |
28 | 28 |
f.close() |
29 | 29 |
|
30 |
+ def update(self, store): |
|
31 |
+ store.clear() |
|
32 |
+ for entry in self.entries: |
|
33 |
+ if entry["type"] == "normal": |
|
34 |
+ name = entry["name"] |
|
35 |
+ duration = time_fmt.sec2str(entry["duration"]) |
|
36 |
+ else: |
|
37 |
+ name = "" |
|
38 |
+ duration = "STOP" |
|
39 |
+ store.append([name, duration]) |
|
40 |
+ |
... | ... |
@@ -1,6 +1,28 @@ |
1 | 1 |
<?xml version="1.0" encoding="UTF-8"?> |
2 | 2 |
<interface> |
3 | 3 |
<!-- interface-requires gtk+ 3.0 --> |
4 |
+ <object class="GtkListStore" id="PlaylistStore"> |
|
5 |
+ <columns> |
|
6 |
+ <!-- column-name Name --> |
|
7 |
+ <column type="gchararray"/> |
|
8 |
+ <!-- column-name Dauer --> |
|
9 |
+ <column type="gchararray"/> |
|
10 |
+ </columns> |
|
11 |
+ <data> |
|
12 |
+ <row> |
|
13 |
+ <col id="0" translatable="yes">Erster Akt</col> |
|
14 |
+ <col id="1" translatable="yes"/> |
|
15 |
+ </row> |
|
16 |
+ <row> |
|
17 |
+ <col id="0" translatable="yes">Zweiter Akt</col> |
|
18 |
+ <col id="1" translatable="yes"/> |
|
19 |
+ </row> |
|
20 |
+ <row> |
|
21 |
+ <col id="0" translatable="yes">Weltuntergang</col> |
|
22 |
+ <col id="1" translatable="yes"/> |
|
23 |
+ </row> |
|
24 |
+ </data> |
|
25 |
+ </object> |
|
4 | 26 |
<object class="GtkWindow" id="MainWindow"> |
5 | 27 |
<property name="visible">True</property> |
6 | 28 |
<property name="can_focus">False</property> |
... | ... |
@@ -13,8 +35,8 @@ |
13 | 35 |
<property name="orientation">vertical</property> |
14 | 36 |
<child> |
15 | 37 |
<object class="GtkScrolledWindow" id="PlaylistScroll"> |
16 |
- <property name="width_request">100</property> |
|
17 |
- <property name="height_request">100</property> |
|
38 |
+ <property name="width_request">320</property> |
|
39 |
+ <property name="height_request">240</property> |
|
18 | 40 |
<property name="visible">True</property> |
19 | 41 |
<property name="can_focus">True</property> |
20 | 42 |
<property name="border_width">3</property> |
... | ... |
@@ -23,7 +45,7 @@ |
23 | 45 |
<object class="GtkTreeView" id="PlaylistView"> |
24 | 46 |
<property name="visible">True</property> |
25 | 47 |
<property name="can_focus">True</property> |
26 |
- <property name="model">Playlist</property> |
|
48 |
+ <property name="model">PlaylistStore</property> |
|
27 | 49 |
<child internal-child="selection"> |
28 | 50 |
<object class="GtkTreeSelection" id="treeview-selection2"/> |
29 | 51 |
</child> |
... | ... |
@@ -279,28 +301,6 @@ |
279 | 301 |
</object> |
280 | 302 |
</child> |
281 | 303 |
</object> |
282 |
- <object class="GtkListStore" id="Playlist"> |
|
283 |
- <columns> |
|
284 |
- <!-- column-name Name --> |
|
285 |
- <column type="gchararray"/> |
|
286 |
- <!-- column-name Dauer --> |
|
287 |
- <column type="gfloat"/> |
|
288 |
- </columns> |
|
289 |
- <data> |
|
290 |
- <row> |
|
291 |
- <col id="0" translatable="yes">Erster Akt</col> |
|
292 |
- <col id="1">1</col> |
|
293 |
- </row> |
|
294 |
- <row> |
|
295 |
- <col id="0" translatable="yes">Zweiter Akt</col> |
|
296 |
- <col id="1">2</col> |
|
297 |
- </row> |
|
298 |
- <row> |
|
299 |
- <col id="0" translatable="yes">Weltuntergang</col> |
|
300 |
- <col id="1">99</col> |
|
301 |
- </row> |
|
302 |
- </data> |
|
303 |
- </object> |
|
304 | 304 |
<object class="GtkAdjustment" id="Position"> |
305 | 305 |
<property name="upper">100</property> |
306 | 306 |
<property name="value">50</property> |
... | ... |
@@ -12,6 +12,8 @@ class SyncGui: |
12 | 12 |
def __init__(self): |
13 | 13 |
self.builder = Gtk.Builder() |
14 | 14 |
self.builder.add_from_file(scriptdir + "/sync_gui.glade") |
15 |
+ self.playlistView = self.builder.get_object("PlaylistView") |
|
16 |
+ self.playlistStore = self.builder.get_object("PlaylistStore") |
|
15 | 17 |
self.position = self.builder.get_object("Position") |
16 | 18 |
self.positionScale = self.builder.get_object("PositionScale") |
17 | 19 |
self.positionAt = self.builder.get_object("PositionAt") |
... | ... |
@@ -19,6 +21,7 @@ class SyncGui: |
19 | 21 |
self.btnPause = self.builder.get_object("Pause") |
20 | 22 |
self.btnPlay = self.builder.get_object("Play") |
21 | 23 |
self.status = self.builder.get_object("Status") |
24 |
+ self.configPlaylistColumns() |
|
22 | 25 |
handlers = { |
23 | 26 |
"onDestroy": self.onDestroy, |
24 | 27 |
"onNewPosition": self.onNewPosition, |
... | ... |
@@ -33,9 +36,20 @@ class SyncGui: |
33 | 36 |
self.builder.connect_signals(handlers) |
34 | 37 |
self.playlist = playlist.Playlist() |
35 | 38 |
self.playlist.read("playlist.txt") |
39 |
+ self.playlist.update(self.playlistStore) |
|
36 | 40 |
self.status.push(0, "TODO...") |
37 | 41 |
self.showCurrentPosition() |
38 | 42 |
|
43 |
+ def configPlaylistColumns(self): |
|
44 |
+ i = 0 |
|
45 |
+ for title in ["Name", "Dauer"]: |
|
46 |
+ column = Gtk.TreeViewColumn(title) |
|
47 |
+ self.playlistView.append_column(column) |
|
48 |
+ cell = Gtk.CellRendererText() |
|
49 |
+ column.pack_start(cell, False) |
|
50 |
+ column.add_attribute(cell, "text", i) |
|
51 |
+ i = i + 1 |
|
52 |
+ |
|
39 | 53 |
def showPosition(self, sec): |
40 | 54 |
if sec < 0: |
41 | 55 |
sec = 0 |
42 | 56 |