diff --git a/bin/mpdevil.py b/bin/mpdevil.py
index eff6d29..04b193f 100644
--- a/bin/mpdevil.py
+++ b/bin/mpdevil.py
@@ -105,7 +105,7 @@ class Client(MPDClient):
def album_to_playlist(self, album, artist, year, append, force=False):
if append:
- songs=self.find("album", album, "date", year, "albumartist", artist)
+ songs=self.find("album", album, "date", year, self.settings.get_artist_type(), artist)
if not songs == []:
for song in songs:
self.add(song["file"])
@@ -118,7 +118,7 @@ class Client(MPDClient):
self.delete((1,)) # delete all songs, but the first. #bad song index possible
except:
pass
- songs=self.find("album", album, "date", year, "albumartist", artist)
+ songs=self.find("album", album, "date", year, self.settings.get_artist_type(), artist)
if not songs == []:
for song in songs:
if not song["file"] == self.song_to_delete:
@@ -127,7 +127,7 @@ class Client(MPDClient):
self.move(0, (len(self.playlist())-1))
self.song_to_delete=""
else:
- songs=self.find("album", album, "date", year, "albumartist", artist)
+ songs=self.find("album", album, "date", year, self.settings.get_artist_type(), artist)
if not songs == []:
self.stop()
self.clear()
@@ -252,14 +252,21 @@ class Settings(Gio.Settings):
# return Gtk.IconSize.INVALID
raise ValueError
+ def get_artist_type(self):
+ if self.get_boolean("show-all-artists"):
+ return ("artist")
+ else:
+ return ("albumartist")
+
class AlbumDialog(Gtk.Dialog):
- def __init__(self, parent, client, album, artist, year):
+ def __init__(self, parent, client, settings, album, artist, year):
Gtk.Dialog.__init__(self, title=(artist+" - "+album+" ("+year+")"), transient_for=parent)
self.add_buttons(Gtk.STOCK_ADD, Gtk.ResponseType.ACCEPT, Gtk.STOCK_MEDIA_PLAY, Gtk.ResponseType.YES, Gtk.STOCK_OPEN, Gtk.ResponseType.OK, Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE)
self.set_default_size(800, 600)
#adding vars
self.client=client
+ self.settings=settings
#scroll
scroll=Gtk.ScrolledWindow()
@@ -329,7 +336,7 @@ class AlbumDialog(Gtk.Dialog):
self.client.add(selected_title)
def populate_treeview(self, album, artist, year):
- songs=self.client.find("album", album, "date", year, "albumartist", artist)
+ songs=self.client.find("album", album, "date", year, self.settings.get_artist_type(), artist)
if not songs == []:
for song in songs:
try:
@@ -352,12 +359,13 @@ class AlbumDialog(Gtk.Dialog):
self.store.append([track, title, artist, duration, song["file"]] )
class ArtistView(Gtk.ScrolledWindow):
- def __init__(self, client, emitter):
+ def __init__(self, client, settings, emitter):
Gtk.ScrolledWindow.__init__(self)
self.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
#adding vars
self.client=client
+ self.settings=settings
self.emitter=emitter
#artistStore
@@ -367,7 +375,8 @@ class ArtistView(Gtk.ScrolledWindow):
#TreeView
self.treeview = Gtk.TreeView(model=self.store)
- self.treeview.set_search_column(-1)
+ self.treeview.set_search_column(0)
+ self.treeview.columns_autosize()
#artistSelection
self.selection = self.treeview.get_selection()
@@ -377,12 +386,13 @@ class ArtistView(Gtk.ScrolledWindow):
renderer_text = Gtk.CellRendererText()
self.column_name = Gtk.TreeViewColumn(_("Album Artist"), renderer_text, text=0)
self.column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
- self.column_name.set_property("resizable", True)
+ self.column_name.set_property("resizable", False)
self.column_name.set_sort_column_id(0)
self.treeview.append_column(self.column_name)
#connect
self.treeview.connect("enter-notify-event", self.on_enter_event)
+ self.settings.connect("changed::show-all-artists", self.refresh)
self.update_signal=self.emitter.connect("update", self.refresh)
self.add(self.treeview)
@@ -393,7 +403,7 @@ class ArtistView(Gtk.ScrolledWindow):
def refresh(self, *args):
self.selection.set_mode(Gtk.SelectionMode.NONE)
self.clear()
- for artist in self.client.list("albumartist"):
+ for artist in self.client.list(self.settings.get_artist_type()):
self.store.append([artist])
self.selection.set_mode(Gtk.SelectionMode.MULTIPLE)
@@ -449,7 +459,7 @@ class AlbumIconView(Gtk.IconView):
self.set_tooltip_column(-1)
def gen_tooltip(self, album, artist, year):
- songs=self.client.find("album", album, "date", year, "albumartist", artist)
+ songs=self.client.find("album", album, "date", year, self.settings.get_artist_type(), artist)
length=float(0)
for song in songs:
try:
@@ -466,12 +476,12 @@ class AlbumIconView(Gtk.IconView):
size=self.settings.get_int("album-cover")
albums=[]
for artist in artists:
- for album in self.client.list("album", "albumartist", artist):
- albums.append({"artist": artist, "album": album, "year": self.client.list("date", "album", album, "albumartist", artist)[0]})
+ for album in self.client.list("album", self.settings.get_artist_type(), artist):
+ albums.append({"artist": artist, "album": album, "year": self.client.list("date", "album", album, self.settings.get_artist_type(), artist)[0]})
albums = sorted(albums, key=lambda k: k['year'])
for album in albums:
if self.client.connected() and not self.stop_flag: #self.get_visible() and self.client.connected() and
- songs=self.client.find("album", album["album"], "date", album["year"], "albumartist", album["artist"])
+ songs=self.client.find("album", album["album"], "date", album["year"], self.settings.get_artist_type(), album["artist"])
if songs == []:
song_file=None
else:
@@ -518,7 +528,7 @@ class AlbumIconView(Gtk.IconView):
self.client.album_to_playlist(selected_album, selected_artist, selected_album_year, True)
elif event.button == 3:
if self.client.connected():
- album = AlbumDialog(self.window, self.client, selected_album, selected_artist, selected_album_year)
+ album = AlbumDialog(self.window, self.client, self.settings, selected_album, selected_artist, selected_album_year)
response = album.run()
if response == Gtk.ResponseType.OK:
self.select_path(path)
@@ -589,10 +599,10 @@ class AlbumView(Gtk.ScrolledWindow):
class TrackView(Gtk.Box):
def __init__(self, client, settings, emitter, window):
Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL)
- self.settings = settings
#adding vars
self.client=client
+ self.settings = settings
self.emitter=emitter
self.window=window
self.hovered_songpos=None
@@ -761,7 +771,7 @@ class TrackView(Gtk.Box):
song=self.client.currentsong()
if not song == {}:
try:
- artist=song["albumartist"]
+ artist=song[self.settings.get_artist_type()]
except:
artist=""
try:
@@ -777,7 +787,7 @@ class TrackView(Gtk.Box):
elif event.button == 2:
self.client.album_to_playlist(album, artist, album_year, True)
elif event.button == 3:
- album_dialog = AlbumDialog(self.window, self.client, album, artist, album_year)
+ album_dialog = AlbumDialog(self.window, self.client, self.settings, album, artist, album_year)
response = album_dialog.run()
if response == Gtk.ResponseType.OK:
self.client.album_to_playlist(album, artist, album_year, False)
@@ -851,7 +861,7 @@ class Browser(Gtk.Box):
self.window=window
#widgets
- self.artist_list=ArtistView(self.client, self.emitter)
+ self.artist_list=ArtistView(self.client, self.settings, self.emitter)
self.album_list=AlbumView(self.client, self.settings, self.window)
self.title_list=TrackView(self.client, self.settings, self.emitter, self.window)
@@ -893,7 +903,7 @@ class Browser(Gtk.Box):
for i in range(0, row_num):
path=Gtk.TreePath(i)
treeiter = self.artist_list.store.get_iter(path)
- if self.artist_list.store.get_value(treeiter, 0) == song["albumartist"]:
+ if self.artist_list.store.get_value(treeiter, 0) == song[self.settings.get_artist_type()]:
if not self.artist_list.selection.iter_is_selected(treeiter):
self.artist_list.selection.handler_block(self.artist_change)
self.artist_list.selection.unselect_all()
@@ -1094,6 +1104,9 @@ class GeneralSettings(Gtk.Grid):
show_album_view_tooltips=Gtk.CheckButton(label=_("Show tooltips in album view"))
show_album_view_tooltips.set_active(self.settings.get_boolean("show-album-view-tooltips"))
+ show_all_artists=Gtk.CheckButton(label=_("Show all artists"))
+ show_all_artists.set_active(self.settings.get_boolean("show-all-artists"))
+
send_notify=Gtk.CheckButton(label=_("Send notification on title change"))
send_notify.set_active(self.settings.get_boolean("send-notify"))
@@ -1109,6 +1122,7 @@ class GeneralSettings(Gtk.Grid):
icon_size_combo.connect("changed", self.on_icon_size_changed)
show_stop.connect("toggled", self.on_toggled, "show-stop")
show_album_view_tooltips.connect("toggled", self.on_toggled, "show-album-view-tooltips")
+ show_all_artists.connect("toggled", self.on_toggled, "show-all-artists")
send_notify.connect("toggled", self.on_toggled, "send-notify")
stop_on_quit.connect("toggled", self.on_toggled, "stop-on-quit")
add_album.connect("toggled", self.on_toggled, "add-album")
@@ -1122,7 +1136,8 @@ class GeneralSettings(Gtk.Grid):
self.attach_next_to(icon_size_combo, icon_size_label, Gtk.PositionType.RIGHT, 1, 1)
self.attach_next_to(show_stop, icon_size_label, Gtk.PositionType.BOTTOM, 2, 1)
self.attach_next_to(show_album_view_tooltips, show_stop, Gtk.PositionType.BOTTOM, 2, 1)
- self.attach_next_to(send_notify, show_album_view_tooltips, Gtk.PositionType.BOTTOM, 2, 1)
+ self.attach_next_to(show_all_artists, show_album_view_tooltips, Gtk.PositionType.BOTTOM, 2, 1)
+ self.attach_next_to(send_notify, show_all_artists, Gtk.PositionType.BOTTOM, 2, 1)
self.attach_next_to(add_album, send_notify, Gtk.PositionType.BOTTOM, 2, 1)
self.attach_next_to(stop_on_quit, add_album, Gtk.PositionType.BOTTOM, 2, 1)
diff --git a/data/org.mpdevil.gschema.xml b/data/org.mpdevil.gschema.xml
index cd9550a..172b61a 100644
--- a/data/org.mpdevil.gschema.xml
+++ b/data/org.mpdevil.gschema.xml
@@ -61,6 +61,11 @@
Add selected album instead of playing
+
+ false
+ Show all artists instead of albumartists
+
+
0
Active profile