|  |  |  | LibBonoboUI API Reference Manual |  | 
|---|---|---|---|---|
            BonoboUISync;
void        (*BonoboUISyncStateFn)          (BonoboUISync *sync,
                                             BonoboUINode *node,
                                             BonoboUINode *cmd_node,
                                             GtkWidget *widget,
                                             GtkWidget *parent);
GtkWidget*  (*BonoboUISyncBuildFn)          (BonoboUISync *sync,
                                             BonoboUINode *node,
                                             BonoboUINode *cmd_node,
                                             int *pos,
                                             GtkWidget *parent);
            BonoboUISyncPrivate;
            BonoboUISyncClass;
BonoboUISync* bonobo_ui_sync_construct      (BonoboUISync *sync,
                                             BonoboUIEngine *engine,
                                             gboolean is_recursive,
                                             gboolean has_widgets);
gboolean    bonobo_ui_sync_is_recursive     (BonoboUISync *sync);
gboolean    bonobo_ui_sync_has_widgets      (BonoboUISync *sync);
void        bonobo_ui_sync_remove_root      (BonoboUISync *sync,
                                             BonoboUINode *root);
void        bonobo_ui_sync_update_root      (BonoboUISync *sync,
                                             BonoboUINode *root);
void        bonobo_ui_sync_state            (BonoboUISync *sync,
                                             BonoboUINode *node,
                                             BonoboUINode *cmd_node,
                                             GtkWidget *widget,
                                             GtkWidget *parent);
void        bonobo_ui_sync_state_placeholder
                                            (BonoboUISync *sync,
                                             BonoboUINode *node,
                                             BonoboUINode *cmd_node,
                                             GtkWidget *widget,
                                             GtkWidget *parent);
GtkWidget*  bonobo_ui_sync_build            (BonoboUISync *sync,
                                             BonoboUINode *node,
                                             BonoboUINode *cmd_node,
                                             int *pos,
                                             GtkWidget *parent);
GtkWidget*  bonobo_ui_sync_build_placeholder
                                            (BonoboUISync *sync,
                                             BonoboUINode *node,
                                             BonoboUINode *cmd_node,
                                             int *pos,
                                             GtkWidget *parent);
gboolean    bonobo_ui_sync_ignore_widget    (BonoboUISync *sync,
                                             GtkWidget *widget);
GList*      bonobo_ui_sync_get_widgets      (BonoboUISync *sync,
                                             BonoboUINode *node);
void        bonobo_ui_sync_stamp_root       (BonoboUISync *sync);
gboolean    bonobo_ui_sync_can_handle       (BonoboUISync *sync,
                                             BonoboUINode *node);
GtkWidget*  bonobo_ui_sync_get_attached     (BonoboUISync *sync,
                                             GtkWidget *widget,
                                             BonoboUINode *node);
void        bonobo_ui_sync_state_update     (BonoboUISync *sync,
                                             GtkWidget *widget,
                                             const char *new_state);
gboolean    bonobo_ui_sync_do_show_hide     (BonoboUISync *sync,
                                             BonoboUINode *node,
                                             BonoboUINode *cmd_node,
                                             GtkWidget *widget);
GtkWidget*  bonobo_ui_sync_wrap_widget      (BonoboUISync *sync,
                                             GtkWidget *custom_widget);
