summaryrefslogtreecommitdiff
path: root/src/gui/panels/regedit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/panels/regedit.c')
-rw-r--r--src/gui/panels/regedit.c111
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));
}