Blame gladeui/glade-xml-utils.h

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