summaryrefslogtreecommitdiff
path: root/src/gui/panels/bintree.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/panels/bintree.c')
-rw-r--r--src/gui/panels/bintree.c83
1 files changed, 65 insertions, 18 deletions
diff --git a/src/gui/panels/bintree.c b/src/gui/panels/bintree.c
index a949b0d..c05c4d4 100644
--- a/src/gui/panels/bintree.c
+++ b/src/gui/panels/bintree.c
@@ -39,12 +39,14 @@
#include "../core/global.h"
#include "../../core/queue.h"
#include "../../gtkext/gtkdisplaypanel.h"
+#include "../../gtkext/named.h"
#include "../../gtkext/tmgt.h"
/* -------------------------- PARTIE PRINCIPALE DU PANNEAU -------------------------- */
+
/* Origine de la dernière ouverture/fermeture reproductible */
typedef enum _UserActionType
{
@@ -113,6 +115,9 @@ static void g_bintree_panel_dispose(GBintreePanel *);
/* Procède à la libération totale de la mémoire. */
static void g_bintree_panel_finalize(GBintreePanel *);
+/* Fournit le nom interne attribué à l'élément réactif. */
+static char *g_bintree_panel_get_key(const GBintreePanel *);
+
/* Modifie la profondeur affichée des portions présentes. */
static void on_depth_spin_value_changed(GtkSpinButton *, const GBintreePanel *);
@@ -222,7 +227,7 @@ G_DEFINE_TYPE_WITH_CODE(GBintreePanel, g_bintree_panel, G_TYPE_PANEL_ITEM,
static void g_bintree_panel_class_init(GBintreePanelClass *klass)
{
GObjectClass *object; /* Autre version de la classe */
- GEditorItemClass *editem; /* Encore une autre vision... */
+ GEditorItemClass *item; /* Encore une autre vision... */
GPanelItemClass *panel; /* Version parente de la classe*/
object = G_OBJECT_CLASS(klass);
@@ -230,9 +235,11 @@ static void g_bintree_panel_class_init(GBintreePanelClass *klass)
object->dispose = (GObjectFinalizeFunc/* ! */)g_bintree_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_bintree_panel_finalize;
- editem = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(klass);
+
+ item->get_key = (get_item_key_fc)g_bintree_panel_get_key;
- editem->change_content = (change_item_content_fc)change_bintree_panel_current_content;
+ item->change_content = (change_item_content_fc)change_bintree_panel_current_content;
panel = G_PANEL_ITEM_CLASS(klass);
@@ -255,7 +262,6 @@ static void g_bintree_panel_class_init(GBintreePanelClass *klass)
static void g_bintree_panel_init(GBintreePanel *panel)
{
- GEditorItem *base; /* Version basique d'instance */
GPanelItem *pitem; /* Version parente du panneau */
GtkBuilder *builder; /* Constructeur utilisé */
GtkTreeView *treeview; /* Affichage de la liste */
@@ -264,14 +270,14 @@ static void g_bintree_panel_init(GBintreePanel *panel)
/* Eléments de base */
- base = G_EDITOR_ITEM(panel);
-
- base->name = PANEL_BINTREE_ID;
-
pitem = G_PANEL_ITEM(panel);
pitem->personality = PIP_SINGLETON;
- pitem->lname = _("Binary tree");
+
+ pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Binary tree"),
+ _("Tree of the binary layout"),
+ PANEL_BINTREE_ID));
+
pitem->dock_at_startup = true;
pitem->path = strdup("MEN");
@@ -283,7 +289,7 @@ static void g_bintree_panel_init(GBintreePanel *panel)
/* Représentation graphique */
- builder = g_panel_item_build(pitem, "bintree");
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget));
/* Liste des portions binaires */
@@ -336,6 +342,8 @@ static void g_bintree_panel_init(GBintreePanel *panel)
gtk_builder_connect_signals(builder, panel);
+ g_object_unref(G_OBJECT(builder));
+
}
@@ -429,6 +437,29 @@ GPanelItem *g_bintree_panel_new(void)
/******************************************************************************
* *
+* Paramètres : panel = instance à consulter. *
+* *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
+* *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_bintree_panel_get_key(const GBintreePanel *panel)
+{
+ char *result; /* Description à renvoyer */
+
+ result = strdup(PANEL_BINTREE_ID);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : button = bouton de réglage de l'affichage. *
* treeview = arborescence dont l'affichage est à moduler. *
* *
@@ -462,7 +493,7 @@ static void on_depth_spin_value_changed(GtkSpinButton *button, const GBintreePan
}
- builder = G_PANEL_ITEM(panel)->builder;
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget));
treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview"));
@@ -472,6 +503,8 @@ static void on_depth_spin_value_changed(GtkSpinButton *button, const GBintreePan
gtk_tree_model_foreach(GTK_TREE_MODEL(store), (GtkTreeModelForeachFunc)apply_max_depth, NULL);
+ g_object_unref(G_OBJECT(builder));
+
}
@@ -557,12 +590,14 @@ static void change_bintree_panel_current_content(GBintreePanel *panel, GLoadedCo
/* Réinitialisation */
- builder = G_PANEL_ITEM(panel)->builder;
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget));
store = GTK_TREE_STORE(gtk_builder_get_object(builder, "store"));
gtk_tree_store_clear(store);
+ g_object_unref(G_OBJECT(builder));
+
/* Si le panneau actif représente un binaire, actualisation de l'affichage */
if (binary != NULL)
@@ -612,7 +647,7 @@ static bool populate_tree_with_portion(GBinPortion *portion, GBinPortion *parent
{
icon = NULL;
- builder = G_PANEL_ITEM(panel)->builder;
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget));
store = GTK_TREE_STORE(gtk_builder_get_object(builder, "store"));
@@ -634,6 +669,8 @@ static bool populate_tree_with_portion(GBinPortion *portion, GBinPortion *parent
update_bintree_node(data, store, &iter, portion);
+ g_object_unref(G_OBJECT(builder));
+
gtk_status_stack_update_activity_value(data->status, data->id, 1);
}
@@ -693,7 +730,7 @@ static void reload_portions_for_new_tree_view(const GBintreePanel *panel, GtkSta
GtkSpinButton *depth_spin; /* Bouton de variation */
GtkTreeView *treeview; /* Arborescence constituée */
- builder = G_PANEL_ITEM(panel)->builder;
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget));
store = GTK_TREE_STORE(gtk_builder_get_object(builder, "store"));
@@ -772,6 +809,8 @@ static void reload_portions_for_new_tree_view(const GBintreePanel *panel, GtkSta
}
+ g_object_unref(G_OBJECT(builder));
+
}
@@ -984,12 +1023,14 @@ static void do_filtering_on_portions(const GBintreePanel *panel, GtkStatusStack
}
- builder = G_PANEL_ITEM(panel)->builder;
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget));
store = GTK_TREE_STORE(gtk_builder_get_object(builder, "store"));
gtk_tree_model_foreach(GTK_TREE_MODEL(store), (GtkTreeModelForeachFunc)filter_portion_panel_iter, NULL);
+ g_object_unref(G_OBJECT(builder));
+
}
@@ -1132,7 +1173,7 @@ static const char *g_bintree_panel_setup(const GBintreePanel *panel, unsigned in
/* Mémorisation de tous les noeuds ouverts */
- builder = G_PANEL_ITEM(panel)->builder;
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget));
treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview"));
@@ -1156,6 +1197,8 @@ static const char *g_bintree_panel_setup(const GBintreePanel *panel, unsigned in
gtk_tree_view_map_expanded_rows(treeview, (GtkTreeViewMappingFunc)keep_track_of_expanded, *data);
+ g_object_unref(G_OBJECT(builder));
+
return result;
}
@@ -1185,7 +1228,7 @@ static void g_bintree_panel_introduce(const GBintreePanel *panel, unsigned int u
g_panel_item_switch_to_updating_mask(G_PANEL_ITEM(panel));
- builder = G_PANEL_ITEM(panel)->builder;
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget));
treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview"));
@@ -1197,6 +1240,8 @@ static void g_bintree_panel_introduce(const GBintreePanel *panel, unsigned int u
gtk_tree_view_set_model(treeview, NULL);
}
+ g_object_unref(G_OBJECT(builder));
+
}
@@ -1264,7 +1309,7 @@ static void g_bintree_panel_conclude(GBintreePanel *panel, unsigned int uid, bin
/* Basculement de l'affichage en ligne */
- builder = G_PANEL_ITEM(panel)->builder;
+ builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget));
treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview"));
@@ -1283,6 +1328,8 @@ static void g_bintree_panel_conclude(GBintreePanel *panel, unsigned int uid, bin
}
+ g_object_unref(G_OBJECT(builder));
+
skip_this_step:
g_panel_item_switch_to_updated_content(G_PANEL_ITEM(panel));