]> Pileus Git - ~andy/gtk/commitdiff
GtkCssProvider: Add gtk_css_provider_load_from_path()
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 20 Aug 2010 09:50:39 +0000 (11:50 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:38:09 +0000 (15:38 +0100)
gtk/gtkcssprovider.c
gtk/gtkcssprovider.h

index c9c5a17aed4b92f725137212e188dd937726c6f6..f9780c242078efea9cd6ceef2476db06fa301378 100644 (file)
@@ -1686,6 +1686,45 @@ gtk_css_provider_load_from_file (GtkCssProvider  *css_provider,
   return TRUE;
 }
 
+gboolean
+gtk_css_provider_load_from_path (GtkCssProvider  *css_provider,
+                                 const gchar     *path,
+                                 GError         **error)
+{
+  GtkCssProviderPrivate *priv;
+  GError *internal_error = NULL;
+  gchar *data;
+  gsize length;
+
+  g_return_val_if_fail (GTK_IS_CSS_PROVIDER (css_provider), FALSE);
+  g_return_val_if_fail (path != NULL, FALSE);
+
+  priv = css_provider->priv;
+
+  if (g_file_get_contents (path, &data, &length,
+                           &internal_error))
+    {
+      g_propagate_error (error, internal_error);
+      return FALSE;
+    }
+
+  if (priv->selectors_info->len > 0)
+    g_ptr_array_remove_range (priv->selectors_info, 0, priv->selectors_info->len);
+
+  g_free (priv->filename);
+  priv->filename = g_strdup (path);
+
+  css_provider_reset_parser (css_provider);
+  priv->scanner->input_name = priv->filename;
+  g_scanner_input_text (priv->scanner, data, (guint) length);
+
+  parse_stylesheet (css_provider);
+
+  g_free (data);
+
+  return TRUE;
+}
+
 GtkCssProvider *
 gtk_css_provider_get_default (void)
 {
@@ -1762,5 +1801,26 @@ gtk_css_provider_get_default (void)
   return provider;
 }
 
+GtkCssProvider *
+gtk_css_provider_get_named (const gchar *name)
+{
+  static GHashTable *themes = NULL;
+  GtkCssProvider *provider;
+
+  if (G_UNLIKELY (!themes))
+    themes = g_hash_table_new (g_str_hash, g_str_equal);
+
+  provider = g_hash_table_lookup (themes, name);
+
+  if (!provider)
+    {
+      
+
+      g_hash_table_insert (themes, g_strdup (name), provider);
+    }
+
+  return provider;
+}
+
 #define __GTK_CSS_PROVIDER_C__
 #include "gtkaliasdef.c"
index 18364eaea8e4357c92901ee550f5077564e93ee1..2b8dd9dcfeb6754bfc2cad37c850b5913e495aa2 100644 (file)
@@ -56,6 +56,9 @@ gboolean         gtk_css_provider_load_from_data (GtkCssProvider *css_provider,
 gboolean         gtk_css_provider_load_from_file (GtkCssProvider  *css_provider,
                                                   GFile           *file,
                                                   GError         **error);
+gboolean         gtk_css_provider_load_from_path (GtkCssProvider  *css_provider,
+                                                  const gchar     *path,
+                                                  GError         **error);
 
 GtkCssProvider * gtk_css_provider_get_default (void);