Commit e1af8a18 authored by Corentin Noël's avatar Corentin Noël Committed by Alberto Fanjul

introspection: Add many annotations to sources

parent fdce8f8d
Pipeline #72440 passed with stages
in 2 minutes and 8 seconds
......@@ -273,6 +273,11 @@ glade_adaptor_chooser_class_init (GladeAdaptorChooserClass *klass)
/* Public API */
/**
* glade_adaptor_chooser_new:
*
* Returns: (transfer full): A new #GladeAdaptorChooser
*/
GtkWidget *
glade_adaptor_chooser_new ()
{
......@@ -337,6 +342,12 @@ glade_adaptor_chooser_set_project (GladeAdaptorChooser *chooser,
glade_adaptor_chooser_update_adaptor (chooser);
}
/**
* glade_adaptor_chooser_get_project:
* @chooser: a #GladeAdaptorChooser
*
* Returns: (transfer full): A #GladeProject
*/
GladeProject *
glade_adaptor_chooser_get_project (GladeAdaptorChooser *chooser)
{
......
......@@ -34,9 +34,9 @@ G_DECLARE_FINAL_TYPE (GladeAdaptorChooser, glade_adaptor_chooser, GLADE, ADAPTOR
GtkWidget *glade_adaptor_chooser_new (void);
void glade_adaptor_chooser_set_project (GladeAdaptorChooser *bar,
void glade_adaptor_chooser_set_project (GladeAdaptorChooser *chooser,
GladeProject *project);
GladeProject *glade_adaptor_chooser_get_project (GladeAdaptorChooser *bar);
GladeProject *glade_adaptor_chooser_get_project (GladeAdaptorChooser *chooser);
G_END_DECLS
......
......@@ -514,9 +514,9 @@ glade_app_do_event (GdkEvent *event)
/**
* glade_app_config_save
*
* Saves the GKeyFile to "g_get_user_config_dir()/GLADE_CONFIG_FILENAME"
* Saves the #GKeyFile to "g_get_user_config_dir()/GLADE_CONFIG_FILENAME"
*
* Return 0 on success.
* Returns: 0 on success.
*/
gint
glade_app_config_save ()
......@@ -626,6 +626,11 @@ glade_app_config_save ()
return 0;
}
/**
* glade_app_get:
*
* Returns: (transfer none): the #GladeApp
*/
GladeApp *
glade_app_get (void)
{
......@@ -637,6 +642,12 @@ glade_app_get (void)
return singleton_app;
}
/**
* glade_app_set_window:
* @window: (transfer full): a #GtkWidget
*
* Set the window of the application
*/
void
glade_app_set_window (GtkWidget *window)
{
......@@ -645,6 +656,12 @@ glade_app_set_window (GtkWidget *window)
app->priv->window = window;
}
/**
* glade_app_get_catalog:
* @name: the name of the catalog
*
* Returns: (transfer none) (nullable): a #GladeCatalog or %NULL if none is found
*/
GladeCatalog *
glade_app_get_catalog (const gchar *name)
{
......@@ -663,6 +680,16 @@ glade_app_get_catalog (const gchar *name)
return NULL;
}
/**
* glade_app_get_catalog_version:
* @name: the name of the #GladeCatalog
* @major: (out) (optional): the major version
* @minor: (out) (optional): the minor version
*
* Returns: %TRUE if the catalog has been found. It is a programming error
* to call this function with an unexisting catalog, returns %FALSE in this
* case and throws a warning.
*/
gboolean
glade_app_get_catalog_version (const gchar *name, gint *major, gint *minor)
{
......@@ -678,6 +705,11 @@ glade_app_get_catalog_version (const gchar *name, gint *major, gint *minor)
return TRUE;
}
/**
* glade_app_get_catalogs:
*
* Returns: (transfer none) (element-type GladeCatalog): a list of #GladeCatalog
*/
GList *
glade_app_get_catalogs (void)
{
......@@ -686,7 +718,11 @@ glade_app_get_catalogs (void)
return app->priv->catalogs;
}
/**
* glade_app_get_window:
*
* Returns: (transfer none): a #GtkWidget
*/
GtkWidget *
glade_app_get_window (void)
{
......@@ -694,16 +730,22 @@ glade_app_get_window (void)
return app->priv->window;
}
/**
* glade_app_get_clipboard:
*
* Returns: (transfer none): a #GladeClipboard
*/
GladeClipboard *
glade_app_get_clipboard (void)
{
GladeApp *app = glade_app_get ();
return app->priv->clipboard;
}
/**
* glade_app_get_catalogs:
* glade_app_get_projects:
*
* Return value: (element-type GladeCatalog): catalogs
* Returns: (element-type GladeCatalog) (transfer none): a list of #GladeCatalog
*/
GList *
glade_app_get_projects (void)
......@@ -712,6 +754,11 @@ glade_app_get_projects (void)
return app->priv->projects;
}
/**
* glade_app_get_config:
*
* Returns: (transfer full): a #GKeyFile
*/
GKeyFile *
glade_app_get_config (void)
{
......@@ -759,7 +806,7 @@ glade_app_is_project_loaded (const gchar *project_path)
*
* Finds an open project with @path
*
* Returns: A #GladeProject, or NULL if no such open project was found
* Returns: (nullable) (transfer none): A #GladeProject, or NULL if no such open project was found
*/
GladeProject *
glade_app_get_project_by_path (const gchar *project_path)
......@@ -792,6 +839,10 @@ glade_app_get_project_by_path (const gchar *project_path)
return NULL;
}
/**
* glade_app_add_project:
* @project: the project to add to the #GladeApp
*/
void
glade_app_add_project (GladeProject *project)
{
......@@ -809,6 +860,10 @@ glade_app_add_project (GladeProject *project)
app->priv->projects = g_list_append (app->priv->projects, g_object_ref (project));
}
/**
* glade_app_remove_project:
* @project: the project to remove from the #GladeApp
*/
void
glade_app_remove_project (GladeProject *project)
{
......@@ -826,8 +881,9 @@ glade_app_remove_project (GladeProject *project)
g_object_unref (project);
}
/*
/**
* glade_app_set_accel_group:
* @accel_group: (transfer full): a #GtkAccelGroup to set
*
* Sets @accel_group to app.
* The acceleration group will made available for editor dialog windows
......@@ -844,18 +900,36 @@ glade_app_set_accel_group (GtkAccelGroup *accel_group)
app->priv->accel_group = accel_group;
}
/**
* glade_app_get_accel_group:
*
* Returns: (transfer none): the #GtkAccelGroup
*/
GtkAccelGroup *
glade_app_get_accel_group (void)
{
return glade_app_get ()->priv->accel_group;
}
/**
* glade_app_new:
*
* Returns: (transfer full): the #GladeApp
*/
GladeApp *
glade_app_new (void)
{
return g_object_new (GLADE_TYPE_APP, NULL);
}
/**
* glade_app_search_docs:
* @book: the name of a book
* @page: the name of a page
* @search: the search query
*
* Searches for @book, @page and @search in the documentation.
*/
void
glade_app_search_docs (const gchar *book,
const gchar *page,
......
......@@ -1658,7 +1658,8 @@ glade_base_editor_class_init (GladeBaseEditorClass *klass)
* Create a child widget here if something else must be done other than
* calling glade_command_create() such as creating an intermediate parent.
*
* Returns: the newly created #GladeWidget or NULL if child cant be created
* Returns: (transfer full) (nullable): the newly created #GladeWidget or
* %NULL if child cant be created
*/
glade_base_editor_signals[SIGNAL_BUILD_CHILD] =
g_signal_new ("build-child",
......@@ -2077,7 +2078,7 @@ glade_base_editor_help (GtkButton *button, gchar *markup)
*
* This convenience function create a new dialog window and packs @editor in it.
*
* Returns: the newly created window
* Returns: (transfer full): the newly created window
*/
GtkWidget *
glade_base_editor_pack_new_window (GladeBaseEditor *editor,
......
......@@ -49,12 +49,12 @@ struct _GladeBaseEditorClass
{
GtkBoxClass parent_class;
void (*child_selected) (GladeBaseEditor *, GladeWidget *);
gboolean (*change_type) (GladeBaseEditor *, GladeWidget *, GType);
gchar * (*get_display_name) (GladeBaseEditor *, GladeWidget *);
GladeWidget * (*build_child) (GladeBaseEditor *, GladeWidget *, GType);
gboolean (*delete_child) (GladeBaseEditor *, GladeWidget *, GladeWidget *);
gboolean (*move_child) (GladeBaseEditor *, GladeWidget *, GladeWidget *);
void (*child_selected) (GladeBaseEditor *editor, GladeWidget *gchild);
gboolean (*change_type) (GladeBaseEditor *editor, GladeWidget *gchild, GType type);
gchar * (*get_display_name) (GladeBaseEditor *editor, GladeWidget *gchild);
GladeWidget * (*build_child) (GladeBaseEditor *editor, GladeWidget *parent, GType type);
gboolean (*delete_child) (GladeBaseEditor *editor, GladeWidget *parent, GladeWidget *gchild);
gboolean (*move_child) (GladeBaseEditor *editor, GladeWidget *gparent, GladeWidget *gchild);
void (* glade_reserved1) (void);
void (* glade_reserved2) (void);
......
......@@ -359,6 +359,11 @@ G_GNUC_END_IGNORE_DEPRECATIONS
return etype;
}
/**
* glade_standard_stock_spec:
*
* Returns: (transfer full): a #GParamSpec describing a list of builtin stock item
*/
GParamSpec *
glade_standard_stock_spec (void)
{
......@@ -367,6 +372,11 @@ glade_standard_stock_spec (void)
GLADE_TYPE_STOCK, 0, G_PARAM_READWRITE);
}
/**
* glade_standard_stock_image_spec:
*
* Returns: (transfer full): a #GParamSpec describing a list of builtin stock image
*/
GParamSpec *
glade_standard_stock_image_spec (void)
{
......@@ -481,6 +491,11 @@ glade_param_objects_get_type (void)
return objects_type;
}
/**
* glade_param_spec_objects:
*
* Returns: (transfer full): a #GParamSpec describing a list of #GObject
*/
GParamSpec *
glade_param_spec_objects (const gchar * name,
const gchar * nick,
......@@ -508,9 +523,14 @@ glade_param_spec_objects_get_type (GladeParamSpecObjects * pspec)
return pspec->type;
}
/* This was developed for the purpose of holding a list
/**
* glade_standard_objects_spec:
*
* This was developed for the purpose of holding a list
* of 'targets' in an AtkRelation (we are setting it up
* as a property)
*
* Returns: (transfer full): a #GParamSpec describing a list of #GObject
*/
GParamSpec *
glade_standard_objects_spec (void)
......@@ -520,7 +540,11 @@ glade_standard_objects_spec (void)
G_TYPE_OBJECT, G_PARAM_READWRITE);
}
/* Pixbuf Type */
/**
* glade_standard_pixbuf_spec:
*
* Returns: (transfer full): a #GParamSpec describing a #GdkPixbuf
*/
GParamSpec *
glade_standard_pixbuf_spec (void)
{
......@@ -530,7 +554,11 @@ glade_standard_pixbuf_spec (void)
G_PARAM_READWRITE);
}
/* GdkColor */
/**
* glade_standard_gdkcolor_spec:
*
* Returns: (transfer full): a #GParamSpec describing a #GdkColor
*/
GParamSpec *
glade_standard_gdkcolor_spec (void)
{
......@@ -542,6 +570,12 @@ glade_standard_gdkcolor_spec (void)
/****************************************************************
* Basic types follow *
****************************************************************/
/**
* glade_standard_int_spec:
*
* Returns: (transfer full): a #GParamSpec describing an int
*/
GParamSpec *
glade_standard_int_spec (void)
{
......@@ -550,6 +584,11 @@ glade_standard_int_spec (void)
G_MININT, G_MAXINT, 0, G_PARAM_READWRITE);
}
/**
* glade_standard_uint_spec:
*
* Returns: (transfer full): a #GParamSpec describing an uint
*/
GParamSpec *
glade_standard_uint_spec (void)
{
......@@ -558,6 +597,11 @@ glade_standard_uint_spec (void)
0, G_MAXUINT, 0, G_PARAM_READWRITE);
}
/**
* glade_standard_string_spec:
*
* Returns: (transfer full): a #GParamSpec describing a string
*/
GParamSpec *
glade_standard_string_spec (void)
{
......@@ -565,6 +609,11 @@ glade_standard_string_spec (void)
_("An entry"), "", G_PARAM_READWRITE);
}
/**
* glade_standard_strv_spec:
*
* Returns: (transfer full): a #GParamSpec describing an array of strings
*/
GParamSpec *
glade_standard_strv_spec (void)
{
......@@ -572,6 +621,11 @@ glade_standard_strv_spec (void)
"String array", G_TYPE_STRV, G_PARAM_READWRITE);
}
/**
* glade_standard_float_spec:
*
* Returns: (transfer full): a #GParamSpec describing a float
*/
GParamSpec *
glade_standard_float_spec (void)
{
......@@ -580,6 +634,11 @@ glade_standard_float_spec (void)
0.0F, G_MAXFLOAT, 0.0F, G_PARAM_READWRITE);
}
/**
* glade_standard_boolean_spec:
*
* Returns: (transfer full): a #GParamSpec describing a boolean
*/
GParamSpec *
glade_standard_boolean_spec (void)
{
......
......@@ -818,7 +818,7 @@ glade_catalog_get_minor_version (GladeCatalog *catalog)
* glade_catalog_get_targets:
* @catalog: a catalog object
*
* Returns: the list of suitable version targets.
* Returns: (transfer none) (element-type GladeTargetableVersion): the list of suitable version targets.
*/
GList *
glade_catalog_get_targets (GladeCatalog *catalog)
......@@ -832,7 +832,7 @@ glade_catalog_get_targets (GladeCatalog *catalog)
* glade_catalog_get_widget_groups:
* @catalog: a catalog object
*
* Returns: the list of widget groups (palette)
* Returns: (transfer none) (element-type GladeWidgetGroup): the list of widget groups (palette)
*/
GList *
glade_catalog_get_widget_groups (GladeCatalog *catalog)
......@@ -846,7 +846,7 @@ glade_catalog_get_widget_groups (GladeCatalog *catalog)
* glade_catalog_get_adaptors:
* @catalog: a catalog object
*
* Returns: the list of widget class adaptors
* Returns: (transfer none) (element-type GladeWidgetAdaptor): the list of widget class adaptors
*/
GList *
glade_catalog_get_adaptors (GladeCatalog *catalog)
......@@ -942,7 +942,7 @@ glade_widget_group_get_expanded (GladeWidgetGroup *group)
* glade_widget_group_get_adaptors:
* @group: a widget group
*
* Returns: a list of class adaptors in the palette
* Returns: (transfer none) (element-type GladeWidgetAdaptor): a list of class adaptors in the palette
*/
const GList *
glade_widget_group_get_adaptors (GladeWidgetGroup *group)
......
......@@ -131,6 +131,12 @@ glade_clipboard_get_has_selection (GladeClipboard *clipboard)
return clipboard->priv->has_selection;
}
/**
* glade_clipboard_widgets:
* @clipboard: a #GladeClipboard
*
* Returns: (element-type GladeWidget) (transfer none): a #GList of #GladeWidgets
*/
GList *
glade_clipboard_widgets (GladeClipboard *clipboard)
{
......@@ -154,7 +160,7 @@ glade_clipboard_new (void)
/**
* glade_clipboard_add:
* @clipboard: a #GladeClipboard
* @widgets: a #GList of #GladeWidgets
* @widgets: (element-type GladeWidget): a #GList of #GladeWidgets
*
* Adds @widgets to @clipboard.
* This increases the reference count of each #GladeWidget in @widgets.
......
......@@ -1791,14 +1791,14 @@ glade_command_add_remove_collapse (GladeCommand *this_cmd,
/**
* glade_command_create:
* @adaptor: A #GladeWidgetAdaptor
* @parent: (allow-none): the parent #GladeWidget to add the new widget to.
* @placeholder: (allow-none): the placeholder which will be substituted by the widget
* @parent: (nullable): the parent #GladeWidget to add the new widget to.
* @placeholder: (nullable): the placeholder which will be substituted by the widget
* @project: the project his widget belongs to.
*
* Creates a new widget using @adaptor and put in place of the @placeholder
* in the @project
*
* Returns: the newly created widget.
* Returns: (transfer full): the newly created widget.
*/
GladeWidget *
glade_command_create (GladeWidgetAdaptor *adaptor,
......
......@@ -50,10 +50,10 @@ struct _GladeCommandClass
{
GObjectClass parent_class;
gboolean (* execute) (GladeCommand *this_cmd);
gboolean (* undo) (GladeCommand *this_cmd);
gboolean (* unifies) (GladeCommand *this_cmd, GladeCommand *other_cmd);
void (* collapse) (GladeCommand *this_cmd, GladeCommand *other_cmd);
gboolean (* execute) (GladeCommand *command);
gboolean (* undo) (GladeCommand *command);
gboolean (* unifies) (GladeCommand *command, GladeCommand *other);
void (* collapse) (GladeCommand *command, GladeCommand *other);
void (* glade_reserved1) (void);
void (* glade_reserved2) (void);
......
......@@ -773,6 +773,12 @@ glade_design_view_class_init (GladeDesignViewClass *klass)
/* Public API */
/**
* glade_design_view_get_project:
* @view: A #GladeDesignView
*
* Returns: (transfer none): a #GladeProject
*/
GladeProject *
glade_design_view_get_project (GladeDesignView *view)
{
......@@ -782,6 +788,12 @@ glade_design_view_get_project (GladeDesignView *view)
}
/**
* glade_design_view_new:
* @project: A #GladeProject
*
* Returns: (transfer full): a new #GladeDesignView
*/
GtkWidget *
glade_design_view_new (GladeProject *project)
{
......@@ -794,6 +806,12 @@ glade_design_view_new (GladeProject *project)
return GTK_WIDGET (view);
}
/**
* glade_design_view_get_from_project:
* @project: A #GladeProject
*
* Returns: (transfer none) (nullable): a #GladeDesignView
*/
GladeDesignView *
glade_design_view_get_from_project (GladeProject *project)
{
......
......@@ -152,7 +152,6 @@ glade_editable_load (GladeEditable *editable, GladeWidget *widget)
g_object_set_qdata (G_OBJECT (editable), glade_editable_loading_quark, GINT_TO_POINTER (FALSE));
}
/**
* glade_editable_set_show_name:
* @editable: A #GladeEditable
......@@ -175,6 +174,12 @@ glade_editable_set_show_name (GladeEditable *editable, gboolean show_name)
iface->set_show_name (editable, show_name);
}
/**
* glade_editable_loaded_widget:
* @editable: A #GladeEditable
*
* Returns: (transfer none) (nullable): a #GladeWidget or %NULL if the editable hasn't been loaded
*/
GladeWidget *
glade_editable_loaded_widget (GladeEditable *editable)
{
......
......@@ -290,6 +290,12 @@ glade_editor_property_get_disable_check (GladeEditorProperty *eprop)
return eprop->priv->disable_check;
}
/**
* glade_editor_property_get_item_label:
* @eprop: a #GladeEditorProperty
*
* Returns: (transfer none): the #GladePropertyLabel
*/
GtkWidget *
glade_editor_property_get_item_label (GladeEditorProperty *eprop)
{
......@@ -317,6 +323,12 @@ glade_editor_property_get_pclass (GladeEditorProperty *eprop)
return eprop->priv->klass;
}
/**
* glade_editor_property_get_property:
* @eprop: a #GladeEditorProperty
*
* Returns: (transfer none): the #GladeProperty
*/
GladeProperty *
glade_editor_property_get_property (GladeEditorProperty *eprop)
{
......
......@@ -83,10 +83,10 @@ struct _GladeEditorProperty
struct _GladeEditorPropertyClass {
GtkBoxClass parent_class;
void (* load) (GladeEditorProperty *, GladeProperty *);
GtkWidget *(* create_input) (GladeEditorProperty *);
void (* commit) (GladeEditorProperty *, GValue *);
void *(* changed) (GladeEditorProperty *, GladeProperty *);
void (* load) (GladeEditorProperty *eprop, GladeProperty *property);
GtkWidget *(* create_input) (GladeEditorProperty *eprop);
void (* commit) (GladeEditorProperty *eprop, GValue *value);
void *(* changed) (GladeEditorProperty *eprop, GladeProperty *property);
void (* glade_reserved1) (void);
void (* glade_reserved2) (void);
......
......@@ -1320,7 +1320,7 @@ editor_widget_name_changed (GladeWidget *widget,
* This convenience function creates a new dialog window to edit @widget
* specifically.
*
* Returns: the newly created dialog window
* Returns: (transfer full): the newly created dialog window
*/
GtkWidget *
glade_editor_dialog_for_widget (GladeWidget *widget)
......
......@@ -1064,9 +1064,9 @@ glade_inspector_set_project (GladeInspector *inspector, GladeProject *project)
* glade_inspector_get_project:
* @inspector: a #GladeInspector
*
* Note that the method does not ref the returned #GladeProject.
* Note that the method does not ref the returned #GladeProject.
*
* Returns: A #GladeProject
* Returns: (transfer none): A #GladeProject
*/
GladeProject *
glade_inspector_get_project (GladeInspector *inspector)
......@@ -1082,7 +1082,7 @@ glade_inspector_get_project (GladeInspector *inspector)
*
* Returns the selected items in the inspector.
*
* Returns: A #GList
* Returns: (transfer container) (element-type GladeWidget): A #GList of #GladeWidget
*/
GList *
glade_inspector_get_selected_items (GladeInspector *inspector)
......@@ -1123,7 +1123,7 @@ glade_inspector_get_selected_items (GladeInspector *inspector)
*
* Creates a new #GladeInspector
*
* Returns: a new #GladeInspector
* Returns: (transfer full): a new #GladeInspector
*/
GtkWidget *
glade_inspector_new (void)
......@@ -1137,7 +1137,7 @@ glade_inspector_new (void)
*
* Creates a new #GladeInspector with @project
*
* Returns: a new #GladeInspector
* Returns: (transfer full): a new #GladeInspector
*/
GtkWidget *
glade_inspector_new_with_project (GladeProject *project)
......
......@@ -1729,10 +1729,10 @@ glade_named_icon_chooser_dialog_new_valist (const gchar *title,
/**
* glade_named_icon_chooser_dialog_new:
* @title: Title of the dialog, or %NULL
* @parent: Transient parent of the dialog, or %NULL,
* @first_button_text: stock ID or text to go in the first button, or %NULL
* @Varargs: response ID for the first button, then additional (button, id)
* @title: (nullable): Title of the dialog, or %NULL
* @parent: (nullable): Transient parent of the dialog, or %NULL,
* @first_button_text: (nullable): stock ID or text to go in the first button, or %NULL
* @...: response ID for the first button, then additional (button, id)
* pairs, ending with %NULL
*
* Creates a new #GladeNamedIconChooserDialog. This function is analogous to
......
......@@ -193,19 +193,6 @@ glade_object_stub_get_property (GObject *object,
}
}
static GType
glade_xml_node_get_type (void)
{
static GType type = 0;
if (type) return type;
type = g_boxed_type_register_static ("GladeXmlNode",
(GBoxedCopyFunc) glade_xml_node_copy,
(GBoxedFreeFunc) glade_xml_node_delete);
return type;
}
static void
glade_object_stub_class_init (GladeObjectStubClass *klass)
{
......
......@@ -686,7 +686,12 @@ glade_palette_new (void)
return GTK_WIDGET (palette);
}
/**
* glade_palette_get_project:
* @palette: a #GladePalette
*
* Returns: (transfer none): a #GladeProject
*/
GladeProject *
glade_palette_get_project (GladePalette *palette)
{
......@@ -884,7 +889,7 @@ glade_palette_get_show_selector_button (GladePalette *palette)
* glade_palette_get_tool_palette:
* @palette: a #GladePalette
*
* Returns: the GtkToolPalette associated to this palette.
* Returns: (transfer none): the GtkToolPalette associated to this palette.
*/
GtkToolPalette *
glade_palette_get_tool_palette (GladePalette *palette)
......
......@@ -633,7 +633,7 @@ glade_placeholder_class_init (GladePlaceholderClass *klass)
/**
* glade_placeholder_new:
*
* Returns: a new #GladePlaceholder cast as a #GtkWidget
* Returns: (transfer full): a new #GladePlaceholder
*/
GtkWidget *
glade_placeholder_new (void)
......@@ -641,6 +641,12 @@ glade_placeholder_new (void)
return g_object_new (GLADE_TYPE_PLACEHOLDER, NULL);
}
/**
* glade_placeholder_get_project:
* @placeholder: a #GladePlaceholder
*
* Returns: (transfer none) (nullable): a #GladeProject
*/
GladeProject *
glade_placeholder_get_project (GladePlaceholder *placeholder)
{
......@@ -649,6 +655,12 @@ glade_placeholder_get_project (GladePlaceholder *placeholder)
return parent ? glade_widget_get_project (parent) : NULL;
}
/**