]> www.fi.muni.cz Git - evince.git/blobdiff - libmisc/ev-stock-icons.c
Move EvPageAction and EvStockIcons from shell to a new internal library
[evince.git] / libmisc / ev-stock-icons.c
similarity index 64%
rename from shell/ev-stock-icons.c
rename to libmisc/ev-stock-icons.c
index e1049c973d5520ceb56bebbfc7fdae62bb528e50..8b121e909b01225f4198d0903417149df500b3a8 100644 (file)
@@ -6,12 +6,12 @@
  * Author:
  *   Martin Kretzschmar <Martin.Kretzschmar@inf.tu-dresden.de>
  *
- * GPdf is free software; you can redistribute it and/or modify it
+ * Evince is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  *
- * GPdf is distributed in the hope that it will be useful, but WITHOUT
+ * Evince is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
  * License for more details.
@@ -46,6 +46,8 @@ static const EvStockIcon stock_icons [] = {
        { EV_STOCK_VISIBLE,          "eye"}
 };
 
+static gchar *ev_icons_path;
+
 /**
  * ev_stock_icons_init:
  *
@@ -58,6 +60,8 @@ ev_stock_icons_init (void)
        GtkIconSource *source;
        gint i;
 
+       ev_icons_path = g_build_filename (DATADIR, "icons", NULL);
+
         factory = gtk_icon_factory_new ();
         gtk_icon_factory_add_default (factory);
 
@@ -78,4 +82,48 @@ ev_stock_icons_init (void)
        gtk_icon_source_free (source);
 
        g_object_unref (G_OBJECT (factory));
+
+       ev_stock_icons_add_icons_path ();
+}
+
+void
+ev_stock_icons_shutdown (void)
+{
+       g_free (ev_icons_path);
+}
+
+void
+ev_stock_icons_add_icons_path_for_screen (GdkScreen *screen)
+{
+       GtkIconTheme *icon_theme;
+
+       g_return_if_fail (ev_icons_path != NULL);
+       
+       icon_theme = screen ? gtk_icon_theme_get_for_screen (screen) : gtk_icon_theme_get_default ();
+       if (icon_theme) {
+               gchar **path = NULL;
+               gint    n_paths;
+               gint    i;
+
+               /* GtkIconTheme will then look in Evince custom hicolor dir
+                * for icons as well as the standard search paths
+                */
+               gtk_icon_theme_get_search_path (icon_theme, &path, &n_paths);
+               for (i = n_paths - 1; i >= 0; i--) {
+                       if (g_ascii_strcasecmp (ev_icons_path, path[i]) == 0)
+                               break;
+               }
+
+               if (i < 0)
+                       gtk_icon_theme_append_search_path (icon_theme,
+                                                          ev_icons_path);
+
+               g_strfreev (path);
+       }
+}
+
+void
+ev_stock_icons_add_icons_path (void)
+{
+       ev_stock_icons_add_icons_path_for_screen (gdk_screen_get_default ());
 }