/* Chrysalide - Outil d'analyse de fichiers binaires * theme.c - prototypes pour l'ajout d'extensions au thème GTK * * Copyright (C) 2009-2012 Cyrille Bagard * * This file is part of Chrysalide. * * OpenIDA 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 3 of the License, or * (at your option) any later version. * * OpenIDA 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. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "theme.h" #include static const char *_themes_directories[] = { PACKAGE_SOURCE_DIR G_DIR_SEPARATOR_S "themes", PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "themes", NULL }; /****************************************************************************** * * * Paramètres : - * * * * Description : Charge le thème GTK pour les composants spécifiques. * * * * Retour : true ou false selon le bilan de l'opération. * * * * Remarques : - * * * ******************************************************************************/ bool load_extra_gtk_theme(void) { GdkScreen *screen; /* Ecran(s) concerné(s) */ const char **iter_f; /* Boucle de parcours #1 */ bool done; /* Traitement d'un fichier */ const char **iter_d; /* Boucle de parcours #2 */ gchar *filename; /* Chemin d'accès constitué */ GtkCssProvider *provider; /* Nouveau fournisseur CSS */ static const char *css_files[] = { "portions.css", "segments.css", "icons.css", NULL }; screen = gdk_screen_get_default(); done = true; for (iter_f = css_files; *iter_f != NULL; iter_f++) { done = false; for (iter_d = _themes_directories; *iter_d != NULL && !done; iter_d++) { filename = g_strdup_printf("%s%s%s", *iter_d, G_DIR_SEPARATOR_S, *iter_f); if (g_file_test(filename, G_FILE_TEST_EXISTS)) { provider = gtk_css_provider_new(); done = gtk_css_provider_load_from_path(provider, filename, NULL); if (done) gtk_style_context_add_provider_for_screen(screen, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER); g_object_unref(G_OBJECT(provider)); } g_free(filename); } if (!done) break; } return done; }