[rhythmbox] put symbolic icons for plugins into proper theme directories



commit c0f4b203d96cbaa80428014f94ed439fad28afbc
Author: Jonathan Matthew <jonathan d14n org>
Date:   Sun Feb 22 23:37:22 2015 +1000

    put symbolic icons for plugins into proper theme directories

 plugins/magnatune/Makefile.am                      |    8 ++++--
 .../scalable/places}/magnatune-symbolic.svg        |    0
 plugins/magnatune/magnatune.py                     |    5 ++-
 plugins/rb/rb.py                                   |   22 +++++++++++++------
 plugins/soundcloud/Makefile.am                     |    7 ++++-
 .../scalable/places}/soundcloud-symbolic.svg       |    0
 plugins/soundcloud/soundcloud.py                   |    7 ++---
 7 files changed, 31 insertions(+), 18 deletions(-)
---
diff --git a/plugins/magnatune/Makefile.am b/plugins/magnatune/Makefile.am
index 53e62b6..51a9aa0 100644
--- a/plugins/magnatune/Makefile.am
+++ b/plugins/magnatune/Makefile.am
@@ -21,9 +21,11 @@ gtkbuilder_DATA =    \
                magnatune-prefs.ui                      \
                magnatune-toolbar.ui                    \
                magnatune_logo_color_small.png          \
-               magnatune_logo_color_tiny.png           \
-               magnatune-symbolic.svg
+               magnatune_logo_color_tiny.png
 
-EXTRA_DIST = $(plugin_in_files) $(gtkbuilder_DATA)
+icondir = $(plugindatadir)/icons/hicolor/scalable/places
+icon_DATA = icons/hicolor/scalable/places/magnatune-symbolic.svg
+
+EXTRA_DIST = $(plugin_in_files) $(gtkbuilder_DATA) $(icon_DATA)
 CLEANFILES = $(plugin_DATA)
 DISTCLEANFILES = $(plugin_DATA)
diff --git a/plugins/magnatune/magnatune-symbolic.svg 
b/plugins/magnatune/icons/hicolor/scalable/places/magnatune-symbolic.svg
similarity index 100%
rename from plugins/magnatune/magnatune-symbolic.svg
rename to plugins/magnatune/icons/hicolor/scalable/places/magnatune-symbolic.svg
diff --git a/plugins/magnatune/magnatune.py b/plugins/magnatune/magnatune.py
index d9456c8..27a0058 100644
--- a/plugins/magnatune/magnatune.py
+++ b/plugins/magnatune/magnatune.py
@@ -89,6 +89,8 @@ class Magnatune(GObject.GObject, Peas.Activatable):
                shell = self.object
                self.db = shell.props.db
 
+               rb.append_plugin_source_path(self, "icons")
+
                self.entry_type = MagnatuneEntryType()
                self.db.register_entry_type(self.entry_type)
 
@@ -110,11 +112,10 @@ class Magnatune(GObject.GObject, Peas.Activatable):
 
                group = RB.DisplayPageGroup.get_by_id ("stores")
                settings = Gio.Settings("org.gnome.rhythmbox.plugins.magnatune")
