[gnome-music/wip/mschraal/core] coremodel: Make all models properties
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/wip/mschraal/core] coremodel: Make all models properties
- Date: Tue, 2 Jul 2019 15:01:31 +0000 (UTC)
commit aeae01f1d5fd1cf803a850b8a1d003f269e52184
Author: Marinus Schraal <mschraal gnome org>
Date: Tue Jul 2 15:28:06 2019 +0200
coremodel: Make all models properties
Saves us passing around a bunch of variables.
gnomemusic/coredisc.py | 4 +-
gnomemusic/coregrilo.py | 18 ++-----
gnomemusic/coremodel.py | 77 +++++++++++++++++++---------
gnomemusic/grilowrappers/grldleynasource.py | 10 ++--
gnomemusic/grilowrappers/grltrackersource.py | 16 +++---
gnomemusic/player.py | 2 +-
gnomemusic/views/albumsview.py | 2 +-
gnomemusic/views/artistsview.py | 2 +-
gnomemusic/views/searchview.py | 6 +--
gnomemusic/views/songsview.py | 6 +--
10 files changed, 79 insertions(+), 64 deletions(-)
---
diff --git a/gnomemusic/coredisc.py b/gnomemusic/coredisc.py
index 5478ee9e..58be6130 100644
--- a/gnomemusic/coredisc.py
+++ b/gnomemusic/coredisc.py
@@ -28,7 +28,7 @@ class CoreDisc(GObject.GObject):
def model(self):
if self._model is None:
self._filter_model = Dazzle.ListModelFilter.new(
- self._coremodel.get_model())
+ self._coremodel.props.songs)
self._filter_model.set_filter_func(lambda a: False)
self._sort_model = Gfm.SortListModel.new(self._filter_model)
self._sort_model.set_sort_func(
@@ -36,7 +36,7 @@ class CoreDisc(GObject.GObject):
self._model = self._sort_model
- self._coremodel.get_model().connect(
+ self._coremodel.props.songs.connect(
"items-changed", self._on_core_changed)
self._model.connect("items-changed", self._on_disc_changed)
diff --git a/gnomemusic/coregrilo.py b/gnomemusic/coregrilo.py
index 134a545a..f4a8210e 100644
--- a/gnomemusic/coregrilo.py
+++ b/gnomemusic/coregrilo.py
@@ -11,19 +11,12 @@ class CoreGrilo(GObject.GObject):
def __repr__(self):
return "<CoreGrilo>"
- def __init__(
- self, coremodel, model, albums_model, artists_model,
- coreselection, song_search_model, album_search_model):
+ def __init__(self, coremodel, coreselection):
super().__init__()
self._coremodel = coremodel
self._coreselection = coreselection
- self._model = model
self._wrappers = []
- self._albums_model = albums_model
- self._artists_model = artists_model
- self._song_search_model = song_search_model
- self._album_search_model = album_search_model
Grl.init(None)
@@ -36,15 +29,10 @@ class CoreGrilo(GObject.GObject):
if source.props.source_id == "grl-tracker-source":
new_wrapper = GrlTrackerSource(
- source, self._model, self._albums_model,
- self._artists_model, self._coremodel, self._coreselection,
- self, self._song_search_model, self._album_search_model)
+ source, self._coremodel, self._coreselection, self)
elif source.props.source_id[:10] == "grl-dleyna":
new_wrapper = GrlDLeynaSource(
- source, self._model, self._albums_model,
- self._artists_model, self._coremodel, self._coreselection,
- self, self._song_search_model, self._album_search_model)
-
+ source, self._coremodel, self._coreselection, self)
self._wrappers.append(new_wrapper)
print(new_wrapper, "added")
diff --git a/gnomemusic/coremodel.py b/gnomemusic/coremodel.py
index 0abda1bf..ffdb4273 100644
--- a/gnomemusic/coremodel.py
+++ b/gnomemusic/coremodel.py
@@ -1,6 +1,6 @@
import gi
gi.require_versions({'Dazzle': '1.0', 'Gfm': '0.1'})
-from gi.repository import Dazzle, GObject, Gio, Gfm
+from gi.repository import Dazzle, GObject, Gio, Gfm, Gtk
from gi._gi import pygobject_new_full
from gnomemusic import log
@@ -64,11 +64,7 @@ class CoreModel(GObject.GObject):
self._artist_model)
self._artist_search_model.set_filter_func(lambda a: False)
- print("PLAYLIST_MODEL", self._playlist_model)
- self._grilo = CoreGrilo(
- self, self._model, self._album_model, self._artist_model,
- self._coreselection, self._song_search_model,
- self._album_search_model)
+ self._grilo = CoreGrilo(self, self._coreselection)
def _filter_selected(self, coresong):
return coresong.props.selected
@@ -81,10 +77,6 @@ class CoreModel(GObject.GObject):
name_b = artist_b.props.artist.casefold()
return name_a > name_b
- @log
- def get_model(self):
- return self._model
-
def _wrap_list_store_sort_func(self, func):
def wrap(a, b, *user_data):
@@ -125,9 +117,6 @@ class CoreModel(GObject.GObject):
return albums_model_sort
- def get_playlist_model(self):
- return self._playlist_model_sort
-
def set_playlist_model(self, playlist_type, coresong, model):
with model.freeze_notify():
@@ -193,24 +182,66 @@ class CoreModel(GObject.GObject):
self.emit("playlist-loaded")
- @log
- def get_albums_model(self):
+ def search(self, text):
+ self._grilo.search(text)
+
+ @GObject.Property(
+ type=Gio.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
+ def songs(self):
+ return self._model
+
+ @GObject.Property(
+ type=Gio.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
+ def albums(self):
+ return self._album_model
+
+ @GObject.property(
+ type=Gio.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
+ def artists(self):
+ return self._artist_model
+
+ @GObject.Property(
+ type=Gio.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
+ def playlist(self):
+ return self._playlist_model
+
+ @GObject.Property(
+ type=Gfm.SortListModel, default=None,
+ flags=GObject.ParamFlags.READABLE)
+ def albums_sort(self):
return self._album_model_sort
- def get_artists_model(self):
+ @GObject.property(
+ type=Gfm.SortListModel, default=None,
+ flags=GObject.ParamFlags.READABLE)
+ def artists_sort(self):
return self._artist_model_sort
- def get_songs_model(self):
- return self._songliststore
+ @GObject.Property(
+ type=Gfm.SortListModel, default=None,
+ flags=GObject.ParamFlags.READABLE)
+ def playlist_sort(self):
+ return self._playlist_model_sort
- def get_songs_search_model(self):
+ @GObject.Property(
+ type=Dazzle.ListModelFilter, default=None,
+ flags=GObject.ParamFlags.READABLE)
+ def songs_search(self):
return self._song_search_model
- def get_album_search_model(self):
+ @GObject.Property(
+ type=Dazzle.ListModelFilter, default=None,
+ flags=GObject.ParamFlags.READABLE)
+ def albums_search(self):
return self._album_search_model
- def get_artist_search_model(self):
+ @GObject.property(
+ type=Dazzle.ListModelFilter, default=None,
+ flags=GObject.ParamFlags.READABLE)
+ def artists_search(self):
return self._artist_search_model
- def search(self, text):
- self._grilo.search(text)
+ @GObject.Property(
+ type=Gtk.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
+ def songs_gtkliststore(self):
+ return self._songliststore
diff --git a/gnomemusic/grilowrappers/grldleynasource.py b/gnomemusic/grilowrappers/grldleynasource.py
index 3490d3d0..12defbb7 100644
--- a/gnomemusic/grilowrappers/grldleynasource.py
+++ b/gnomemusic/grilowrappers/grldleynasource.py
@@ -28,19 +28,17 @@ class GrlDLeynaSource(GObject.GObject):
def __repr__(self):
return "<GrlDLeynaSource>"
- def __init__(
- self, source, model, albums_model, artists_model, coremodel,
- core_selection, grilo, song_search_model, album_search_model):
+ def __init__(self, source, coremodel, core_selection, grilo):
super().__init__()
self._coremodel = coremodel
self._core_selection = core_selection
self._grilo = grilo
self._source = source
- self._model = model
- self._albums_model = albums_model
+ self._model = self._coremodel.props.songs
+ self._albums_model = self._coremodel.props.albums
self._album_ids = {}
- self._artists_model = artists_model
+ self._artists_model = self._coremodel.props.artists
Grl.init(None)
diff --git a/gnomemusic/grilowrappers/grltrackersource.py b/gnomemusic/grilowrappers/grltrackersource.py
index 6cd44d4c..fcefcc2d 100644
--- a/gnomemusic/grilowrappers/grltrackersource.py
+++ b/gnomemusic/grilowrappers/grltrackersource.py
@@ -30,23 +30,21 @@ class GrlTrackerSource(GObject.GObject):
def __repr__(self):
return "<GrlTrackerSource>"
- def __init__(
- self, source, model, albums_model, artists_model, coremodel,
- coreselection, grilo, song_search_model, album_search_model):
+ def __init__(self, source, coremodel, coreselection, grilo):
super().__init__()
self._coremodel = coremodel
self._coreselection = coreselection
self._grilo = grilo
self._source = source
- self._model = model
- self._albums_model = albums_model
+ self._model = self._coremodel.props.songs
+ self._albums_model = self._coremodel.props.albums
self._album_ids = {}
- self._artists_model = artists_model
+ self._artists_model = self._coremodel.props.artists
self._hash = {}
- self._song_search_model = song_search_model
- self._album_search_model = album_search_model
- self._artist_search_model = self._coremodel.get_artist_search_model()
+ self._song_search_model = self._coremodel.props.songs_search
+ self._album_search_model = self._coremodel.props.albums_search
+ self._artist_search_model = self._coremodel.props.artists_search
self._fast_options = Grl.OperationOptions()
self._fast_options.set_resolution_flags(
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index 4f019df2..f155b1bd 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -115,7 +115,7 @@ class PlayerPlaylist(GObject.GObject):
# self._discoverer.connect('discovered', self._on_discovered)
# self._discoverer.start()
- self._model = self._app._coremodel.get_playlist_model()
+ self._model = self._app._coremodel.props.playlist_sort
self.connect("notify::repeat-mode", self._on_repeat_mode_changed)
diff --git a/gnomemusic/views/albumsview.py b/gnomemusic/views/albumsview.py
index c591d81e..72dae4db 100644
--- a/gnomemusic/views/albumsview.py
+++ b/gnomemusic/views/albumsview.py
@@ -92,7 +92,7 @@ class AlbumsView(BaseView):
self._box.add(scrolledwin)
- self._model = self._window._app._coremodel.get_albums_model()
+ self._model = self._window._app._coremodel.props.albums_sort
self._view.bind_model(self._model, self._create_widget)
self._view.show()
diff --git a/gnomemusic/views/artistsview.py b/gnomemusic/views/artistsview.py
index f086c882..f9e7e255 100644
--- a/gnomemusic/views/artistsview.py
+++ b/gnomemusic/views/artistsview.py
@@ -62,7 +62,7 @@ class ArtistsView(BaseView):
self._artists = {}
self._window = window
- self._model = window._app._coremodel.get_artists_model()
+ self._model = window._app._coremodel.props.artists_sort
self._sidebar.bind_model(self._model, self._create_widget)
sidebar_container.props.width_request = 220
diff --git a/gnomemusic/views/searchview.py b/gnomemusic/views/searchview.py
index 46ae75fa..a8108f64 100644
--- a/gnomemusic/views/searchview.py
+++ b/gnomemusic/views/searchview.py
@@ -46,9 +46,9 @@ class SearchView(BaseView):
@log
def __init__(self, window, player):
self._coremodel = window._app._coremodel
- self._model = self._coremodel.get_songs_search_model()
- self._album_model = self._coremodel.get_album_search_model()
- self._artist_model = self._coremodel.get_artist_search_model()
+ self._model = self._coremodel.props.songs_search
+ self._album_model = self._coremodel.props.albums_search
+ self._artist_model = self._coremodel.props.artists_search
super().__init__('search', None, window)
self.player = player
diff --git a/gnomemusic/views/songsview.py b/gnomemusic/views/songsview.py
index 89f07cfb..bb7594d5 100644
--- a/gnomemusic/views/songsview.py
+++ b/gnomemusic/views/songsview.py
@@ -53,6 +53,7 @@ class SongsView(BaseView):
:param player: The main player object
"""
self._window = window
+ self._coremodel = self._window._app._coremodel
super().__init__('songs', _("Songs"), window)
self._offset = 0
@@ -62,8 +63,7 @@ class SongsView(BaseView):
self._add_list_renderers()
- coremodel = self._window._app._coremodel
- self._playlist_model = coremodel.get_playlist_model()
+ self._playlist_model = self._coremodel.props.playlist
self.player = player
self.player.connect('song-changed', self._update_model)
@@ -80,7 +80,7 @@ class SongsView(BaseView):
self._view = Gtk.TreeView()
self._view.props.headers_visible = False
self._view.props.valign = Gtk.Align.START
- self._view.props.model = self._window._app._coremodel.get_songs_model()
+ self._view.props.model = self._coremodel.props.songs_gtkliststore
self._view.props.activate_on_single_click = True
self._ctrl = Gtk.GestureMultiPress().new(self._view)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]