<!-- ##### SECTION Title ##### -->
BonoboUISync

<!-- ##### SECTION Short_Description ##### -->
A Synchronizer object to keep a widget tree in sync with an XML tree.

<!-- ##### SECTION Long_Description ##### -->
<para>
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.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### STRUCT BonoboUISync ##### -->
<para>

</para>


<!-- ##### USER_FUNCTION BonoboUISyncStateFn ##### -->
<para>

</para>

@sync: 
@node: 
@cmd_node: 
@widget: 
@parent: 


<!-- ##### USER_FUNCTION BonoboUISyncBuildFn ##### -->
<para>

</para>

@sync: 
@node: 
@cmd_node: 
@pos: 
@parent: 
@Returns: 


<!-- ##### STRUCT BonoboUISyncPrivate ##### -->
<para>

</para>


<!-- ##### STRUCT BonoboUISyncClass ##### -->
<para>

</para>

@parent_class: 
@sync_state: 
@sync_state_placeholder: 
@build: 
@build_placeholder: 
@update_root: 
@remove_root: 
@get_widgets: 
@state_update: 
@ignore_widget: 
@can_handle: 
@stamp_root: 
@get_attached: 
@wrap_widget: 

<!-- ##### FUNCTION bonobo_ui_sync_construct ##### -->
<para>

</para>

@sync: 
@engine: 
@is_recursive: 
@has_widgets: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_is_recursive ##### -->
<para>

</para>

@sync: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_has_widgets ##### -->
<para>

</para>

@sync: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_remove_root ##### -->
<para>

</para>

@sync: 
@root: 


<!-- ##### FUNCTION bonobo_ui_sync_update_root ##### -->
<para>

</para>

@sync: 
@root: 


<!-- ##### FUNCTION bonobo_ui_sync_state ##### -->
<para>

</para>

@sync: 
@node: 
@cmd_node: 
@widget: 
@parent: 


<!-- ##### FUNCTION bonobo_ui_sync_state_placeholder ##### -->
<para>

</para>

@sync: 
@node: 
@cmd_node: 
@widget: 
@parent: 


<!-- ##### FUNCTION bonobo_ui_sync_build ##### -->
<para>

</para>

@sync: 
@node: 
@cmd_node: 
@pos: 
@parent: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_build_placeholder ##### -->
<para>

</para>

@sync: 
@node: 
@cmd_node: 
@pos: 
@parent: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_ignore_widget ##### -->
<para>

</para>

@sync: 
@widget: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_get_widgets ##### -->
<para>

</para>

@sync: 
@node: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_stamp_root ##### -->
<para>

</para>

@sync: 


<!-- ##### FUNCTION bonobo_ui_sync_can_handle ##### -->
<para>

</para>

@sync: 
@node: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_get_attached ##### -->
<para>

</para>

@sync: 
@widget: 
@node: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_state_update ##### -->
<para>

</para>

@sync: 
@widget: 
@new_state: 


<!-- ##### FUNCTION bonobo_ui_sync_do_show_hide ##### -->
<para>

</para>

@sync: 
@node: 
@cmd_node: 
@widget: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_wrap_widget ##### -->
<para>

</para>

@sync: 
@custom_widget: 
@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_keys_get_type ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_menu_get_type ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_status_get_type ##### -->
<para>

</para>

@Returns: 


<!-- ##### FUNCTION bonobo_ui_sync_toolbar_get_type ##### -->
<para>

</para>

@Returns: 


