summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Kukkonen <jussi.kukkonen@intel.com>2013-02-20 16:52:38 +0200
committerMark Ryan <mark.d.ryan@intel.com>2013-03-06 15:47:44 +0100
commit6c07cc5fbd2a9ffcbeca37be6a2d06e1e9a59f28 (patch)
treebe4cd9eb0eb5455b325254d6a3be8bbf79d78dc4
parent48328b60c1d355aaf50194feabbabc9264103454 (diff)
downloaddleyna-control-6c07cc5fbd2a9ffcbeca37be6a2d06e1e9a59f28.tar.gz
[Player] Remove Stop-button
Remove "Stop" button: it does not give the user much added value and the relation to pause is not clear to many people (this is why most modern players do not use it). Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
-rw-r--r--src/msd/msd_player.py49
1 files changed, 17 insertions, 32 deletions
diff --git a/src/msd/msd_player.py b/src/msd/msd_player.py
index ac14bcc..6f55551 100644
--- a/src/msd/msd_player.py
+++ b/src/msd/msd_player.py
@@ -114,13 +114,6 @@ class GStreamerWindow(PlayWindowBase):
button_bar = gtk.HBox(True, 0)
- self.__stop_button = gtk.Button()
- self.__stop_button.connect("clicked", self.__stop)
- stop_image = gtk.Image()
- stop_image.set_from_stock(gtk.STOCK_MEDIA_STOP,
- gtk.ICON_SIZE_BUTTON)
- self.__stop_button.add(stop_image)
-
self.__play_pause_button = gtk.Button()
self.__play_pause_button.connect("clicked", self.__play_pause)
self.__play_pause_image = gtk.Image()
@@ -130,8 +123,7 @@ class GStreamerWindow(PlayWindowBase):
self.__scale = gtk.HScale()
- button_bar.pack_start(self.__play_pause_button, True, True, 0)
- button_bar.pack_start(self.__stop_button, True, True, 0)
+ button_bar.pack_start(self.__play_pause_button, True, False, 0)
self.private_area.pack_start(self.__scale, False, False, 0)
self.private_area.pack_start(button_bar, False, False, 0)
@@ -143,35 +135,23 @@ class GStreamerWindow(PlayWindowBase):
self.__adjustment = None
self.player.set_state(gst.STATE_PLAYING)
- def __stop_or_pause(self):
- self.__play_pause_image.set_from_stock(gtk.STOCK_MEDIA_PLAY,
- gtk.ICON_SIZE_BUTTON)
- self.__scale.set_sensitive(True)
- if self.__update_pos_id != 0:
- glib.source_remove(self.__update_pos_id)
- self.__update_pos_id = 0
-
- def __stop(self, button):
- self.player.set_state(gst.STATE_NULL)
- self.__stop_button.set_sensitive(False)
- self.__stop_or_pause()
- if self.__adjustment:
- self.__adjustment.set_value(0)
-
def __play_pause(self, button):
- print (self.player.get_state()[1])
if (self.player.get_state()[1] == gst.STATE_PLAYING):
self.player.set_state(gst.STATE_PAUSED)
- self.__stop_or_pause()
+ self.__play_pause_image.set_from_stock (gtk.STOCK_MEDIA_PLAY,
+ gtk.ICON_SIZE_BUTTON)
+ self.__scale.set_sensitive(True)
+ if self.__update_pos_id != 0:
+ glib.source_remove(self.__update_pos_id)
+ self.__update_pos_id = 0
else:
self.player.set_state(gst.STATE_PLAYING)
self.__play_pause_image.set_from_stock(gtk.STOCK_MEDIA_PAUSE,
gtk.ICON_SIZE_BUTTON)
self.__scale.set_sensitive(False)
- self.__stop_button.set_sensitive(True)
- def __update_pos(self, user_data):
+ def __update_pos(self, user_data=None):
try:
pos = self.player.query_position(gst.FORMAT_TIME, None)[0]
if pos != -1:
@@ -188,12 +168,14 @@ class GStreamerWindow(PlayWindowBase):
self.player.set_state(gst.STATE_NULL)
PlayWindowBase.quit(self, button)
+ def __seek (self, position):
+ self.player.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH,
+ position)
+
def __adjusted(self, adjustment):
(ret, state, pending) = self.player.get_state()
if state != gst.STATE_PLAYING:
- seek_pos = adjustment.get_value() * 1000000000
- self.player.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH,
- seek_pos)
+ self.__seek(adjustment.get_value() * 1000000000)
def __format_time(self, scale, value):
pos = int(self.__adjustment.get_value())
@@ -201,7 +183,8 @@ class GStreamerWindow(PlayWindowBase):
def gs_message_cb(self, bus, message):
if message.type == gst.MESSAGE_EOS or message.type == gst.MESSAGE_ERROR:
- self.__stop(None)
+ self.__seek(0)
+ self.player.set_state(gst.STATE_PAUSED)
elif message.type == gst.MESSAGE_STATE_CHANGED:
(old, state, pending) = message.parse_state_changed()
if self.__duration == -1 and (state == gst.STATE_PLAYING or
@@ -227,6 +210,8 @@ class GStreamerWindow(PlayWindowBase):
self.__update_pos_id = glib.timeout_add(500,
self.__update_pos,
None)
+ elif message.type == gst.MESSAGE_ASYNC_DONE:
+ self.__update_pos()
class PlayWindowAudio(GStreamerWindow):