## CongPlugin

CongPlugin —

## Synopsis

    #define     CONG_PLUGIN                     (obj)
    #define     CONG_PLUGIN_CLASS               (klass)
    #define     IS_CONG_PLUGIN                  (obj)
    CongPlugin* cong_plugin_construct           (CongPlugin *plugin,
                                                 const gchar *plugin_id,
                                                 CongPluginCallbackRegister register_callback,
                                                 CongPluginCallbackConfigure configure_callback);
    void        cong_plugin_add_service         (CongPlugin *plugin,
                                                 CongService *service);
    void        cong_plugin_for_each_service    (CongPlugin *plugin,
                                                 void (*callback) (CongService *service,gpointer user_data),
                                                 gpointer user_data);
    void        cong_plugin_for_each_service_of_type
                                                (CongPlugin *plugin,
                                                 GType type,
                                                 void (*callback) (CongService *service,gpointer user_data),
                                                 gpointer user_data);
    CongService* cong_plugin_locate_service_by_id
                                                (CongPlugin *plugin,
                                                 GType type,
                                                 const gchar *service_id);
    CongServiceNodePropertyDialog* cong_plugin_locate_custom_property_dialog_by_id
                                                (CongPlugin *plugin,
                                                 const gchar *service_id);
    CongServiceEditorNodeFactory* cong_plugin_locate_editor_node_factory_by_id
                                                (CongPlugin *plugin,
                                                 const gchar *service_id);
    const gchar* cong_plugin_get_id             (CongPlugin *plugin);
    gchar*      cong_plugin_get_gconf_namespace (CongPlugin *plugin);
    gchar*      cong_plugin_get_gconf_key       (CongPlugin *plugin,
                                                 const gchar *local_part);
    CongDocument* cong_ui_new_document_from_manufactured_xml
                                                (xmlDocPtr xml_doc,
                                                 GtkWindow *parent_window);
    CongDocument* cong_ui_new_document_from_imported_xml
                                                (xmlDocPtr xml_doc,
                                                 GtkWindow *parent_window);
    xmlDocPtr   cong_ui_transform_doc           (CongDocument *doc,
                                                 const gchar *stylesheet_filename,
                                                 GList *list_of_parameters,
                                                 GtkWindow *toplevel_window);
    gboolean    cong_ui_transform_doc_to_uri    (CongDocument *doc,
                                                 const gchar *stylesheet_filename,
                                                 GList *list_of_parameters,
                                                 const gchar *string_uri,
                                                 GtkWindow *toplevel_window);
    gboolean    cong_ui_load_imported_file_content
                                                (const gchar *uri,
                                                 char **buffer,
                                                 GnomeVFSFileSize *size,
                                                 GtkWindow *parent_window);
    void        cong_ui_append_advanced_node_properties_page
                                                (GtkNotebook *notebook,
                                                 CongDocument *doc,
                                                 CongNodePtr node);

## Description

## Details

### CONG_PLUGIN()

    #define CONG_PLUGIN(obj)         G_TYPE_CHECK_INSTANCE_CAST (obj, CONG_PLUGIN_TYPE, CongPlugin)

`obj` : |

### CONG_PLUGIN_CLASS()

    #define CONG_PLUGIN_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass, CONG_PLUGIN_TYPE, CongPluginClass)

`klass` : |

### IS_CONG_PLUGIN()

    #define IS_CONG_PLUGIN(obj)      G_TYPE_CHECK_INSTANCE_TYPE (obj, CONG_PLUGIN_TYPE)

`obj` : |

### cong_plugin_construct ()

    CongPlugin* cong_plugin_construct           (CongPlugin *plugin,
                                                 const gchar *plugin_id,
                                                 CongPluginCallbackRegister register_callback,
                                                 CongPluginCallbackConfigure configure_callback);

TODO: Write me

`plugin` : |
`plugin_id` : |
`register_callback` : |
`configure_callback` : |
Returns : |

### cong_plugin_add_service ()

    void        cong_plugin_add_service         (CongPlugin *plugin,
                                                 CongService *service);

TODO: Write me

`plugin` : |
`service` : |

### cong_plugin_for_each_service ()

    void        cong_plugin_for_each_service    (CongPlugin *plugin,
                                                 void (*callback) (CongService *service,gpointer user_data),
                                                 gpointer user_data);

TODO: Write me

`plugin` : |
`callback` : |
`user_data` : |

### cong_plugin_for_each_service_of_type ()

    void        cong_plugin_for_each_service_of_type
                                                (CongPlugin *plugin,
                                                 GType type,
                                                 void (*callback) (CongService *service,gpointer user_data),
                                                 gpointer user_data);

TODO: Write me