GType       bonobo_ui_sync_keys_get_type    (void);
GType       bonobo_ui_sync_menu_get_type    (void);
GType       bonobo_ui_sync_status_get_type  (void);
GType       bonobo_ui_sync_toolbar_get_type (void);
The BonoboUISynchronizer is used internaly by the BonoboUIEngine. Writing one is a very advanced topic, and should only be attempted by carefuly study of the code. No normal user should need to write his own synchronizer.
void (*BonoboUISyncStateFn) (BonoboUISync *sync, BonoboUINode *node, BonoboUINode *cmd_node, GtkWidget *widget, GtkWidget *parent);
| sync: | |
| node: | |
| cmd_node: | |
| widget: | |
| parent: | 
GtkWidget* (*BonoboUISyncBuildFn) (BonoboUISync *sync, BonoboUINode *node, BonoboUINode *cmd_node, int *pos, GtkWidget *parent);
| sync: | |
| node: | |
| cmd_node: | |
| pos: | |
| parent: | |
| Returns : | 
typedef struct {
	GObjectClass parent_class;
	BonoboUISyncStateFn sync_state;
	BonoboUISyncStateFn sync_state_placeholder;
	BonoboUISyncBuildFn build;
	BonoboUISyncBuildFn build_placeholder;
	void          (*update_root)     (BonoboUISync     *sync,
					  BonoboUINode     *root);
	void          (*remove_root)     (BonoboUISync     *sync,
					  BonoboUINode     *root);
	GList        *(*get_widgets)     (BonoboUISync     *sync,
					  BonoboUINode     *node);
	void          (*state_update)    (BonoboUISync     *sync,
					  GtkWidget        *widget,
					  const char       *new_state);
	
	gboolean      (*ignore_widget)   (BonoboUISync     *sync,
					  GtkWidget        *widget);
	
	gboolean      (*can_handle)      (BonoboUISync     *sync,
					  BonoboUINode     *node);
	
        void          (*stamp_root)      (BonoboUISync     *sync);
	GtkWidget    *(*get_attached)    (BonoboUISync     *sync,
					  GtkWidget        *widget,
					  BonoboUINode     *node);
	GtkWidget    *(*wrap_widget)     (BonoboUISync     *sync,
					  GtkWidget        *custom_widget);
} BonoboUISyncClass;
BonoboUISync* bonobo_ui_sync_construct (BonoboUISync *sync, BonoboUIEngine *engine, gboolean is_recursive, gboolean has_widgets);
Used to construct a new synchronizer object
| sync: | the synchronizer | 
| engine: | the associated engine | 
| is_recursive: | whether it deals with its children recursively | 
| has_widgets: | whether it has associated widgets. | 
| Returns : | the new object. | 
gboolean bonobo_ui_sync_is_recursive (BonoboUISync *sync);
| sync: | the synchronizer | 
| Returns : | whether this deals with its children recursively | 
gboolean bonobo_ui_sync_has_widgets (BonoboUISync *sync);
| sync: | the synchronizer | 
| Returns : | whether this deals with widgets | 
void bonobo_ui_sync_remove_root (BonoboUISync *sync, BonoboUINode *root);
This is called when a 'root' or toplevel node is removed that this synchronizer deals with. eg. in the toolbar case, this might trigger hiding an associated dock item.
| sync: | the synchronizer | 
| root: | the toplevel node to be removed. | 
void bonobo_ui_sync_update_root (BonoboUISync *sync, BonoboUINode *root);
This flags the fact that a toplevel node has changed and is used primarily by non-recursive handlers, such as the keybinding sync method.
| sync: | the synchronizer | 
| root: | the toplevel node | 
void bonobo_ui_sync_state (BonoboUISync *sync, BonoboUINode *node, BonoboUINode *cmd_node, GtkWidget *widget, GtkWidget *parent);
This method is used to synchronize the state of a node
with that of a widget, by ensuring the pertainant
attributes are reflected in the widget view.
| sync: | the synchronizer | 
| node: | the node | 
| cmd_node: | the associated command node | 
| widget: | the widget | 
| parent: | the parent of node | 
void        bonobo_ui_sync_state_placeholder
                                            (BonoboUISync *sync,
                                             BonoboUINode *node,
                                             BonoboUINode *cmd_node,
                                             GtkWidget *widget,
                                             GtkWidget *parent);
