[gnome-music] widgets: Use CSS instead of markup



commit 10ed52ea01527eaf4ae9af0bb59e2af39d0b84e9
Author: Bruce Cowan <bruce bcowan me uk>
Date:   Wed Apr 18 13:37:48 2018 +0100

    widgets: Use CSS instead of markup
    
    Instead of using embedded markup in the labels, use style classes.
    Add two new style classes for this purpose.
    
    Fixes #163

 data/ArtistAlbumWidget.ui                |  9 ++++++---
 data/TrackWidget.ui                      |  3 +++
 data/application.css                     |  5 +++++
 gnomemusic/widgets/albumwidget.py        | 14 +++++++-------
 gnomemusic/widgets/artistalbumswidget.py | 22 +++++++++++-----------
 gnomemusic/widgets/artistalbumwidget.py  |  3 +--
 gnomemusic/widgets/disclistboxwidget.py  |  6 ++----
 7 files changed, 35 insertions(+), 27 deletions(-)
---
diff --git a/data/ArtistAlbumWidget.ui b/data/ArtistAlbumWidget.ui
index e9be6565..203ab19c 100644
--- a/data/ArtistAlbumWidget.ui
+++ b/data/ArtistAlbumWidget.ui
@@ -58,9 +58,9 @@
                 <property name="can_focus">False</property>
                 <property name="xalign">0</property>
                 <property name="yalign">0</property>
-                <attributes>
-                  <attribute name="foreground" value="#bababdbdb6b6"/>
-                </attributes>
+                <style>
+                  <class name="dim-label"/>
+                </style>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -107,6 +107,9 @@
         <property name="halign">start</property>
         <property name="margin_start">60</property>
         <property name="margin_bottom">4</property>
+        <style>
+          <class name="dim-label"/>
+        </style>
       </object>
       <packing>
         <property name="expand">False</property>
diff --git a/data/TrackWidget.ui b/data/TrackWidget.ui
index c98a1acc..e5cd5946 100644
--- a/data/TrackWidget.ui
+++ b/data/TrackWidget.ui
@@ -53,6 +53,9 @@
                 <property name="can_focus">False</property>
                 <property name="halign">end</property>
                 <property name="justify">right</property>
+                <style>
+                  <class name="dim-label"/>
+                </style>
               </object>
               <packing>
                 <property name="expand">False</property>
