From e0f26b9dbe29642ea37c6c95e14f355e155e1608 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Tue, 12 Jun 2012 20:20:47 +0200 Subject: toolbar-editor: Add methods to load from GResource origin commit: https://git.gnome.org/browse/evince/commit/?h=gnome-3-6&id=8c240d9 --- cut-n-paste/toolbar-editor/egg-toolbars-model.c | 60 +++++++++++++++++++++++++ cut-n-paste/toolbar-editor/egg-toolbars-model.h | 13 ++++-- 2 files changed, 69 insertions(+), 4 deletions(-) (limited to 'cut-n-paste/toolbar-editor') diff --git a/cut-n-paste/toolbar-editor/egg-toolbars-model.c b/cut-n-paste/toolbar-editor/egg-toolbars-model.c index 279533c1..57cc1884 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 5d9841f8..88f563ab 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 #include +#include #include G_BEGIN_DECLS @@ -114,12 +115,16 @@ GType egg_tb_model_flags_get_type (void); GType egg_toolbars_model_get_type (void); EggToolbarsModel *egg_toolbars_model_new (void); gboolean egg_toolbars_model_load_names (EggToolbarsModel *model, - const char *xml_file); + 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); + 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); -- cgit v1.2.1