From df4195dc5cc527c41ed3c6a1f798a61478728a0c Mon Sep 17 00:00:00 2001 From: auouymous Date: Sat, 29 Apr 2023 21:41:38 -0600 Subject: [PATCH] Add a View menu option to right align the episode released column. --- share/gpodder/ui/gtk/menus.ui | 4 ++++ src/gpodder/config.py | 1 + src/gpodder/gtkui/main.py | 30 +++++++++++++++++++++++++++--- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/share/gpodder/ui/gtk/menus.ui b/share/gpodder/ui/gtk/menus.ui index a993a049..080563e0 100644 --- a/share/gpodder/ui/gtk/menus.ui +++ b/share/gpodder/ui/gtk/menus.ui @@ -246,6 +246,10 @@ Show episode released time + win.viewRightAlignEpisodeReleasedColumn + Right align episode released column + + win.viewCtrlClickToSortEpisodes Require control click to sort episodes diff --git a/src/gpodder/config.py b/src/gpodder/config.py index b5b6902f..485b392e 100644 --- a/src/gpodder/config.py +++ b/src/gpodder/config.py @@ -172,6 +172,7 @@ defaults = { 'trim_title_prefix': True, 'descriptions': True, 'show_released_time': False, + 'right_align_released_column': False, 'ctrl_click_to_sort': False, 'columns': int('110', 2), # bitfield of visible columns }, diff --git a/src/gpodder/gtkui/main.py b/src/gpodder/gtkui/main.py index 8b53b7d3..ea9c58ce 100644 --- a/src/gpodder/gtkui/main.py +++ b/src/gpodder/gtkui/main.py @@ -194,6 +194,8 @@ class gPodder(BuilderWidget, dbus.service.Object): self.create_actions() + self.releasecell = None + # Init the treeviews that we use self.init_podcast_list_treeview() self.init_episode_list_treeview() @@ -325,6 +327,12 @@ class gPodder(BuilderWidget, dbus.service.Object): g.add_action(action) action = Gio.SimpleAction.new_stateful( + 'viewRightAlignEpisodeReleasedColumn', None, + GLib.Variant.new_boolean(self.config.ui.gtk.episode_list.right_align_released_column)) + action.connect('activate', self.on_item_view_right_align_episode_released_column_toggled) + g.add_action(action) + + action = Gio.SimpleAction.new_stateful( 'viewCtrlClickToSortEpisodes', None, GLib.Variant.new_boolean(self.config.ui.gtk.episode_list.ctrl_click_to_sort)) action.connect('activate', self.on_item_view_ctrl_click_to_sort_episodes_toggled) g.add_action(action) @@ -879,6 +887,14 @@ class gPodder(BuilderWidget, dbus.service.Object): return False + def align_releasecell(self): + if self.config.ui.gtk.episode_list.right_align_released_column: + self.releasecell.set_property('xalign', 1) + self.releasecell.set_property('alignment', Pango.Alignment.RIGHT) + else: + self.releasecell.set_property('xalign', 0) + self.releasecell.set_property('alignment', Pango.Alignment.LEFT) + def init_episode_list_treeview(self): self.episode_list_model.set_view_mode(self.config.ui.gtk.episode_list.view_mode) @@ -930,10 +946,11 @@ class gPodder(BuilderWidget, dbus.service.Object): timecolumn = Gtk.TreeViewColumn(_('Duration'), timecell, text=EpisodeListModel.C_TIME) timecolumn.set_sort_column_id(EpisodeListModel.C_TOTAL_TIME) - releasecell = Gtk.CellRendererText() + self.releasecell = Gtk.CellRendererText() + self.align_releasecell() releasecolumn = Gtk.TreeViewColumn(_('Released')) - releasecolumn.pack_start(releasecell, True) - releasecolumn.add_attribute(releasecell, 'markup', EpisodeListModel.C_PUBLISHED_TEXT) + releasecolumn.pack_start(self.releasecell, True) + releasecolumn.add_attribute(self.releasecell, 'markup', EpisodeListModel.C_PUBLISHED_TEXT) releasecolumn.set_sort_column_id(EpisodeListModel.C_PUBLISHED) sizetimecell = Gtk.CellRendererText() @@ -3520,6 +3537,13 @@ class gPodder(BuilderWidget, dbus.service.Object): self.config.ui.gtk.episode_list.show_released_time = not state action.set_state(GLib.Variant.new_boolean(not state)) + def on_item_view_right_align_episode_released_column_toggled(self, action, param): + state = action.get_state() + self.config.ui.gtk.episode_list.right_align_released_column = not state + action.set_state(GLib.Variant.new_boolean(not state)) + self.align_releasecell() + self.treeAvailable.queue_draw() + def on_item_view_ctrl_click_to_sort_episodes_toggled(self, action, param): state = action.get_state() self.config.ui.gtk.episode_list.ctrl_click_to_sort = not state -- 2.11.4.GIT