-               iconfile = Gio.File.new_for_path(rb.find_plugin_file(self, "magnatune-symbolic.svg"))
                self.source = GObject.new(MagnatuneSource,
                                          shell=shell,
                                          entry_type=self.entry_type,
-                                         icon=Gio.FileIcon.new(iconfile),
+                                         icon=Gio.ThemedIcon.new("magnatune-symbolic"),
                                          plugin=self,
                                          settings=settings.get_child("source"),
                                          name=_("Magnatune"),
diff --git a/plugins/rb/rb.py b/plugins/rb/rb.py
index 3bb0819..0a42ac9 100644
--- a/plugins/rb/rb.py
+++ b/plugins/rb/rb.py
@@ -31,7 +31,7 @@ import os.path
 import os
 import time
 
-from gi.repository import RB
+from gi.repository import RB, Gtk
 
 # rb classes
 from Loader import Loader
@@ -46,16 +46,24 @@ def try_load_icon(theme, icon, size, flags):
        except:
                return None
 
-def append_plugin_source_path(theme, iconpath):
-       # check for a Makefile.am in the dir the file was loaded from
+def append_plugin_source_path(plugin, iconpath):
+       theme = Gtk.IconTheme.get_default()
+
+       # get plugin data dir
+       datadir = plugin.plugin_info.get_data_dir()
+       icondir = os.path.join(datadir, iconpath)
+       if os.path.exists(icondir):
+               theme.append_search_path(icondir)
+
+       # where was the caller loaded from?
        fr = sys._getframe(1)
        co = fr.f_code
        filename = co.co_filename
 
-       # and if found, append the icon path
-       dir = filename[:filename.rfind(os.sep)]
-       if os.path.exists(dir + "/Makefile.am"):
-               icondir = dir + iconpath
+       # if the calling plugin has an icons dir, add it to the search path
+       plugindir = filename[:filename.rfind(os.sep)]
+       icondir = os.path.join(plugindir, iconpath)
+       if os.path.exists(icondir):
                theme.append_search_path(icondir)
 
 def entry_equal(a, b):
diff --git a/plugins/soundcloud/Makefile.am b/plugins/soundcloud/Makefile.am
index 1032380..ef14c45 100644
--- a/plugins/soundcloud/Makefile.am
+++ b/plugins/soundcloud/Makefile.am
@@ -8,9 +8,12 @@ plugin_in_files = soundcloud.plugin.in
 plugin_DATA = $(plugin_in_files:.plugin.in=.plugin)
 
 gtkbuilderdir = $(plugindatadir)
-gtkbuilder_DATA = soundcloud.ui powered-by-soundcloud.png soundcloud-symbolic.svg
+gtkbuilder_DATA = soundcloud.ui powered-by-soundcloud.png
 
-EXTRA_DIST = $(plugin_in_files) $(gtkbuilder_DATA)
+icondir = $(plugindatadir)/icons/hicolor/scalable/places
+icon_DATA = icons/hicolor/scalable/places/soundcloud-symbolic.svg
+
+EXTRA_DIST = $(plugin_in_files) $(gtkbuilder_DATA) $(icon_DATA)
 
 CLEANFILES = $(plugin_DATA)
 DISTCLEANFILES = $(plugin_DATA)
diff --git a/plugins/soundcloud/soundcloud-symbolic.svg 
b/plugins/soundcloud/icons/hicolor/scalable/places/soundcloud-symbolic.svg
similarity index 100%
rename from plugins/soundcloud/soundcloud-symbolic.svg
rename to plugins/soundcloud/icons/hicolor/scalable/places/soundcloud-symbolic.svg
diff --git a/plugins/soundcloud/soundcloud.py b/plugins/soundcloud/soundcloud.py
index fcc2396..65c66cb 100644
--- a/plugins/soundcloud/soundcloud.py
+++ b/plugins/soundcloud/soundcloud.py
@@ -59,14 +59,13 @@ class SoundCloudPlugin(GObject.Object, Peas.Activatable):
        def do_activate(self):
                shell = self.object
 
+               rb.append_plugin_source_path(self, "icons")
+
                db = shell.props.db
 
                self.entry_type = SoundCloudEntryType()
                db.register_entry_type(self.entry_type)
 
-               logofile = rb.find_plugin_file(self, "soundcloud-symbolic.svg")
-               icon = Gio.FileIcon.new(Gio.File.new_for_path(logofile))
-
                model = RB.RhythmDBQueryModel.new_empty(db)
                self.source = GObject.new (SoundCloudSource,
                                           shell=shell,
@@ -74,7 +73,7 @@ class SoundCloudPlugin(GObject.Object, Peas.Activatable):
                                           plugin=self,
                                           query_model=model,
                                           entry_type=self.entry_type,
-                                          icon=icon)
+                                          icon=Gio.ThemedIcon.new("soundcloud-symbolic"))
                shell.register_entry_type_for_source(self.source, self.entry_type)
                self.source.setup()
                group = RB.DisplayPageGroup.get_by_id ("shared")


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