[evince/wip/app: 18/23] toolbar-editor: Add methods to load from GResource



commit 2f2b7ee7cbf3715e289b02ed67109d9516a6ff0e
Author: Christian Persch <chpe gnome org>
Date:   Tue Jun 12 20:20:47 2012 +0200

    toolbar-editor: Add methods to load from GResource

 cut-n-paste/toolbar-editor/egg-toolbars-model.c |   60 +++++++++++++++++++++++
 cut-n-paste/toolbar-editor/egg-toolbars-model.h |    7 ++-
 2 files changed, 66 insertions(+), 1 deletions(-)
---
diff --git a/cut-n-paste/toolbar-editor/egg-toolbars-model.c b/cut-n-paste/toolbar-editor/egg-toolbars-model.c
index 31a6d5e..ea1d368 100644
--- a/cut-n-paste/toolbar-editor/egg-toolbars-model.c
+++ b/cut-n-paste/toolbar-editor/egg-toolbars-model.c
@@ -607,6 +607,36 @@ egg_toolbars_model_load_toolbars (EggToolbarsModel *model,
   return TRUE;
 }
 
+gboolean
+egg_toolbars_model_load_toolbars_from_resource (EggToolbarsModel *model,
+                                                const char *path)
+{
+  xmlDocPtr doc;
+  xmlNodePtr root;
+  GBytes *bytes;
+  GError *error = NULL;
+  const guint8 *data;
+  gsize data_len;
+
+  g_return_val_if_fail (EGG_IS_TOOLBARS_MODEL (model), FALSE);
+
+  bytes = g_resources_lookup_data (path, G_RESOURCE_LOOKUP_FLAGS_NONE, &error);
+  g_assert_no_error (error);
+
+  data = g_bytes_get_data (bytes, &data_len);
+  doc = xmlParseMemory ((const char *) data, data_len);
+  if (doc == NULL)
+    g_error ("Failed to load XML data from resource %s", path);
+
+  root = xmlDocGetRootElement (doc);
+  parse_toolbars (model, root->children);
+
+  xmlFreeDoc (doc);
+  g_bytes_unref (bytes);
+
+  return TRUE;
+}
+
 static void
 parse_available_list (EggToolbarsModel *model,
 		      xmlNodePtr        child)
@@ -671,6 +701,36 @@ egg_toolbars_model_load_names (EggToolbarsModel *model,
   return TRUE;
 }
 
+gboolean
+egg_toolbars_model_load_names_from_resource (EggToolbarsModel *model,
+                                             const char *path)
+{
+  xmlDocPtr doc;
+  xmlNodePtr root;
+  GBytes *bytes;
+  GError *error = NULL;
+  const guint8 *data;
+  gsize data_len;
+
+  g_return_val_if_fail (EGG_IS_TOOLBARS_MODEL (model), FALSE);
+
+  bytes = g_resources_lookup_data (path, G_RESOURCE_LOOKUP_FLAGS_NONE, &error);
+  g_assert_no_error (error);
+
+  data = g_bytes_get_data (bytes, &data_len);
+  doc = xmlParseMemory ((const char *) data, data_len);
+  if (doc == NULL)
+    g_error ("Failed to load XML data from resource %s", path);
+
+  root = xmlDocGetRootElement (doc);
+  parse_names (model, root->children);
+
+  xmlFreeDoc (doc);
+  g_bytes_unref (bytes);
+
+  return TRUE;
+}
+
 static void
 egg_toolbars_model_class_init (EggToolbarsModelClass *klass)
 {
diff --git a/cut-n-paste/toolbar-editor/egg-toolbars-model.h b/cut-n-paste/toolbar-editor/egg-toolbars-model.h
index baca486..d012748 100644
--- a/cut-n-paste/toolbar-editor/egg-toolbars-model.h
+++ b/cut-n-paste/toolbar-editor/egg-toolbars-model.h
@@ -23,6 +23,7 @@
 
 #include <glib.h>
 #include <glib-object.h>
+#include <gio/gio.h>
 #include <gdk/gdk.h>
 
 G_BEGIN_DECLS
@@ -116,10 +117,14 @@ EggToolbarsModel *egg_toolbars_model_new	    (void);
 gboolean          egg_toolbars_model_load_names     (EggToolbarsModel *model,
 						     const char *xml_file);
 gboolean          egg_toolbars_model_load_toolbars  (EggToolbarsModel *model,
-						     const char *xml_file);
+                                                     const char *xml_file);
 void              egg_toolbars_model_save_toolbars  (EggToolbarsModel *model,
 						     const char *xml_file,
 						     const char *version);
+gboolean          egg_toolbars_model_load_names_from_resource    (EggToolbarsModel *model,
+                                                                  const char *path);
+gboolean          egg_toolbars_model_load_toolbars_from_resource (EggToolbarsModel *model,
+                                                                  const char *path);
 
 /* Functions for manipulating the types of portable data this toolbar understands. */
 GList *           egg_toolbars_model_get_types      (EggToolbarsModel *model);



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