diff --git a/data/application.css b/data/application.css
index ed476c22..66389d9d 100644
--- a/data/application.css
+++ b/data/application.css
@@ -78,3 +78,8 @@ flowbox, treeview, widget {
 .grey-image {
     color: alpha(@theme_fg_color, 0.3);
 }
+
+/* Used in AlbumWidget and ArtistAlbumsWidget */
+.playing-song-label {
+    font-weight: bold;
+}
diff --git a/gnomemusic/widgets/albumwidget.py b/gnomemusic/widgets/albumwidget.py
index d563e63a..2b53054d 100644
--- a/gnomemusic/widgets/albumwidget.py
+++ b/gnomemusic/widgets/albumwidget.py
@@ -305,21 +305,21 @@ class AlbumWidget(Gtk.EventBox):
             song = playlist[_iter][player.Field.SONG]
             song_widget = song.song_widget
             self._duration += song.get_duration()
-            escaped_title = GLib.markup_escape_text(
-                utils.get_media_title(song))
+            context = song_widget.title.get_style_context()
 
             if (song == current_song):
                 song_widget.now_playing_sign.show()
-                song_widget.title.set_markup("<b>{}</b>".format(escaped_title))
+                context.remove_class('dim-label')
+                context.add_class('playing-song-label')
                 song_passed = True
             elif (song_passed):
                 song_widget.now_playing_sign.hide()
-                song_widget.title.set_markup(
-                    "<span>{}</span>".format(escaped_title))
+                context.remove_class('dim-label')
+                context.remove_class('playing-song-label')
             else:
                 song_widget.now_playing_sign.hide()
-                song_widget.title.set_markup(
-                    "<span color=\'grey\'>{}</span>".format(escaped_title))
+                context.remove_class('playing-song-label')
+                context.add_class('dim-label')
 
             _iter = playlist.iter_next(_iter)
 
diff --git a/gnomemusic/widgets/artistalbumswidget.py b/gnomemusic/widgets/artistalbumswidget.py
index be651e19..706c2828 100644
--- a/gnomemusic/widgets/artistalbumswidget.py
+++ b/gnomemusic/widgets/artistalbumswidget.py
@@ -25,11 +25,10 @@
 import logging
 
 from gettext import gettext as _, ngettext
-from gi.repository import GLib, GObject, Gtk
+from gi.repository import GObject, Gtk
 
 from gnomemusic import log
 from gnomemusic.widgets.artistalbumwidget import ArtistAlbumWidget
-import gnomemusic.utils as utils
 
 logger = logging.getLogger(__name__)
 
@@ -150,20 +149,21 @@ class ArtistAlbumsWidget(Gtk.Box):
                 itr = playlist.iter_next(itr)
                 continue
 
-            escaped_title = GLib.markup_escape_text(
-                utils.get_media_title(song))
+            context = song_widget.title.get_style_context()
 
             if (song == current_song):
                 song_widget.now_playing_sign.show()
-                song_widget.title.set_markup('<b>%s</b>' % escaped_title)
+                context.remove_class('dim-label')
+                context.add_class('playing-song-label')
                 song_passed = True
             elif (song_passed):
                 song_widget.now_playing_sign.hide()
-                song_widget.title.set_markup('<span>%s</span>' % escaped_title)
+                context.remove_class('dim-label')
+                context.remove_class('playing-song-label')
             else:
                 song_widget.now_playing_sign.hide()
-                song_widget.title.set_markup(
-                    '<span color=\'grey\'>%s</span>' % escaped_title)
+                context.remove_class('playing-song-label')
+                context.add_class('dim-label')
             itr = playlist.iter_next(itr)
 
         return False
@@ -175,11 +175,11 @@ class ArtistAlbumsWidget(Gtk.Box):
         while itr:
             song = self._model[itr][5]
             song_widget = song.song_widget
-            escaped_title = GLib.markup_escape_text(
-                utils.get_media_title(song))
             if song_widget.can_be_played:
                 song_widget.now_playing_sign.hide()
-            song_widget.title.set_markup('<span>%s</span>' % escaped_title)
+            context = song_widget.title.get_style_context()
+            context.remove_class('playing-song-label')
+            context.remove_class('dim-label')
             itr = self._model.iter_next(itr)
 
         return False
diff --git a/gnomemusic/widgets/artistalbumwidget.py b/gnomemusic/widgets/artistalbumwidget.py
index 95e16648..81c69730 100644
--- a/gnomemusic/widgets/artistalbumwidget.py
+++ b/gnomemusic/widgets/artistalbumwidget.py
@@ -80,8 +80,7 @@ class ArtistAlbumWidget(Gtk.Box):
         ui.get_object('title').set_label(self._album_title)
         year = utils.get_media_year(self._media)
         if year:
-            ui.get_object('year').set_markup(
-                '<span color=\'grey\'>{}</span>'.format(year))
+            ui.get_object('year').set_label(year)
 
         if self._size_group:
             self._size_group.add_widget(ui.get_object('box1'))
diff --git a/gnomemusic/widgets/disclistboxwidget.py b/gnomemusic/widgets/disclistboxwidget.py
index 5121cac9..f271c744 100644
--- a/gnomemusic/widgets/disclistboxwidget.py
+++ b/gnomemusic/widgets/disclistboxwidget.py
@@ -189,8 +189,7 @@ class DiscBox(Gtk.Box):
 
         :param int disc_number: Disc number to display
         """
-        self._label.set_markup(_("Disc {}").format(disc_number))
-        self._label.get_style_context().add_class('dim-label')
+        self._label.set_label(_("Disc {}").format(disc_number))
         self._label.set_visible(True)
 
     @log
@@ -324,8 +323,7 @@ class DiscBox(Gtk.Box):
         if song_number == 0:
             song_number = ""
         song_widget.number = builder.get_object('num')
-        song_widget.number.set_markup(
-            '<span color=\'grey\'>{}</span>'.format(song_number))
+        song_widget.number.set_label(str(song_number))
         song_widget.number.set_no_show_all(True)
 
         song_widget.title = builder.get_object('title')


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]