Skip to content

Commit e0f26b9

Browse files
Christian Perschraveit65
authored andcommitted
toolbar-editor: Add methods to load from GResource
origin commit: https://git.gnome.org/browse/evince/commit/?h=gnome-3-6&id=8c240d9
1 parent 6b84d6f commit e0f26b9

File tree

2 files changed

+69
-4
lines changed

2 files changed

+69
-4
lines changed

cut-n-paste/toolbar-editor/egg-toolbars-model.c

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,36 @@ egg_toolbars_model_load_toolbars (EggToolbarsModel *model,
607607
return TRUE;
608608
}
609609

610+
gboolean
611+
egg_toolbars_model_load_toolbars_from_resource (EggToolbarsModel *model,
612+
const char *path)
613+
{
614+
xmlDocPtr doc;
615+
xmlNodePtr root;
616+
GBytes *bytes;
617+
GError *error = NULL;
618+
const guint8 *data;
619+
gsize data_len;
620+
621+
g_return_val_if_fail (EGG_IS_TOOLBARS_MODEL (model), FALSE);
622+
623+
bytes = g_resources_lookup_data (path, G_RESOURCE_LOOKUP_FLAGS_NONE, &error);
624+
g_assert_no_error (error);
625+
626+
data = g_bytes_get_data (bytes, &data_len);
627+
doc = xmlParseMemory ((const char *) data, data_len);
628+
if (doc == NULL)
629+
g_error ("Failed to load XML data from resource %s", path);
630+
631+
root = xmlDocGetRootElement (doc);
632+
parse_toolbars (model, root->children);
633+
634+
xmlFreeDoc (doc);
635+
g_bytes_unref (bytes);
636+
637+
return TRUE;
638+
}
639+
610640
static void
611641
parse_available_list (EggToolbarsModel *model,
612642
xmlNodePtr child)
@@ -671,6 +701,36 @@ egg_toolbars_model_load_names (EggToolbarsModel *model,
671701
return TRUE;
672702
}
673703

704+
gboolean
705+
egg_toolbars_model_load_names_from_resource (EggToolbarsModel *model,
706+
const char *path)
707+
{
708+
xmlDocPtr doc;
709+
xmlNodePtr root;
710+
GBytes *bytes;
711+
GError *error = NULL;
712+
const guint8 *data;
713+
gsize data_len;
714+
715+
g_return_val_if_fail (EGG_IS_TOOLBARS_MODEL (model), FALSE);
716+
717+
bytes = g_resources_lookup_data (path, G_RESOURCE_LOOKUP_FLAGS_NONE, &error);
718+
g_assert_no_error (error);
719+
720+
data = g_bytes_get_data (bytes, &data_len);
721+
doc = xmlParseMemory ((const char *) data, data_len);
722+
if (doc == NULL)
723+
g_error ("Failed to load XML data from resource %s", path);
724+
725+
root = xmlDocGetRootElement (doc);
726+
parse_names (model, root->children);
727+
728+
xmlFreeDoc (doc);
729+
g_bytes_unref (bytes);
730+
731+
return TRUE;
732+
}
733+
674734
static void
675735
egg_toolbars_model_class_init (EggToolbarsModelClass *klass)
676736
{

cut-n-paste/toolbar-editor/egg-toolbars-model.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
#include <glib.h>
2525
#include <glib-object.h>
26+
#include <gio/gio.h>
2627
#include <gdk/gdk.h>
2728

2829
G_BEGIN_DECLS
@@ -114,12 +115,16 @@ GType egg_tb_model_flags_get_type (void);
114115
GType egg_toolbars_model_get_type (void);
115116
EggToolbarsModel *egg_toolbars_model_new (void);
116117
gboolean egg_toolbars_model_load_names (EggToolbarsModel *model,
117-
const char *xml_file);
118+
const char *xml_file);
118119
gboolean egg_toolbars_model_load_toolbars (EggToolbarsModel *model,
119-
const char *xml_file);
120+
const char *xml_file);
120121
void egg_toolbars_model_save_toolbars (EggToolbarsModel *model,
121-
const char *xml_file,
122-
const char *version);
122+
const char *xml_file,
123+
const char *version);
124+
gboolean egg_toolbars_model_load_names_from_resource (EggToolbarsModel *model,
125+
const char *path);
126+
gboolean egg_toolbars_model_load_toolbars_from_resource (EggToolbarsModel *model,
127+
const char *path);
123128

124129
/* Functions for manipulating the types of portable data this toolbar understands. */
125130
GList * egg_toolbars_model_get_types (EggToolbarsModel *model);

0 commit comments

Comments
 (0)