From 96e3b3bfe9e9b82beefeb8748b69e9df169a4f1b Mon Sep 17 00:00:00 2001 From: auouymous Date: Wed, 25 Jan 2023 19:26:23 -0700 Subject: [PATCH] Allow channel to be selected from both episode menus. Closes #1170. --- share/gpodder/ui/gtk/menus.ui | 4 ++++ src/gpodder/gtkui/main.py | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/share/gpodder/ui/gtk/menus.ui b/share/gpodder/ui/gtk/menus.ui index a252619f..c3f3d2f7 100644 --- a/share/gpodder/ui/gtk/menus.ui +++ b/share/gpodder/ui/gtk/menus.ui @@ -149,6 +149,10 @@ win.openEpisodeDownloadFolder Open download folder + + win.selectChannel + Select channel +
diff --git a/src/gpodder/gtkui/main.py b/src/gpodder/gtkui/main.py index ba71d89d..6e13be05 100644 --- a/src/gpodder/gtkui/main.py +++ b/src/gpodder/gtkui/main.py @@ -351,6 +351,7 @@ class gPodder(BuilderWidget, dbus.service.Object): ('toggleEpisodeNew', self.on_item_toggle_played_activate), ('toggleEpisodeLock', self.on_item_toggle_lock_activate), ('openEpisodeDownloadFolder', self.on_open_episode_download_folder), + ('selectChannel', self.on_select_channel_of_episode), ('findEpisode', self.on_find_episode_activate), ('toggleShownotes', self.on_shownotes_selected_episodes), # Extras @@ -378,6 +379,7 @@ class gPodder(BuilderWidget, dbus.service.Object): self.toggle_episode_new_action = g.lookup_action('toggleEpisodeNew') self.toggle_episode_lock_action = g.lookup_action('toggleEpisodeLock') self.open_episode_download_folder_action = g.lookup_action('openEpisodeDownloadFolder') + self.select_channel_of_episode_action = g.lookup_action('selectChannel') # Extras def inject_extensions_menu(self): @@ -1837,6 +1839,16 @@ class gPodder(BuilderWidget, dbus.service.Object): assert len(episodes) == 1 util.gui_open(episodes[0].parent.save_dir, gui=self) + def on_select_channel_of_episode(self, unused1=None, unused2=None): + episodes = self.get_selected_episodes() + assert len(episodes) == 1 + channel = episodes[0].parent + # Focus channel list + self.treeChannels.grab_focus() + # Select channel in list + path = self.podcast_list_model.get_filter_path_from_url(channel.url) + self.treeChannels.set_cursor(path) + def treeview_channels_show_context_menu(self, treeview, event=None): model, paths = self.treeview_handle_context_menu_click(treeview, event) if not paths: @@ -2165,6 +2177,10 @@ class gPodder(BuilderWidget, dbus.service.Object): item.connect('activate', self.on_open_episode_download_folder) menu.append(item) + item = Gtk.MenuItem(_('Select channel')) + item.connect('activate', self.on_select_channel_of_episode) + menu.append(item) + menu.attach_to_widget(treeview) menu.show_all() # Disable tooltips while we are showing the menu, so @@ -2216,6 +2232,7 @@ class gPodder(BuilderWidget, dbus.service.Object): self.toggle_episode_new_action.set_enabled(is_episode_selected) self.toggle_episode_lock_action.set_enabled(can_lock) self.open_episode_download_folder_action.set_enabled(len(episodes) == 1) + self.select_channel_of_episode_action.set_enabled(len(episodes) == 1) def set_title(self, new_title): self.default_title = new_title