`plugin` : |
`type` : |
`callback` : |
`user_data` : |

### cong_plugin_locate_service_by_id ()

    CongService* cong_plugin_locate_service_by_id
                                                (CongPlugin *plugin,
                                                 GType type,
                                                 const gchar *service_id);

TODO: Write me

`plugin` : |
`type` : |
`service_id` : |
Returns : |

### cong_plugin_locate_custom_property_dialog_by_id ()

    CongServiceNodePropertyDialog* cong_plugin_locate_custom_property_dialog_by_id
                                                (CongPlugin *plugin,
                                                 const gchar *service_id);

TODO: Write me

`plugin` : |
`service_id` : |
Returns : |

### cong_plugin_locate_editor_node_factory_by_id ()

    CongServiceEditorNodeFactory* cong_plugin_locate_editor_node_factory_by_id
                                                (CongPlugin *plugin,
                                                 const gchar *service_id);

TODO: Write me

`plugin` : |
`service_id` : |
Returns : |

### cong_plugin_get_id ()

    const gchar* cong_plugin_get_id             (CongPlugin *plugin);

TODO: Write me

`plugin` : |
Returns : |

### cong_plugin_get_gconf_namespace ()

    gchar*      cong_plugin_get_gconf_namespace (CongPlugin *plugin);

TODO: Write me

`plugin` : |
Returns : |

### cong_plugin_get_gconf_key ()

    gchar*      cong_plugin_get_gconf_key       (CongPlugin *plugin,
                                                 const gchar *local_part);

Convert a "local" GConf key for this plugin to a GConf key with a full-path. e.g. converts "enable-fubar" to "/apps/conglomerate/plugins/docbook/enable-fubar" Caller must delete returned string.

`plugin` : |
`local_part` : |
Returns : |

### cong_ui_new_document_from_manufactured_xml ()

    CongDocument* cong_ui_new_document_from_manufactured_xml
                                                (xmlDocPtr xml_doc,
                                                 GtkWindow *parent_window);

TODO: Write me

`xml_doc` : |
`parent_window` : |
Returns : |

### cong_ui_new_document_from_imported_xml ()

    CongDocument* cong_ui_new_document_from_imported_xml
                                                (xmlDocPtr xml_doc,
                                                 GtkWindow *parent_window);

TODO: Write me

`xml_doc` : |
`parent_window` : |
Returns : |

### cong_ui_transform_doc ()

    xmlDocPtr   cong_ui_transform_doc           (CongDocument *doc,
                                                 const gchar *stylesheet_filename,
                                                 GList *list_of_parameters,
                                                 GtkWindow *toplevel_window);

TODO: Write me

The routine sets all primary windows of Conglomerate to have a busy cursor whilst the processing occurs. It will not pick up any dialog, or other, windows that may have been created by Conglomerate. At the moment this is not a problem, but it may be in the future. It may be possible to use GTK (or GDK) functions to fid all the windows that are currently controlled by Conglomerate, and so avoid this issue.

`doc` : |
`stylesheet_filename` : |
`list_of_parameters` : | a GList of CongStylesheetParameter
`toplevel_window` : |
Returns : |

### cong_ui_transform_doc_to_uri ()

    gboolean    cong_ui_transform_doc_to_uri    (CongDocument *doc,
                                                 const gchar *stylesheet_filename,
                                                 GList *list_of_parameters,
                                                 const gchar *string_uri,
                                                 GtkWindow *toplevel_window);

Applies the stylesheet (`stylesheet_filename`) to the document (`doc`) and saves the output to `string_uri`.

At present, it is assumed that a dialog window will be created if there is an error in the processing (e.g. unable to find the stylesheet or write to the given URI). No dialog is created on success (so that the calling routine can customise such a dialog, or not have one).

It also relies on the #`cong_ui_transform_doc()` routines for providing feed-back to the user that something is happening.

`doc` : |
`stylesheet_filename` : |
`list_of_parameters` : | a GList of CongStylesheetParameter
`string_uri` : |
`toplevel_window` : |
Returns : | true on success, false on failure.

### cong_ui_load_imported_file_content ()

    gboolean    cong_ui_load_imported_file_content
                                                (const gchar *uri,
                                                 char **buffer,
                                                 GnomeVFSFileSize *size,
                                                 GtkWindow *parent_window);

TODO: Write me

`uri` : |
`buffer` : |
`size` : |
`parent_window` : |
Returns : |

### cong_ui_append_advanced_node_properties_page ()

    void        cong_ui_append_advanced_node_properties_page
                                                (GtkNotebook *notebook,
                                                 CongDocument *doc,
                                                 CongNodePtr node);

TODO: Write me

`notebook` : |
`doc` : |
`node` : |