diff options
-rw-r--r-- | cut-n-paste/toolbar-editor/egg-toolbars-model.c | 60 | ||||
-rw-r--r-- | cut-n-paste/toolbar-editor/egg-toolbars-model.h | 13 |
2 files changed, 69 insertions, 4 deletions
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 <glib.h> #include <glib-object.h> +#include <gio/gio.h> #include <gdk/gdk.h> 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); |