diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2020-08-08 21:37:21 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2020-08-08 21:37:21 (GMT) |
commit | 4370d2d77d623f560c7df94a3bc15b1395e4878b (patch) | |
tree | 57cc6268f504c19aaac3b1adda4295ed3b1ddc7f /src/gui/panels/symbols.c | |
parent | 34d28c7418342d3c67be4747b13cdcb124edda32 (diff) |
Updated all the code relative to GUI items.
Diffstat (limited to 'src/gui/panels/symbols.c')
-rw-r--r-- | src/gui/panels/symbols.c | 96 |
1 files changed, 74 insertions, 22 deletions
diff --git a/src/gui/panels/symbols.c b/src/gui/panels/symbols.c index 2cb2b34..ec85479 100644 --- a/src/gui/panels/symbols.c +++ b/src/gui/panels/symbols.c @@ -47,6 +47,7 @@ #include "../../format/symiter.h" #include "../../gtkext/easygtk.h" #include "../../gtkext/gtkdisplaypanel.h" +#include "../../gtkext/named.h" #include "../../gtkext/tmgt.h" #include "../../mangling/demangler.h" @@ -119,6 +120,9 @@ static void g_symbols_panel_dispose(GSymbolsPanel *); /* Procède à la libération totale de la mémoire. */ static void g_symbols_panel_finalize(GSymbolsPanel *); +/* Fournit le nom interne attribué à l'élément réactif. */ +static char *g_symbols_panel_get_key(const GSymbolsPanel *); + /* Bascule d'affichage des symboles en liste. */ static void on_symbols_list_display_toggle(GtkToggleToolButton *, GSymbolsPanel *); @@ -249,7 +253,7 @@ G_DEFINE_TYPE_WITH_CODE(GSymbolsPanel, g_symbols_panel, G_TYPE_PANEL_ITEM, static void g_symbols_panel_class_init(GSymbolsPanelClass *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*/ gchar *filename; /* Chemin d'accès à utiliser */ @@ -258,9 +262,11 @@ static void g_symbols_panel_class_init(GSymbolsPanelClass *klass) object->dispose = (GObjectFinalizeFunc/* ! */)g_symbols_panel_dispose; object->finalize = (GObjectFinalizeFunc)g_symbols_panel_finalize; - editem = G_EDITOR_ITEM_CLASS(klass); + item = G_EDITOR_ITEM_CLASS(klass); + + item->get_key = (get_item_key_fc)g_symbols_panel_get_key; - editem->change_content = (change_item_content_fc)change_symbols_panel_current_content; + item->change_content = (change_item_content_fc)change_symbols_panel_current_content; panel = G_PANEL_ITEM_CLASS(klass); @@ -314,7 +320,6 @@ static void g_symbols_panel_class_init(GSymbolsPanelClass *klass) static void g_symbols_panel_init(GSymbolsPanel *panel) { - GEditorItem *base; /* Version basique d'instance */ GPanelItem *pitem; /* Version parente du panneau */ GtkBuilder *builder; /* Constructeur utilisé */ GtkTreeModelFilter *filter; /* Filtre pour l'arborescence */ @@ -324,20 +329,20 @@ static void g_symbols_panel_init(GSymbolsPanel *panel) /* Eléments de base */ - base = G_EDITOR_ITEM(panel); - - base->name = PANEL_SYMBOLS_ID; - pitem = G_PANEL_ITEM(panel); pitem->personality = PIP_SINGLETON; - pitem->lname = _("Binary symbols"); + + pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Symbols"), + _("Binary symbols"), + PANEL_SYMBOLS_ID)); + pitem->dock_at_startup = true; pitem->path = strdup("MEN"); /* Représentation graphique */ - builder = g_panel_item_build(pitem, "symbols"); + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget)); filter = GTK_TREE_MODEL_FILTER(gtk_builder_get_object(builder, "filter")); gtk_tree_model_filter_set_visible_column(filter, SBC_MATCHED); @@ -387,6 +392,8 @@ static void g_symbols_panel_init(GSymbolsPanel *panel) gtk_builder_connect_signals(builder, panel); + g_object_unref(G_OBJECT(builder)); + } @@ -480,6 +487,29 @@ GPanelItem *g_symbols_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_symbols_panel_get_key(const GSymbolsPanel *panel) +{ + char *result; /* Description à renvoyer */ + + result = strdup(PANEL_SYMBOLS_ID); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : button = bouton de la barre activé. * * panel = structure contenant les informations maîtresses. * * * @@ -501,7 +531,7 @@ static void on_symbols_list_display_toggle(GtkToggleToolButton *button, GSymbols { /* Accès aux boutons complémentaires */ - builder = G_PANEL_ITEM(panel)->builder; + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget)); other = GTK_WIDGET(gtk_builder_get_object(builder, "collapse")); gtk_widget_set_sensitive(other, FALSE); @@ -512,6 +542,8 @@ static void on_symbols_list_display_toggle(GtkToggleToolButton *button, GSymbols other = GTK_WIDGET(gtk_builder_get_object(builder, "classes")); gtk_widget_set_sensitive(other, FALSE); + g_object_unref(G_OBJECT(builder)); + /* Actualisation de l'affichage */ if (panel->binary != NULL) @@ -552,7 +584,7 @@ static void on_symbols_tree_display_toggle(GtkToggleToolButton *button, GSymbols { /* Accès aux boutons complémentaires */ - builder = G_PANEL_ITEM(panel)->builder; + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget)); other = GTK_WIDGET(gtk_builder_get_object(builder, "collapse")); gtk_widget_set_sensitive(other, TRUE); @@ -563,6 +595,8 @@ static void on_symbols_tree_display_toggle(GtkToggleToolButton *button, GSymbols other = GTK_WIDGET(gtk_builder_get_object(builder, "classes")); gtk_widget_set_sensitive(other, TRUE); + g_object_unref(G_OBJECT(builder)); + /* Actualisation de l'affichage */ if (panel->binary != NULL) @@ -671,7 +705,7 @@ static void change_symbols_panel_current_content(GSymbolsPanel *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")); @@ -721,6 +755,8 @@ static void change_symbols_panel_current_content(GSymbolsPanel *panel, GLoadedCo } + g_object_unref(G_OBJECT(builder)); + } @@ -744,7 +780,7 @@ static void reload_symbols_panel_content(const GSymbolsPanel *panel, GtkStatusSt GtkBuilder *builder; /* Constructeur utilisé */ GtkToggleToolButton *button; /* Mode de représentation */ - builder = G_PANEL_ITEM(panel)->builder; + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget)); button = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "list_display")); @@ -754,6 +790,8 @@ static void reload_symbols_panel_content(const GSymbolsPanel *panel, GtkStatusSt else reload_symbols_for_new_tree_view(panel, status, id, data); + g_object_unref(G_OBJECT(builder)); + } @@ -796,7 +834,7 @@ static void reload_symbols_for_new_list_view(const GSymbolsPanel *panel, GtkStat VMPA_BUFFER(virt); /* Version humainement lisible */ GtkTreeIter iter; /* Point d'insertion */ - 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")); @@ -878,6 +916,8 @@ static void reload_symbols_for_new_list_view(const GSymbolsPanel *panel, GtkStat g_object_unref(G_OBJECT(format)); + g_object_unref(G_OBJECT(builder)); + } @@ -947,7 +987,7 @@ static GtkTreeIter ensure_symbol_node_exist(const GSymbolsPanel *panel, GtkTreeI gchar *string; /* Chaîne sélectionnée */ char *name; /* Etiquette mise en relief */ - 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")); @@ -984,6 +1024,8 @@ static GtkTreeIter ensure_symbol_node_exist(const GSymbolsPanel *panel, GtkTreeI } + g_object_unref(G_OBJECT(builder)); + return iter; } @@ -1077,7 +1119,7 @@ static void reload_symbols_for_new_tree_view(const GSymbolsPanel *panel, GtkStat char virt[VMPA_MAX_LEN]; /* Version humainement lisible */ GtkTreeIter iter; /* Point d'insertion */ - 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")); @@ -1195,7 +1237,7 @@ static void reorganize_symbols_tree_view(GtkToolButton *button, const GSymbolsPa GtkToolButton *ref_expand; /* Bouton de référence #2 */ GtkTreeStore *store; /* Modèle de gestion */ - 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")); @@ -1218,6 +1260,8 @@ static void reorganize_symbols_tree_view(GtkToolButton *button, const GSymbolsPa } + g_object_unref(G_OBJECT(builder)); + } @@ -1451,7 +1495,7 @@ static void do_filtering_on_symbols(const GSymbolsPanel *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")); button = GTK_TOGGLE_TOOL_BUTTON(gtk_builder_get_object(builder, "list_display")); @@ -1460,6 +1504,8 @@ static void do_filtering_on_symbols(const GSymbolsPanel *panel, GtkStatusStack * gtk_tree_model_foreach(GTK_TREE_MODEL(store), (GtkTreeModelForeachFunc)filter_symbol_panel_iter, &as_list); + g_object_unref(G_OBJECT(builder)); + } @@ -1594,7 +1640,7 @@ static const char *g_symbols_panel_setup(const GSymbolsPanel *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")); @@ -1618,6 +1664,8 @@ static const char *g_symbols_panel_setup(const GSymbolsPanel *panel, unsigned in gtk_tree_view_map_expanded_rows(treeview, (GtkTreeViewMappingFunc)keep_track_of_expanded, *data); + g_object_unref(G_OBJECT(builder)); + return result; } @@ -1647,7 +1695,7 @@ static void g_symbols_panel_introduce(const GSymbolsPanel *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")); @@ -1659,6 +1707,8 @@ static void g_symbols_panel_introduce(const GSymbolsPanel *panel, unsigned int u gtk_tree_view_set_model(treeview, NULL); } + g_object_unref(G_OBJECT(builder)); + } @@ -1727,7 +1777,7 @@ static void g_symbols_panel_conclude(GSymbolsPanel *panel, unsigned int uid, sym /* 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")); @@ -1753,6 +1803,8 @@ static void g_symbols_panel_conclude(GSymbolsPanel *panel, unsigned int uid, sym if (!gtk_toggle_tool_button_get_active(button)) reorganize_symbols_tree_view(NULL, panel); + g_object_unref(G_OBJECT(builder)); + skip_this_step: g_panel_item_switch_to_updated_content(G_PANEL_ITEM(panel)); |