diff options
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));  } | 
