Adding an alternative play control while browsing the selection
[watersofshiloah] / src / player.py
1 import logging
2
3 import gobject
4
5
6 _moduleLogger = logging.getLogger(__name__)
7
8
9 class Player(gobject.GObject):
10
11         __gsignals__ = {
12                 'state_change' : (
13                         gobject.SIGNAL_RUN_LAST,
14                         gobject.TYPE_NONE,
15                         (gobject.TYPE_PYOBJECT, ),
16                 ),
17                 'title_change' : (
18                         gobject.SIGNAL_RUN_LAST,
19                         gobject.TYPE_NONE,
20                         (gobject.TYPE_PYOBJECT, ),
21                 ),
22         }
23
24         def __init__(self, index):
25                 gobject.GObject.__init__(self)
26                 self._index = index
27                 self._node = None
28                 self._state = "play"
29
30         def set_piece_by_node(self, node):
31                 assert node.is_leaf() or node is None
32                 if self._node is node:
33                         return
34                 self._node = node
35                 self.emit("title_change", self._state)
36
37         @property
38         def node(self):
39                 return self._node
40
41         @property
42         def title(self):
43                 if self._node is None:
44                         return ""
45                 return self._node.title
46
47         @property
48         def subtitle(self):
49                 if self._node is None:
50                         return ""
51                 return self._node.subtitle
52
53         @property
54         def can_navigate(self):
55                 if self._node is None:
56                         return False
57                 return self.node.can_navigate
58
59         @property
60         def state(self):
61                 return self._state
62
63         def play(self):
64                 if self._state == "play":
65                         return
66                 self._state = "play"
67                 self.emit("state_change", self._state)
68                 _moduleLogger.info("play")
69
70         def pause(self):
71                 if self._state == "pause":
72                         return
73                 self._state = "pause"
74                 self.emit("state_change", self._state)
75                 _moduleLogger.info("pause")
76
77         def stop(self):
78                 if self._state == "stop":
79                         return
80                 self._state = "stop"
81                 self.set_piece_by_node(None)
82                 self.emit("state_change", self._state)
83                 _moduleLogger.info("stop")
84
85         def back(self):
86                 _moduleLogger.info("back")
87
88         def next(self):
89                 _moduleLogger.info("next")
90
91
92 gobject.type_register(Player)