/* TODO : s/glade_xml_get_/glade_xml_node_get/g */
#ifndef __GLADE_XML_UTILS_H__
#define __GLADE_XML_UTILS_H__
#include <glib.h>
#include <gmodule.h>
G_BEGIN_DECLS
#define GLADE_XML_CONTEXT(c) ((GladeXmlContext *)c)
#define GLADE_XML_IS_CONTEXT(c) (c != NULL)
#define CAST_BAD (gchar *)
typedef struct _GladeXmlContext GladeXmlContext;
typedef struct _GladeXmlNode GladeXmlNode;
typedef struct _GladeXmlDoc GladeXmlDoc;
/* FIXME: forward declarations to get around circular header dependencies.
*/
typedef struct _GladeWidget GladeWidget;
typedef struct _GladeWidgetAdaptor GladeWidgetAdaptor;
typedef struct _GladeProperty GladeProperty;
typedef struct _GladeProject GladeProject;
#define GLADE_GTKBUILDER_VERSIONING_BASE_MAJOR 2
#define GLADE_GTKBUILDER_VERSIONING_BASE_MINOR 14
#define GLADE_GTKBUILDER_HAS_VERSIONING(maj, min) \
((maj) > GLADE_GTKBUILDER_VERSIONING_BASE_MAJOR || \
((maj) == GLADE_GTKBUILDER_VERSIONING_BASE_MAJOR && \
(min) >= GLADE_GTKBUILDER_VERSIONING_BASE_MINOR))
/* Used for catalog tags and attributes */
#define GLADE_XML_TAG_PROJECT "interface"
#define GLADE_XML_TAG_WIDGET "object"
#define GLADE_XML_TAG_TEMPLATE "template"
#define GLADE_XML_TAG_VERSION "version"
#define GLADE_XML_TAG_REQUIRES "requires"
#define GLADE_XML_TAG_LIB "lib"
#define GLADE_XML_TAG_PROPERTY "property"
#define GLADE_XML_TAG_CLASS "class"
#define GLADE_XML_TAG_ID "id"
#define GLADE_XML_TAG_SIGNAL "signal"
#define GLADE_XML_TAG_HANDLER "handler"
#define GLADE_XML_TAG_AFTER "after"
#define GLADE_XML_TAG_SWAPPED "swapped"
#define GLADE_XML_TAG_OBJECT "object"
#define GLADE_XML_TAG_NAME "name"
#define GLADE_XML_TAG_CHILD "child"
#define GLADE_XML_TAG_PACKING "packing"
#define GLADE_XML_TAG_PLACEHOLDER "placeholder"
#define GLADE_XML_TAG_INTERNAL_CHILD "internal-child"
#define GLADE_XML_TAG_I18N_TRUE "yes"
#define GLADE_XML_TAG_SIGNAL_TRUE "yes"
#define GLADE_XML_TAG_SIGNAL_FALSE "no"
#define GLADE_XML_TAG_TYPE "type"
#define GLADE_XML_TAG_SOURCES "sources"
#define GLADE_XML_TAG_SOURCE "source"
#define GLADE_XML_TAG_FILENAME "filename"
#define GLADE_XML_TAG_STOCK_ID "stock-id"
#define GLADE_TAG_VERSION "version"
#define GLADE_TAG_TARGETABLE "targetable"
#define GLADE_TAG_VERSION_SINCE "since"
#define GLADE_TAG_BUILDER_SINCE "gtkbuilder-since"
#define GLADE_TAG_DEPRECATED "deprecated"
#define GLADE_TAG_GLADE_CATALOG "glade-catalog"
#define GLADE_TAG_GLADE_WIDGET_CLASSES "glade-widget-classes"
#define GLADE_TAG_GLADE_WIDGET_CLASS "glade-widget-class"
#define GLADE_TAG_GLADE_WIDGET_GROUP "glade-widget-group"
#define GLADE_TAG_GLADE_WIDGET_CLASS_REF "glade-widget-class-ref"
#define GLADE_TAG_ADAPTOR "adaptor"
#define GLADE_TAG_LIBRARY "library"
#define GLADE_TAG_DEPENDS "depends"
#define GLADE_TAG_DOMAIN "domain"
#define GLADE_TAG_BOOK "book"
#define GLADE_TAG_SIGNALS "signals"
#define GLADE_TAG_SIGNAL "signal"
#define GLADE_TAG_INTERNAL_CHILDREN "internal-children"
#define GLADE_TAG_ANARCHIST "anarchist"
#define GLADE_TAG_DEFAULT "default"
#define GLADE_TAG_PARENTLESS_WIDGET "parentless-widget"
#define GLADE_TAG_DISABLED "disabled"
#define GLADE_TAG_CONSTRUCT_ONLY "construct-only"
#define GLADE_TAG_NEEDS_SYNC "needs-sync"
#define GLADE_TAG_DEFAULT_PALETTE_STATE "default-palette-state"
#define GLADE_TAG_REPLACE_CHILD_FUNCTION "replace-child-function"
#define GLADE_TAG_CREATE_WIDGET_FUNCTION "create-widget-function"
#define GLADE_TAG_CONSTRUCT_OBJECT_FUNCTION "construct-object-function"
#define GLADE_TAG_DESTROY_OBJECT_FUNCTION "destroy-object-function"
#define GLADE_TAG_DEEP_POST_CREATE_FUNCTION "deep-post-create-function"
#define GLADE_TAG_POST_CREATE_FUNCTION "post-create-function"
#define GLADE_TAG_GET_INTERNAL_CHILD_FUNCTION "get-internal-child-function"
#define GLADE_TAG_ADD_CHILD_FUNCTION "add-child-function"
#define GLADE_TAG_ADD_CHILD_VERIFY_FUNCTION "add-child-verify-function"
#define GLADE_TAG_REMOVE_CHILD_FUNCTION "remove-child-function"
#define GLADE_TAG_GET_CHILDREN_FUNCTION "get-children-function"
#define GLADE_TAG_CHILD_SET_PROP_FUNCTION "child-set-property-function"
#define GLADE_TAG_CHILD_GET_PROP_FUNCTION "child-get-property-function"
#define GLADE_TAG_CHILD_VERIFY_FUNCTION "child-verify-function"
#define GLADE_TAG_CONSTRUCTOR_FUNCTION "constructor-function"
#define GLADE_TAG_ACTION_ACTIVATE_FUNCTION "action-activate-function"
#define GLADE_TAG_CHILD_ACTION_ACTIVATE_FUNCTION "child-action-activate-function"
#define GLADE_TAG_ACTION_SUBMENU_FUNCTION "action-submenu-function"
#define GLADE_TAG_DEPENDS_FUNCTION "depends-function"
#define GLADE_TAG_READ_WIDGET_FUNCTION "read-widget-function"
#define GLADE_TAG_WRITE_WIDGET_FUNCTION "write-widget-function"
#define GLADE_TAG_WRITE_WIDGET_AFTER_FUNCTION "write-widget-after-function"
#define GLADE_TAG_READ_CHILD_FUNCTION "read-child-function"
#define GLADE_TAG_WRITE_CHILD_FUNCTION "write-child-function"
#define GLADE_TAG_CREATE_EPROP_FUNCTION "create-editor-property-function"
#define GLADE_TAG_STRING_FROM_VALUE_FUNCTION "string-from-value-function"
#define GLADE_TAG_CREATE_EDITABLE_FUNCTION "create-editable-function"
#define GLADE_TAG_PROPERTIES "properties"
#define GLADE_TAG_PACKING_PROPERTIES "packing-properties"
#define GLADE_TAG_PROPERTY "property"
#define GLADE_TAG_ACTIONS "actions"
#define GLADE_TAG_PACKING_ACTIONS "packing-actions"
#define GLADE_TAG_ACTION "action"
#define GLADE_TAG_TYPE "type"
#define GLADE_TAG_SPEC "spec"
#define GLADE_TAG_SPECIFICATIONS "parameter-spec"
#define GLADE_TAG_MAX_VALUE "max"
#define GLADE_TAG_MIN_VALUE "min"
#define GLADE_TAG_VALUE_TYPE "value-type"
#define GLADE_TAG_TOOLTIP "tooltip"
#define GLADE_TAG_SET_FUNCTION "set-property-function"
#define GLADE_TAG_GET_FUNCTION "get-property-function"
#define GLADE_TAG_VERIFY_FUNCTION "verify-function"
#define GLADE_TAG_QUERY "query"
#define GLADE_TAG_COMMON "common"
#define GLADE_TAG_OPTIONAL "optional"
#define GLADE_TAG_OPTIONAL_DEFAULT "optional-default"
#define GLADE_TAG_VISIBLE "visible"
#define GLADE_TAG_CUSTOM_LAYOUT "custom-layout"
#define GLADE_TAG_EXPANDED "expanded"
#define GLADE_TAG_GENERIC_NAME "generic-name"
#define GLADE_TAG_NAME "name"
#define GLADE_TAG_PARENT "parent"
#define GLADE_TAG_TITLE "title"
#define GLADE_TAG_ID "id"
#define GLADE_TAG_KEY "key"
#define GLADE_TAG_VALUE "value"
#define GLADE_TAG_TRANSLATABLE "translatable"
#define GLADE_TAG_HAS_CONTEXT "context"
#define GLADE_TAG_CONTEXT "context"
#define GLADE_TAG_COMMENT "comments"
#define GLADE_TAG_PACKING_DEFAULTS "packing-defaults"
#define GLADE_TAG_PARENT_CLASS "parent-class"
#define GLADE_TAG_CHILD_PROPERTY "child-property"
#define GLADE_TAG_DISPLAYABLE_VALUES "displayable-values"
#define GLADE_TAG_NICK "nick"
#define GLADE_TAG_SPECIAL_CHILD_TYPE "special-child-type"
#define GLADE_TAG_SAVE "save"
#define GLADE_TAG_SAVE_ALWAYS "save-always"
#define GLADE_TAG_EDITABLE "editable"
#define GLADE_TAG_IGNORE "ignore"
#define GLADE_TAG_MULTILINE "multiline"
#define GLADE_TAG_RESOURCE "resource"
#define GLADE_TAG_STOCK "stock"
#define GLADE_TAG_STOCK_ICON "stock-icon"
#define GLADE_TAG_THEMED_ICON "themed-icon"
#define GLADE_TAG_INIT_FUNCTION "init-function"
#define GLADE_TAG_ATK_PROPERTY "atk-property"
#define GLADE_TAG_TRANSFER_ON_PASTE "transfer-on-paste"
#define GLADE_TAG_WEIGHT "weight"
#define GLADE_TAG_GET_TYPE_FUNCTION "get-type-function"
#define GLADE_TAG_TOPLEVEL "toplevel"
#define GLADE_TAG_USE_PLACEHOLDERS "use-placeholders"
#define GLADE_TAG_DEFAULT_WIDTH "default-width"
#define GLADE_TAG_DEFAULT_HEIGHT "default-height"
#define GLADE_TAG_EVENT_HANDLER_CONNECTED "EventHandlerConnected"
#define GLADE_TAG_FALSE "False"
#define GLADE_TAG_TRUE "True"
#define GLADE_TAG_YES "Yes"
#define GLADE_TAG_NO "No"
#define GLADE_TAG_ICON_PREFIX "icon-prefix"
#define GLADE_TAG_ICON_NAME "icon-name"
#define GLADE_TAG_IMPORTANT "important"
#define GLADE_TAG_CREATE_TYPE "create-type"
/* search child */
GladeXmlNode * glade_xml_search_child (GladeXmlNode * node, const gchar *name);
GladeXmlNode * glade_xml_search_child_required (GladeXmlNode * tree, const gchar* name);
/* content */
gchar * glade_xml_get_content (GladeXmlNode * node_in); /* Get the content of the node */
void glade_xml_set_content (GladeXmlNode *node_in, const gchar *content);
gboolean glade_xml_get_value_int (GladeXmlNode * node_in, const gchar *name, int *val);
gboolean glade_xml_get_value_int_required (GladeXmlNode * node, const gchar *name, int *val);
gchar * glade_xml_get_value_string (GladeXmlNode * node, const gchar *name);
gchar * glade_xml_get_value_string_required (GladeXmlNode * node,
const gchar *name,
const gchar *xtra_info);
gboolean glade_xml_get_boolean (GladeXmlNode * node, const gchar *name, gboolean _default);
void glade_xml_set_value (GladeXmlNode * node_in, const gchar *name, const gchar *val);
/* Properties */
gchar * glade_xml_get_property_string_required (GladeXmlNode *node_in, const gchar *name, const gchar *xtra);
gchar * glade_xml_get_property_string (GladeXmlNode *node_in, const gchar *name);
gboolean glade_xml_get_property_boolean (GladeXmlNode *node_in, const gchar *name, gboolean _default);
gdouble glade_xml_get_property_double (GladeXmlNode *node_in, const gchar *name, gdouble _default);
gint glade_xml_get_property_int (GladeXmlNode *node_in, const gchar *name, gint _default);
gboolean glade_xml_get_property_version (GladeXmlNode *node_in, const gchar *name, guint16 *major, guint16 *minor);
GList *glade_xml_get_property_targetable_versions (GladeXmlNode *node_in, const gchar *name);
void glade_xml_node_set_property_string (GladeXmlNode *node_in, const gchar *name, const gchar *string);
void glade_xml_node_set_property_boolean (GladeXmlNode *node_in, const gchar *name, gboolean value);
/* Node operations */
GladeXmlNode * glade_xml_node_new (GladeXmlContext *context, const gchar *name);
GladeXmlNode * glade_xml_node_new_comment (GladeXmlContext *context, const gchar *comment);
GladeXmlNode * glade_xml_node_copy (GladeXmlNode *node);
void glade_xml_node_delete (GladeXmlNode *node);
GladeXmlNode * glade_xml_node_get_children (GladeXmlNode *node);
GladeXmlNode * glade_xml_node_get_parent (GladeXmlNode *node_in);
GladeXmlNode * glade_xml_node_next (GladeXmlNode *node_in);
gboolean glade_xml_node_verify (GladeXmlNode * node_in, const gchar *name);
gboolean glade_xml_node_verify_silent (GladeXmlNode *node_in, const gchar *name);
const gchar * glade_xml_node_get_name (GladeXmlNode *node_in);
void glade_xml_node_append_child (GladeXmlNode * node, GladeXmlNode * child);
void glade_xml_node_remove (GladeXmlNode *node_in);
gboolean glade_xml_node_is_comment (GladeXmlNode *node_in);
GladeXmlNode * glade_xml_node_next_with_comments (GladeXmlNode *node_in);
GladeXmlNode * glade_xml_node_prev_with_comments (GladeXmlNode * node_in);
GladeXmlNode * glade_xml_node_get_children_with_comments (GladeXmlNode *node);
GladeXmlNode * glade_xml_node_add_prev_sibling (GladeXmlNode *node, GladeXmlNode *new_node);
GladeXmlNode * glade_xml_node_add_next_sibling (GladeXmlNode *node, GladeXmlNode *new_node);
/* Document Operatons */
GladeXmlNode * glade_xml_doc_get_root (GladeXmlDoc *doc);
GladeXmlDoc * glade_xml_doc_new (void);
void glade_xml_doc_set_root (GladeXmlDoc *doc, GladeXmlNode *node);
void glade_xml_doc_free (GladeXmlDoc *doc_in);
gint glade_xml_doc_save (GladeXmlDoc *doc_in, const gchar *full_path);
GladeXmlNode * glade_xml_doc_new_comment (GladeXmlDoc *doc, const gchar *comment);
/* Parse Context */
GladeXmlContext * glade_xml_context_new (GladeXmlDoc *doc, const gchar *name_space);
void glade_xml_context_destroy (GladeXmlContext *context);
void glade_xml_context_free (GladeXmlContext *context);
GladeXmlContext * glade_xml_context_new_from_path (const gchar *full_path,
const gchar *nspace,
const gchar *root_name);
GladeXmlDoc * glade_xml_context_get_doc (GladeXmlContext *context);
/* Dumps an xml string from a context */
gchar * glade_xml_dump_from_context (GladeXmlContext *context);
gboolean glade_xml_load_sym_from_node (GladeXmlNode *node_in,
GModule *module,
gchar *tagname,
gpointer *sym_location);
G_END_DECLS
#endif /* __GLADE_XML_UTILS_H__ */