From bc65e1b446ddfe0abcaa6661fe7d646d6b4ffd34 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Fri, 5 Oct 2018 15:12:13 +0300 Subject: [PATCH] added prev and next buttons for the stream player --- app/ui/main_app_window.py | 64 +++++++++++++++++++++--------------- app/ui/main_window.glade | 56 +++++++++++++++++++++++-------- app/ui/settings_dialog.glade | 32 +++++++++++++----- 3 files changed, 104 insertions(+), 48 deletions(-) diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py index 771c3a79..9f068be6 100644 --- a/app/ui/main_app_window.py +++ b/app/ui/main_app_window.py @@ -129,6 +129,8 @@ class MainAppWindow: "on_play_stream": self.on_play_stream, "on_player_play": self.on_player_play, "on_player_stop": self.on_player_stop, + "on_player_previous": self.on_player_previous, + "on_player_next": self.on_player_next, "on_player_close": self.on_player_close, "on_player_press": self.on_player_press, "on_full_screen": self.on_full_screen, @@ -1203,42 +1205,52 @@ class MainAppWindow: @run_idle def on_player_play(self, item=None): - self.play() + url = self.get_stream_url() + if not url: + return + self.play(url) - def play(self): + def play(self, url): + if not self._player: + try: + self._player = Player() + except (NameError, AttributeError): + show_dialog(DialogType.ERROR, self._main_window, "No VLC is found. Check that it is installed!") + return + else: + if self._drawing_area_xid: + self._player.set_xwindow(self._drawing_area_xid) + self._services_main_box.set_visible(False) + self._bouquets_main_box.set_visible(False) + w, h = self._main_window.get_size() + self._player_box.set_size_request(w * 0.6, -1) + + self._player_box.set_visible(True) + + if self._player.is_playing(): + self.on_player_stop() + + GLib.idle_add(self._player.play, url, priority=GLib.PRIORITY_LOW) + + def get_stream_url(self): path, column = self._fav_view.get_cursor() if path: row = self._fav_model[path][:] if row[5] == BqServiceType.IPTV.name: - url = get_iptv_url(row, Profile(self._profile)) - if not url: - return - - if not self._player: - try: - self._player = Player() - except (NameError, AttributeError): - show_dialog(DialogType.ERROR, self._main_window, "No VLC is found. Check that it is installed!") - return - else: - if self._drawing_area_xid: - self._player.set_xwindow(self._drawing_area_xid) - self._services_main_box.set_visible(False) - self._bouquets_main_box.set_visible(False) - w, h = self._main_window.get_size() - self._player_box.set_size_request(w * 0.6, -1) - - self._player_box.set_visible(True) - - if self._player.is_playing(): - self.on_player_stop() - - GLib.idle_add(self._player.play, url, priority=GLib.PRIORITY_LOW) + return get_iptv_url(row, Profile(self._profile)) def on_player_stop(self, item=None): if self._player: self._player.stop() + def on_player_previous(self, item): + if self._fav_view.do_move_cursor(self._fav_view, Gtk.MovementStep.DISPLAY_LINES, -1): + self.on_play_stream() + + def on_player_next(self, item): + if self._fav_view.do_move_cursor(self._fav_view, Gtk.MovementStep.DISPLAY_LINES, 1): + self.on_play_stream() + def on_player_close(self, item=None): if self._player: self._player.release() diff --git a/app/ui/main_window.glade b/app/ui/main_window.glade index 251d65e0..dd5abeee 100644 --- a/app/ui/main_window.glade +++ b/app/ui/main_window.glade @@ -1211,7 +1211,7 @@ Author: Dmitriy Yefremov True - True + False 320 @@ -1236,7 +1236,7 @@ Author: Dmitriy Yefremov True False - + True False @@ -1249,10 +1249,10 @@ Author: Dmitriy Yefremov - + True False - True + Play gtk-media-play @@ -1262,10 +1262,10 @@ Author: Dmitriy Yefremov - + True False - True + Stop playback True gtk-media-stop @@ -1276,7 +1276,35 @@ Author: Dmitriy Yefremov - + + True + False + Previous stream in the list + True + gtk-media-previous + + + + False + True + + + + + True + False + Next stream in the list + True + gtk-media-next + + + + False + True + + + + True False @@ -1289,10 +1317,10 @@ Author: Dmitriy Yefremov - + True False - True + Toggle the video in fullscreen True gtk-fullscreen @@ -1303,11 +1331,11 @@ Author: Dmitriy Yefremov - + True False + Close 15 - True True gtk-close @@ -1537,7 +1565,7 @@ Author: Dmitriy Yefremov True - True + False in @@ -2036,7 +2064,7 @@ Author: Dmitriy Yefremov True - True + False 2 in @@ -2274,7 +2302,7 @@ Author: Dmitriy Yefremov True - True + False 2 in diff --git a/app/ui/settings_dialog.glade b/app/ui/settings_dialog.glade index a79b7341..f0394744 100644 --- a/app/ui/settings_dialog.glade +++ b/app/ui/settings_dialog.glade @@ -1,21 +1,37 @@ - - + + - + + True