From 621134403678c878a43f182a3893e4e8cd67e9ab Mon Sep 17 00:00:00 2001 From: DaPigGuy Date: Sat, 1 Apr 2023 16:39:34 -0700 Subject: [PATCH] Use property bindings where possible --- source/monophony/frontend/pages/library_page.py | 10 +++------- source/monophony/frontend/pages/search_page.py | 4 ++-- source/monophony/frontend/widgets/player.py | 9 +++------ source/monophony/frontend/widgets/song_row.py | 8 ++------ 4 files changed, 10 insertions(+), 21 deletions(-) diff --git a/source/monophony/frontend/pages/library_page.py b/source/monophony/frontend/pages/library_page.py index a0ab940..4cdbb1b 100644 --- a/source/monophony/frontend/pages/library_page.py +++ b/source/monophony/frontend/pages/library_page.py @@ -4,7 +4,7 @@ from monophony.frontend.widgets.group_row import MonophonyGroupRow import gi gi.require_version('Adw', '1') gi.require_version('Gtk', '4.0') -from gi.repository import Adw, GLib, Gtk +from gi.repository import Adw, GLib, GObject, Gtk class MonophonyLibraryPage(Gtk.Box): @@ -24,6 +24,7 @@ class MonophonyLibraryPage(Gtk.Box): self.pge_status.set_icon_name('io.gitlab.zehkira.Monophony') self.pge_status.set_title(_('Your Library is Empty')) self.pge_status.set_description(_('Find songs to play using the search bar above')) + self.pge_status.bind_property('visible', self.box_meta, 'visible', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.INVERT_BOOLEAN) self.append(self.pge_status) self.btn_play = Gtk.Button.new_with_label(_('Play All')) @@ -66,11 +67,6 @@ class MonophonyLibraryPage(Gtk.Box): self.playlist_widgets.append(new_widget) self.box_playlists.add(new_widget) - if self.playlist_widgets: - self.box_meta.show() - self.pge_status.hide() - else: - self.box_meta.hide() - self.pge_status.show() + self.box_meta.set_visible(len(self.playlist_widgets) > 0) return True diff --git a/source/monophony/frontend/pages/search_page.py b/source/monophony/frontend/pages/search_page.py index 29f7349..c302df2 100644 --- a/source/monophony/frontend/pages/search_page.py +++ b/source/monophony/frontend/pages/search_page.py @@ -6,7 +6,7 @@ from monophony.frontend.widgets.artist_row import MonophonyArtistRow import gi gi.require_version('Adw', '1') gi.require_version('Gtk', '4.0') -from gi.repository import Adw, GLib, Gtk +from gi.repository import Adw, GLib, GObject, Gtk class MonophonySearchPage(Gtk.Box): @@ -24,10 +24,10 @@ class MonophonySearchPage(Gtk.Box): spn_loading.set_halign(Gtk.Align.CENTER) spn_loading.set_valign(Gtk.Align.CENTER) spn_loading.set_vexpand(True) - spn_loading.set_spinning(True) self.box_loading = Gtk.Box(orientation = Gtk.Orientation.VERTICAL) self.box_loading.set_margin_bottom(10) self.box_loading.append(spn_loading) + self.box_loading.bind_property('visible', spn_loading, 'spinning', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL) self.append(self.box_loading) self.box_loading.hide() diff --git a/source/monophony/frontend/widgets/player.py b/source/monophony/frontend/widgets/player.py index 913cc20..0985b70 100644 --- a/source/monophony/frontend/widgets/player.py +++ b/source/monophony/frontend/widgets/player.py @@ -3,7 +3,7 @@ from monophony.frontend.widgets.song_popover import MonophonySongPopover import gi gi.require_version('Gtk', '4.0') -from gi.repository import Gdk, Gio, GLib, Gtk, Pango +from gi.repository import Gdk, Gio, GLib, GObject, Gtk, Pango class MonophonyPlayer(Gtk.Box): @@ -16,7 +16,7 @@ class MonophonyPlayer(Gtk.Box): self.spn_loading.set_halign(Gtk.Align.START) self.spn_loading.set_margin_start(10) self.spn_loading.set_margin_end(10) - self.spn_loading.start() + self.spn_loading.bind_property('visible', self.spn_loading, 'spinning', 0) self.spn_loading.hide() box_info = Gtk.Box(orientation = Gtk.Orientation.VERTICAL) @@ -45,6 +45,7 @@ class MonophonyPlayer(Gtk.Box): self.box_sng_info = Gtk.Box(orientation = Gtk.Orientation.VERTICAL) self.box_sng_info.append(self.lnk_title) self.box_sng_info.append(self.lbl_author) + self.box_sng_info.bind_property('visible', self.spn_loading, 'visible', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.INVERT_BOOLEAN) box_info.append(self.box_sng_info) self.btn_pause = Gtk.Button.new_from_icon_name('media-playback-start') @@ -243,12 +244,8 @@ class MonophonyPlayer(Gtk.Box): def update(self) -> True: if self.player.is_busy(): self.box_sng_info.hide() - if not self.spn_loading.get_visible(): - self.spn_loading.show() - self.spn_loading.start() else: self.box_sng_info.show() - self.spn_loading.hide() self.scl_progress.set_value(self.player.get_progress()) if self.player.is_paused(): diff --git a/source/monophony/frontend/widgets/song_row.py b/source/monophony/frontend/widgets/song_row.py index a3f494b..0e73c92 100644 --- a/source/monophony/frontend/widgets/song_row.py +++ b/source/monophony/frontend/widgets/song_row.py @@ -47,6 +47,7 @@ class MonophonySongRow(Adw.ActionRow): btn_more.set_vexpand(False) btn_more.set_valign(Gtk.Align.CENTER) self.spinner = Gtk.Spinner.new() + self.spinner.bind_property('visible', self.spinner, 'spinning', 0) self.add_suffix(self.spinner) self.add_suffix(btn_more) self.set_title(title) @@ -70,11 +71,6 @@ class MonophonySongRow(Adw.ActionRow): def update(self) -> True: if self.editable: - if monophony.backend.cache.is_song_being_cached(self.song['id']): - self.spinner.show() - self.spinner.start() - else: - self.spinner.stop() - self.spinner.hide() + self.spinner.set_visible(monophony.backend.cache.is_song_being_cached(self.song['id'])) return True -- GitLab