diff options
Diffstat (limited to 'src/gui/panels/errors.c')
-rw-r--r-- | src/gui/panels/errors.c | 74 |
1 files changed, 58 insertions, 16 deletions
diff --git a/src/gui/panels/errors.c b/src/gui/panels/errors.c index b2300eb..17eabef 100644 --- a/src/gui/panels/errors.c +++ b/src/gui/panels/errors.c @@ -42,6 +42,7 @@ #include "../../format/format.h" #include "../../glibext/signal.h" #include "../../gtkext/gtkdisplaypanel.h" +#include "../../gtkext/named.h" @@ -134,6 +135,9 @@ static void g_error_panel_dispose(GErrorPanel *); /* Procède à la libération totale de la mémoire. */ static void g_error_panel_finalize(GErrorPanel *); +/* Fournit le nom interne attribué à l'élément réactif. */ +static char *g_error_panel_get_key(const GErrorPanel *); + /* Organise le tri des erreurs présentées. */ static gint sort_errors_in_panel(GtkTreeModel *, GtkTreeIter *, GtkTreeIter *, gpointer); @@ -208,7 +212,7 @@ G_DEFINE_TYPE_WITH_CODE(GErrorPanel, g_error_panel, G_TYPE_PANEL_ITEM, static void g_error_panel_class_init(GErrorPanelClass *klass) { GObjectClass *object; /* Autre version de la classe */ - GEditorItemClass *editem; /* Encore une autre vision... */ + GEditorItemClass *item; /* Encore une autre vision... */ gchar *filename; /* Chemin d'accès à utiliser */ GPanelItemClass *panel; /* Version parente de la classe*/ @@ -217,9 +221,11 @@ static void g_error_panel_class_init(GErrorPanelClass *klass) object->dispose = (GObjectFinalizeFunc/* ! */)g_error_panel_dispose; object->finalize = (GObjectFinalizeFunc)g_error_panel_finalize; - editem = G_EDITOR_ITEM_CLASS(klass); + item = G_EDITOR_ITEM_CLASS(klass); + + item->get_key = (get_item_key_fc)g_error_panel_get_key; - editem->change_content = (change_item_content_fc)change_error_panel_current_content; + item->change_content = (change_item_content_fc)change_error_panel_current_content; filename = find_pixmap_file("error_file.png"); assert(filename != NULL); @@ -261,7 +267,6 @@ static void g_error_panel_class_init(GErrorPanelClass *klass) static void g_error_panel_init(GErrorPanel *panel) { - GEditorItem *base; /* Version basique d'instance */ GPanelItem *pitem; /* Version parente du panneau */ GtkBuilder *builder; /* Constructeur utilisé */ GtkTreeSortable *store; /* Gestionnaire des données */ @@ -272,14 +277,14 @@ static void g_error_panel_init(GErrorPanel *panel) /* Eléments de base */ - base = G_EDITOR_ITEM(panel); - - base->name = PANEL_ERRORS_ID; - pitem = G_PANEL_ITEM(panel); pitem->personality = PIP_SINGLETON; - pitem->lname = _("Disassembling errors"); + + pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Errors"), + _("Disassembling errors"), + PANEL_ERRORS_ID)); + pitem->dock_at_startup = true; pitem->path = strdup("Ms"); @@ -289,7 +294,7 @@ static void g_error_panel_init(GErrorPanel *panel) /* Représentation graphique */ - builder = g_panel_item_build(pitem, "errors"); + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget)); store = GTK_TREE_SORTABLE(gtk_builder_get_object(builder, "store")); gtk_tree_sortable_set_sort_func(store, ETC_ADDR, sort_errors_in_panel, NULL, NULL); @@ -340,6 +345,8 @@ static void g_error_panel_init(GErrorPanel *panel) gtk_builder_connect_signals(builder, panel); + g_object_unref(G_OBJECT(builder)); + } @@ -432,6 +439,29 @@ GPanelItem *g_error_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_error_panel_get_key(const GErrorPanel *panel) +{ + char *result; /* Description à renvoyer */ + + result = strdup(PANEL_ERRORS_ID); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : model = gestionnaire de données. * * a = premier élément à traiter. * * b = second élément à traiter. * @@ -499,12 +529,14 @@ static void change_error_panel_current_content(GErrorPanel *panel, GLoadedConten if (panel->binary != NULL) g_object_ref(G_OBJECT(panel->binary)); - builder = G_PANEL_ITEM(panel)->builder; + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget)); store = GTK_LIST_STORE(gtk_builder_get_object(builder, "store")); gtk_list_store_clear(store); + g_object_unref(G_OBJECT(builder)); + /* Actualisation de l'affichage */ panel->count = 0; @@ -550,7 +582,7 @@ static void update_error_panel(const GErrorPanel *panel, GtkStatusStack *status, bool ret; /* Bilan d'une récupération */ #endif - builder = G_PANEL_ITEM(panel)->builder; + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget)); store = GTK_LIST_STORE(gtk_builder_get_object(builder, "store")); @@ -772,6 +804,8 @@ static void update_error_panel(const GErrorPanel *panel, GtkStatusStack *status, } + g_object_unref(G_OBJECT(builder)); + } @@ -824,7 +858,7 @@ static void filter_error_panel(const GErrorPanel *panel, GtkStatusStack *status, guint errno; /* Code d'erreur associé */ gboolean state; /* Bilan d'un filtrage */ - 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_MODEL(gtk_builder_get_object(builder, "store")); @@ -890,6 +924,8 @@ static void filter_error_panel(const GErrorPanel *panel, GtkStatusStack *status, } + g_object_unref(G_OBJECT(builder)); + } @@ -911,7 +947,7 @@ static void update_error_panel_summary(const GErrorPanel *panel) GtkLabel *summary; /* Etiquette à mettre à jour */ char *msg; /* Bilan à faire afficher */ - builder = G_PANEL_ITEM(panel)->builder; + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(G_PANEL_ITEM(panel)->widget)); summary = GTK_LABEL(gtk_builder_get_object(builder, "summary")); @@ -929,6 +965,8 @@ static void update_error_panel_summary(const GErrorPanel *panel) } + g_object_unref(G_OBJECT(builder)); + } @@ -1081,7 +1119,7 @@ static void g_error_panel_introduce(const GErrorPanel *panel, unsigned int uid, 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")); @@ -1093,6 +1131,8 @@ static void g_error_panel_introduce(const GErrorPanel *panel, unsigned int uid, gtk_tree_view_set_model(treeview, NULL); } + g_object_unref(G_OBJECT(builder)); + } @@ -1163,7 +1203,7 @@ static void g_error_panel_conclude(GErrorPanel *panel, unsigned int uid, error_u /* 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")); @@ -1184,6 +1224,8 @@ static void g_error_panel_conclude(GErrorPanel *panel, unsigned int uid, error_u g_object_ref(G_OBJECT(model)); gtk_tree_view_set_model(treeview, model); + g_object_unref(G_OBJECT(builder)); + skip_this_step: g_panel_item_switch_to_updated_content(G_PANEL_ITEM(panel)); |