diff options
Diffstat (limited to 'src/gui/panels/panel.c')
-rw-r--r-- | src/gui/panels/panel.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/gui/panels/panel.c b/src/gui/panels/panel.c index 6536977..80de791 100644 --- a/src/gui/panels/panel.c +++ b/src/gui/panels/panel.c @@ -170,6 +170,9 @@ static void g_panel_item_dockable_interface_init(GtkDockableInterface *iface) static void g_panel_item_dispose(GPanelItem *item) { + if (item->builder != NULL) // REMME + g_object_unref(G_OBJECT(item->builder)); + G_OBJECT_CLASS(g_panel_item_parent_class)->dispose(G_OBJECT(item)); } @@ -240,6 +243,46 @@ GPanelItem *g_panel_item_new(PanelItemPersonality personality, const char *name, /****************************************************************************** * * +* Paramètres : item = panneau dont la construction est à poursuivre. * +* name = nom associé à l'élément dans les ressources globales. * +* * +* Description : Charge les éléments graphiques du panneau via les ressources.* +* * +* Retour : Constructeur mis en place, afin de faciliter son usage. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkBuilder *g_panel_item_build(GPanelItem *item, const char *name) +{ + GtkBuilder *result; /* Constructeur à retourner */ + char *path; /* Chemin d'accès à constituer */ + GEditorItem *base; /* Version basique d'instance */ + + asprintf(&path, "/org/chrysalide/gui/panels/%s.ui", name); + + result = gtk_builder_new_from_resource(path); + + free(path); + + item->builder = result; + + base = G_EDITOR_ITEM(item); + + base->widget = GTK_WIDGET(gtk_builder_get_object(result, "box")); + + g_object_ref(G_OBJECT(base->widget)); + + gtk_widget_unparent(base->widget); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : item = instance GTK dont l'interface est à consulter. * * * * Description : Fournit le nom court du composant encapsulable. * |