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/regedit.c | |
parent | 34d28c7418342d3c67be4747b13cdcb124edda32 (diff) |
Updated all the code relative to GUI items.
Diffstat (limited to 'src/gui/panels/regedit.c')
-rw-r--r-- | src/gui/panels/regedit.c | 111 |
1 files changed, 83 insertions, 28 deletions
diff --git a/src/gui/panels/regedit.c b/src/gui/panels/regedit.c index 23543b5..ea324cb 100644 --- a/src/gui/panels/regedit.c +++ b/src/gui/panels/regedit.c @@ -41,6 +41,7 @@ #include "../../common/cpp.h" #include "../../common/extstr.h" #include "../../gtkext/easygtk.h" +#include "../../gtkext/named.h" @@ -96,6 +97,9 @@ static void g_regedit_panel_dispose(GRegeditPanel *); /* Procède à la libération totale de la mémoire. */ static void g_regedit_panel_finalize(GRegeditPanel *); +/* Fournit le nom interne attribué à l'élément réactif. */ +static char *g_regedit_panel_get_key(const GRegeditPanel *); + /* ------------------------- AFFICHAGE A L'AIDE D'UNE LISTE ------------------------- */ @@ -179,12 +183,16 @@ G_DEFINE_TYPE(GRegeditPanel, g_regedit_panel, G_TYPE_PANEL_ITEM); static void g_regedit_panel_class_init(GRegeditPanelClass *klass) { GObjectClass *object; /* Autre version de la classe */ + GEditorItemClass *item; /* Encore une autre vision... */ object = G_OBJECT_CLASS(klass); object->dispose = (GObjectFinalizeFunc/* ! */)g_regedit_panel_dispose; object->finalize = (GObjectFinalizeFunc)g_regedit_panel_finalize; + item = G_EDITOR_ITEM_CLASS(klass); + + item->get_key = (get_item_key_fc)g_regedit_panel_get_key; } @@ -203,7 +211,6 @@ static void g_regedit_panel_class_init(GRegeditPanelClass *klass) static void g_regedit_panel_init(GRegeditPanel *panel) { - GEditorItem *base; /* Version basique d'instance */ GPanelItem *pitem; /* Version parente du panneau */ GtkBuilder *builder; /* Constructeur utilisé */ GObject *vrenderer; /* Moteur de rendu de colonne */ @@ -211,20 +218,20 @@ static void g_regedit_panel_init(GRegeditPanel *panel) /* Eléments de base */ - base = G_EDITOR_ITEM(panel); - - base->name = PANEL_REGEDIT_ID; - pitem = G_PANEL_ITEM(panel); pitem->personality = PIP_SINGLETON; - pitem->lname = _("Configuration parameters"); + + pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Configuration"), + _("Configuration parameters"), + PANEL_REGEDIT_ID)); + pitem->dock_at_startup = false; pitem->path = strdup("M"); /* Représentation graphique */ - builder = g_panel_item_build(pitem, "regedit"); + builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget)); vrenderer = G_OBJECT(gtk_builder_get_object(builder, "vrenderer")); @@ -264,6 +271,8 @@ static void g_regedit_panel_init(GRegeditPanel *panel) gtk_builder_connect_signals(builder, panel); + g_object_unref(G_OBJECT(builder)); + } @@ -336,6 +345,29 @@ GPanelItem *g_regedit_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_regedit_panel_get_key(const GRegeditPanel *panel) +{ + char *result; /* Description à renvoyer */ + + result = strdup(PANEL_REGEDIT_ID); + + return result; + +} + + /* ---------------------------------------------------------------------------------- */ /* AFFICHAGE A L'AIDE D'UNE LISTE */ @@ -365,7 +397,7 @@ static void reload_config_into_treeview(GRegeditPanel *panel, GGenConfig *config char *type_desc; /* Type de paramètre */ 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_LIST_STORE(gtk_builder_get_object(builder, "store")); @@ -425,6 +457,8 @@ static void reload_config_into_treeview(GRegeditPanel *panel, GGenConfig *config g_generic_config_runlock(config); + g_object_unref(G_OBJECT(builder)); + } @@ -450,7 +484,7 @@ static void on_config_param_modified(GCfgParam *param, GRegeditPanel *panel) gboolean looping; /* Autorisation de bouclage */ GCfgParam *item; /* Elément de la liste */ - 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")); @@ -470,6 +504,8 @@ static void on_config_param_modified(GCfgParam *param, GRegeditPanel *panel) } + g_object_unref(G_OBJECT(builder)); + } @@ -685,12 +721,12 @@ static void on_param_value_edited(GtkCellRendererText *renderer, gchar *path, gc int ulong; /* Valeur entière positive */ char *end; /* Pointeur vers '\0' final ? */ - 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")); tree_path = gtk_tree_path_new_from_string(path); - if (tree_path == NULL) return; + if (tree_path == NULL) goto bad_path; if (!gtk_tree_model_get_iter(GTK_TREE_MODEL(store), &iter, tree_path)) goto opve_bad_iter; @@ -749,6 +785,10 @@ static void on_param_value_edited(GtkCellRendererText *renderer, gchar *path, gc gtk_tree_path_free(tree_path); + bad_path: + + g_object_unref(G_OBJECT(builder)); + } @@ -965,23 +1005,28 @@ static void mcb_param_panel_copy(GtkMenuItem *menuitem, GRegeditPanel *panel) gint clen; /* Taille de ce contenu */ GtkClipboard *clipboard; /* Presse-papiers à remplir */ - 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")); param = get_selected_panel_param(treeview, NULL); - if (param == NULL) return; - content = g_config_param_get_path(param); - clen = g_utf8_strlen(content, -1); + if (param == NULL) + { + content = g_config_param_get_path(param); + clen = g_utf8_strlen(content, -1); - clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); - gtk_clipboard_set_text(clipboard, content, clen); + clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); + gtk_clipboard_set_text(clipboard, content, clen); - clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); - gtk_clipboard_set_text(clipboard, content, clen); + clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); + gtk_clipboard_set_text(clipboard, content, clen); - g_object_unref(G_OBJECT(param)); + g_object_unref(G_OBJECT(param)); + + } + + g_object_unref(G_OBJECT(builder)); } @@ -1005,16 +1050,21 @@ static void mcb_param_panel_empty(GtkMenuItem *menuitem, GRegeditPanel *panel) GtkTreeView *treeview; /* Affichage de la liste */ GCfgParam *param; /* Paramètre sélectionné */ - 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")); param = get_selected_panel_param(treeview, NULL); - if (param == NULL) return; - g_config_param_make_empty(param); + if (param == NULL) + { + g_config_param_make_empty(param); - g_object_unref(G_OBJECT(param)); + g_object_unref(G_OBJECT(param)); + + } + + g_object_unref(G_OBJECT(builder)); } @@ -1038,15 +1088,20 @@ static void mcb_param_panel_reset(GtkMenuItem *menuitem, GRegeditPanel *panel) GtkTreeView *treeview; /* Affichage de la liste */ GCfgParam *param; /* Paramètre sélectionné */ - 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")); param = get_selected_panel_param(treeview, NULL); - if (param == NULL) return; - g_config_param_reset(param); + if (param == NULL) + { + g_config_param_reset(param); - g_object_unref(G_OBJECT(param)); + g_object_unref(G_OBJECT(param)); + + } + + g_object_unref(G_OBJECT(builder)); } |