This synchronizes the state of a placeholder, there is a default implementation for this method.
| sync: | the synchronizer | 
| node: | the node | 
| cmd_node: | the associated command node | 
| widget: | the widget | 
| parent: | the parent of node | 
GtkWidget* bonobo_ui_sync_build (BonoboUISync *sync, BonoboUINode *node, BonoboUINode *cmd_node, int *pos, GtkWidget *parent);
This function causes a child widget to be build that matches
node's attributes. This should then be inserted by into
parent's associated widget at position pos in the container.
| sync: | the synchronizer | 
| node: | the node | 
| cmd_node: | the associated command node | 
| pos: | the position in the parent container to insert at | 
| parent: | the parent of node | 
| Returns : | the freshly built widget. | 
GtkWidget* bonobo_ui_sync_build_placeholder (BonoboUISync *sync, BonoboUINode *node, BonoboUINode *cmd_node, int *pos, GtkWidget *parent);
As for bonobo_ui_sync_build but for placeholders
| sync: | the synchronizer | 
| node: | the node | 
| cmd_node: | the associated command node | 
| pos: | position in the parent to insert the built widget | 
| parent: | the parent of node | 
| Returns : | the freshly built widget. | 
gboolean bonobo_ui_sync_ignore_widget (BonoboUISync *sync, GtkWidget *widget);
| sync: | the synchronizer | 
| widget: | the widget | 
| Returns : | TRUE if this widget should be ignored in a container this is the case for eg. menu tearoffs items, and toolbar popout items. | 
GList* bonobo_ui_sync_get_widgets (BonoboUISync *sync, BonoboUINode *node);
This method is used to obtain a sensibly ordered list
of child widgets of the container associated with node.
Essentialy this does something like gtk_container_children
but preserving the visible order of the widgets in the list.
| sync: | the synchronizer | 
| node: | the node | 
| Returns : | An ordered list of child widgets of node | 
void bonobo_ui_sync_stamp_root (BonoboUISync *sync);
This asks the synchronizer to stamp all its associated root widget containers into the XML tree.
| sync: | the synchronizer | 
gboolean bonobo_ui_sync_can_handle (BonoboUISync *sync, BonoboUINode *node);
This is used to determine which, of multiple synchronizers can be used to deal with a specific node type. Each synchronizer deals with different types of node.
| sync: | the synchronizer | 
| node: | the node | 
| Returns : | TRUE if the synchronizer can deal with this node type | 
GtkWidget* bonobo_ui_sync_get_attached (BonoboUISync *sync, GtkWidget *widget, BonoboUINode *node);
This is used to get an 'attached' widget - some widgets have associated widgets that are coupled in strange ways - eg. GtkMenuItem <-> GtkMenuShell It is neccessary to store the GtkContainer item of these couples in the XML tree, since then we can do things more genericaly and cleanly.
| sync: | the synchronizer | 
| widget: | the widget | 
| node: | the node | 
| Returns : | an associated widget or NULL if none exists. | 
void bonobo_ui_sync_state_update (BonoboUISync *sync, GtkWidget *widget, const char *new_state);
This is used to synchronize state with a stateful widget, eg. when a "state" attribute is set, this is not reflected in the normal 'state-sync' process, but occurs later with a set of state_updates to avoid re-enterancy problems.
| sync: | the synchronizer | 
| widget: | the widget | 
| new_state: | the new state | 
gboolean bonobo_ui_sync_do_show_hide (BonoboUISync *sync, BonoboUINode *node, BonoboUINode *cmd_node, GtkWidget *widget);
This is a helper function that applies the hidden attribute
from either the node or fallback to the cmd_node to the
widget.
| sync: | the synchronizer | 
| node: | the node | 
| cmd_node: | the associated command node | 
| widget: | the widget | 
| Returns : | TRUE if the widget's hidden / shown state changed, this is needed to work around some nasty dock sizing bugs. | 
GtkWidget* bonobo_ui_sync_wrap_widget (BonoboUISync *sync, GtkWidget *custom_widget);
| sync: | |
| custom_widget: | |
| Returns : |