[gnome-music] albumwidget: Add composer field
- From: Marinus Schraal <mschraal src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music] albumwidget: Add composer field
- Date: Wed, 2 Nov 2016 13:37:45 +0000 (UTC)
commit b64ce0a605ded643d25b0efeac7bc4107b990160
Author: Marinus Schraal <mschraal src gnome org>
Date: Sun Oct 30 23:57:17 2016 +0100
albumwidget: Add composer field
https://bugzilla.gnome.org/show_bug.cgi?id=705094
data/AlbumWidget.ui | 82 +++++++++++++++++++------------------
gnomemusic/grilo.py | 1 +
gnomemusic/query.py | 2 +
gnomemusic/widgets/albumwidget.py | 19 +++++++++
4 files changed, 64 insertions(+), 40 deletions(-)
---
diff --git a/data/AlbumWidget.ui b/data/AlbumWidget.ui
index ceab6ca..5767110 100644
--- a/data/AlbumWidget.ui
+++ b/data/AlbumWidget.ui
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.20.0 -->
<interface domain="gnome-music">
- <!-- interface-requires gtk+ 3.12 -->
+ <requires lib="gtk+" version="3.12"/>
<object class="GtkBox" id="AlbumWidget">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="orientation">horizontal</property>
<child>
<object class="GtkBox" id="albumInfo">
<property name="visible">True</property>
@@ -15,15 +15,14 @@
<property name="margin_top">64</property>
<property name="margin_bottom">32</property>
<property name="vexpand">True</property>
- <property name="orientation">horizontal</property>
<child>
<object class="GtkBox" id="albumDetails">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
- <property name="spacing">18</property>
<property name="orientation">vertical</property>
+ <property name="spacing">18</property>
<child>
<object class="GtkImage" id="cover">
<property name="visible">True</property>
@@ -46,8 +45,8 @@
<property name="can_focus">False</property>
<property name="halign">center</property>
<property name="valign">start</property>
- <property name="spacing">3</property>
<property name="orientation">vertical</property>
+ <property name="spacing">3</property>
<child>
<object class="GtkLabel" id="title_label">
<property name="visible">True</property>
@@ -73,13 +72,13 @@
<property name="halign">center</property>
<property name="justify">center</property>
<property name="ellipsize">middle</property>
- <style>
- <class name="dim-label"/>
- </style>
<attributes>
<attribute name="weight" value="bold"/>
<attribute name="scale" value="1.2"/>
</attributes>
+ <style>
+ <class name="dim-label"/>
+ </style>
</object>
<packing>
<property name="expand">False</property>
@@ -100,14 +99,12 @@
<property name="can_focus">False</property>
<property name="margin_top">21</property>
<property name="column_spacing">32</property>
- <property name="row_homogeneous">True</property>
<property name="column_homogeneous">True</property>
<child>
<object class="GtkLabel" id="released_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
- <property name="xalign">1</property>
<property name="margin_top">2</property>
<property name="margin_bottom">2</property>
<property name="label" translatable="yes">Released</property>
@@ -119,8 +116,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
@@ -128,7 +123,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">end</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes">Running Length</property>
<property name="use_markup">True</property>
<style>
@@ -138,8 +132,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
@@ -147,7 +139,6 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
- <property name="xalign">0</property>
<property name="margin_top">2</property>
<property name="margin_bottom">2</property>
<property name="label">----</property>
@@ -155,8 +146,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
@@ -164,14 +153,45 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
- <property name="xalign">0</property>
<property name="label">--:--</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="composer_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="halign">end</property>
+ <property name="margin_top">2</property>
+ <property name="margin_bottom">2</property>
+ <property name="label" translatable="yes">Composer</property>
+ <property name="use_markup">True</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="composer_info">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="no_show_all">True</property>
+ <property name="halign">start</property>
+ <property name="margin_top">2</property>
+ <property name="margin_bottom">2</property>
+ <property name="ellipsize">end</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
</packing>
</child>
</object>
@@ -202,7 +222,6 @@
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="hscrollbar_policy">never</property>
- <property name="window_placement">top-left</property>
<child>
<object class="GtkViewport" id="view">
<property name="width_request">600</property>
@@ -210,6 +229,7 @@
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
+ <property name="shadow_type">none</property>
<child>
<placeholder/>
</child>
@@ -223,22 +243,4 @@
</packing>
</child>
</object>
- <object class="GtkListStore" id="AlbumWidget_model">
- <columns>
- <!-- column-name gchararray1 -->
- <column type="gchararray"/>
- <!-- column-name gchararray2 -->
- <column type="gchararray"/>
- <!-- column-name gchararray3 -->
- <column type="gchararray"/>
- <!-- column-name gboolean1 -->
- <column type="gboolean"/>
- <!-- column-name gchararray4 -->
- <column type="gchararray"/>
- <!-- column-name GObject1 -->
- <column type="GObject"/>
- <!-- column-name gboolean2 -->
- <column type="gboolean"/>
- </columns>
- </object>
</interface>
diff --git a/gnomemusic/grilo.py b/gnomemusic/grilo.py
index b71d568..7d32264 100644
--- a/gnomemusic/grilo.py
+++ b/gnomemusic/grilo.py
@@ -55,6 +55,7 @@ class Grilo(GObject.GObject):
Grl.METADATA_KEY_ALBUM_DISC_NUMBER,
Grl.METADATA_KEY_ARTIST,
Grl.METADATA_KEY_CREATION_DATE,
+ Grl.METADATA_KEY_COMPOSER,
Grl.METADATA_KEY_DURATION,
Grl.METADATA_KEY_ID,
Grl.METADATA_KEY_LYRICS,
diff --git a/gnomemusic/query.py b/gnomemusic/query.py
index 380a798..b145d8f 100644
--- a/gnomemusic/query.py
+++ b/gnomemusic/query.py
@@ -141,6 +141,7 @@ class Query():
rdf:type(?album)
tracker:id(?album) AS ?id
nmm:artistName(?albumArtist) AS ?album_artist
+ nmm:artistName(?composer) AS ?composer
nmm:artistName(?performer) AS ?artist
?title
COUNT(?song) AS ?childcount
@@ -156,6 +157,7 @@ class Query():
BIND(LCASE(nmm:artistName(?albumArtist)) AS ?artist_lower) .
BIND((%(album_order)s) AS ?album_collation) .
BIND((%(artist_order)s) AS ?artist_collation) .
+ OPTIONAL { ?song nmm:composer ?composer . }
FILTER(STRSTARTS(nie:url(?song), '%(music_dir)s/'))
}
GROUP BY ?album
diff --git a/gnomemusic/widgets/albumwidget.py b/gnomemusic/widgets/albumwidget.py
index 3cb3934..0b7c035 100644
--- a/gnomemusic/widgets/albumwidget.py
+++ b/gnomemusic/widgets/albumwidget.py
@@ -78,6 +78,9 @@ class AlbumWidget(Gtk.EventBox):
self._header_bar = None
self._selection_mode_allowed = True
+ self._composer_label = self._builder.get_object('composer_label')
+ self._composer_info = self._builder.get_object('composer_info')
+
view_box = self._builder.get_object('view')
self._disc_listbox = DiscListBox()
self._disc_listbox.set_selection_mode_allowed(True)
@@ -156,14 +159,30 @@ class AlbumWidget(Gtk.EventBox):
escaped_album = GLib.markup_escape_text(album)
self._builder.get_object('artist_label').set_markup(escaped_artist)
self._builder.get_object('title_label').set_markup(escaped_album)
+
if (item.get_creation_date()):
self._builder.get_object('released_label_info').set_text(
str(item.get_creation_date().get_year()))
else:
self._builder.get_object('released_label_info').set_text('----')
+
+ self._set_composer_label(item)
+
self._player.connect('playlist-item-changed', self._update_model)
@log
+ def _set_composer_label(self, item):
+ composer = item.get_composer()
+ show = False
+
+ if composer:
+ self._composer_info.set_text(composer)
+ show = True
+
+ self._composer_label.set_visible(show)
+ self._composer_info.set_visible(show)
+
+ @log
def _on_selection_changed(self, widget):
items = self._disc_listbox.get_selected_items()
self.selection_toolbar._add_to_playlist_button.set_sensitive(
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]