summaryrefslogtreecommitdiff
path: root/src/gui/panels/regedit.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-11-27 23:08:36 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-11-27 23:08:36 (GMT)
commit425f8ce0e40592287431bd1d3d71e03f5bdcbdd5 (patch)
treea8a555a4708dbb35dc3892648c30358fbf8e010f /src/gui/panels/regedit.c
parentce4b859adf12e1be6e13ea33b5afb1ce773ff1b3 (diff)
Used Glade to build all GUI panels.
Diffstat (limited to 'src/gui/panels/regedit.c')
-rw-r--r--src/gui/panels/regedit.c181
1 files changed, 71 insertions, 110 deletions
diff --git a/src/gui/panels/regedit.c b/src/gui/panels/regedit.c
index 7ec05c0..8ecc99b 100644
--- a/src/gui/panels/regedit.c
+++ b/src/gui/panels/regedit.c
@@ -52,7 +52,6 @@ struct _GRegeditPanel
{
GPanelItem parent; /* A laisser en premier */
- GtkTreeView *treeview; /* Composant d'affichage */
regex_t *filter; /* Filtre appliqué ou NULL */
GtkMenu *menu; /* Menu contextuel pour param. */
@@ -109,7 +108,7 @@ static void reload_config_into_treeview(GRegeditPanel *, GGenConfig *);
static void on_config_param_modified(GCfgParam *, GRegeditPanel *);
/* Actualise la valeur affichée d'un paramètre de configuration. */
-static void update_config_param_value(GtkTreeStore *, GtkTreeIter *);
+static void update_config_param_value(GtkListStore *, GtkTreeIter *);
/* Etablit une comparaison entre deux lignes de paramètres. */
static gint compare_config_list_columns(GtkTreeModel *, GtkTreeIter *, GtkTreeIter *, gpointer);
@@ -118,7 +117,7 @@ static gint compare_config_list_columns(GtkTreeModel *, GtkTreeIter *, GtkTreeIt
static gboolean on_key_pressed_over_params(GtkTreeView *, GdkEventKey *, GRegeditPanel *);
/* Réagit à une édition de la valeur d'un paramètre. */
-static void on_param_value_edited(GtkCellRendererText *, gchar *, gchar *, GtkTreeStore *);
+static void on_param_value_edited(GtkCellRendererText *, gchar *, gchar *, GRegeditPanel *);
@@ -206,14 +205,8 @@ static void g_regedit_panel_init(GRegeditPanel *panel)
{
GEditorItem *base; /* Version basique d'instance */
GPanelItem *pitem; /* Version parente du panneau */
- GObject *ref; /* Espace de référencement */
- GtkWidget *label; /* Etiquette à utiliser */
- GtkWidget *search; /* Zone de recherche */
- GtkWidget *scrolled; /* Fenêtre défilante */
- GtkTreeStore *store; /* Modèle de gestion */
- GtkWidget *treeview; /* Affichage de la liste */
- GtkCellRenderer *renderer; /* Moteur de rendu de colonne */
- GtkTreeViewColumn *column; /* Colonne de la liste */
+ GtkBuilder *builder; /* Constructeur utilisé */
+ GObject *vrenderer; /* Moteur de rendu de colonne */
GtkTreeSortable *sortable; /* Autre vision de la liste */
/* Eléments de base */
@@ -231,93 +224,15 @@ static void g_regedit_panel_init(GRegeditPanel *panel)
/* Représentation graphique */
- base->widget = gtk_grid_new();
- gtk_widget_show(base->widget);
-
- gtk_grid_set_row_spacing(GTK_GRID(base->widget), 8);
-
- ref = G_OBJECT(base->widget);
- g_object_set_data(ref, "panel", panel);
-
- /* Partie recherche */
-
- label = qck_create_label(NULL, NULL, _("Look for:"));
- g_object_set(label, "margin", 8, NULL);
- gtk_grid_attach(GTK_GRID(base->widget), label, 0, 0, 1, 1);
-
- search = gtk_search_entry_new();
- g_signal_connect(search, "search-changed", G_CALLBACK(on_param_search_changed), panel);
- g_signal_connect(search, "focus-in-event", G_CALLBACK(track_focus_change_in_text_area), NULL);
- g_signal_connect(search, "focus-out-event", G_CALLBACK(track_focus_change_in_text_area), NULL);
- gtk_widget_show(search);
- gtk_widget_set_hexpand(search, TRUE);
- gtk_grid_attach_next_to(GTK_GRID(base->widget), search, label, GTK_POS_RIGHT, 1, 1);
-
- /* Partie paramètres */
-
- scrolled = gtk_scrolled_window_new(NULL, NULL);
- gtk_widget_show(scrolled);
- gtk_widget_set_vexpand(scrolled, TRUE);
- gtk_grid_attach_next_to(GTK_GRID(base->widget), scrolled, label, GTK_POS_BOTTOM, 2, 1);
-
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
-
- store = gtk_tree_store_new(LGC_COUNT, G_TYPE_OBJECT, G_TYPE_INT,
- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
-
- treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
- panel->treeview = GTK_TREE_VIEW(treeview);
-
- g_signal_connect(G_OBJECT(treeview), "button-press-event",
- G_CALLBACK(on_button_press_over_params), panel);
- g_signal_connect(G_OBJECT(treeview), "key-press-event",
- G_CALLBACK(on_key_pressed_over_params), panel);
-
- gtk_widget_show(treeview);
- gtk_container_add(GTK_CONTAINER(scrolled), treeview);
-
- g_object_unref(G_OBJECT(store));
-
- /* Cellules d'affichage */
-
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(_("Access path"), renderer,
- "text", CPC_PATH,
- "weight", CPC_BOLD,
- NULL);
- gtk_tree_view_column_set_sort_column_id(column, CPC_PATH);
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
-
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(_("Status"), renderer,
- "text", CPC_STATUS,
- "weight", CPC_BOLD,
- NULL);
- gtk_tree_view_column_set_sort_column_id(column, CPC_STATUS);
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
-
- renderer = gtk_cell_renderer_text_new();
- column = gtk_tree_view_column_new_with_attributes(_("Type"), renderer,
- "text", CPC_TYPE,
- "weight", CPC_BOLD,
- NULL);
- gtk_tree_view_column_set_sort_column_id(column, CPC_TYPE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
-
- renderer = gtk_cell_renderer_text_new();
- g_object_set(G_OBJECT(renderer), "editable", TRUE, NULL);
- g_signal_connect(renderer, "edited", G_CALLBACK(on_param_value_edited), store);
- column = gtk_tree_view_column_new_with_attributes(_("Value"), renderer,
- "text", CPC_VALUE,
- "weight", CPC_BOLD,
- NULL);
- gtk_tree_view_column_set_sort_column_id(column, CPC_VALUE);
- gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+ builder = g_panel_item_build(pitem, "regedit");
+
+ vrenderer = G_OBJECT(gtk_builder_get_object(builder, "vrenderer"));
+
+ g_object_set(vrenderer, "editable", TRUE, NULL);
/* Tri de la liste */
- sortable = GTK_TREE_SORTABLE(store);
+ sortable = GTK_TREE_SORTABLE(gtk_builder_get_object(builder, "store"));
gtk_tree_sortable_set_sort_func(sortable, CPC_PATH, compare_config_list_columns,
GINT_TO_POINTER(CPC_PATH), NULL);
@@ -337,6 +252,18 @@ static void g_regedit_panel_init(GRegeditPanel *panel)
panel->menu = build_param_panel_menu(panel);
+ /* Connexion des signaux */
+
+ gtk_builder_add_callback_symbols(builder,
+ "on_param_search_changed", G_CALLBACK(on_param_search_changed),
+ "track_focus_change_in_text_area", G_CALLBACK(track_focus_change_in_text_area),
+ "on_button_press_over_params", G_CALLBACK(on_button_press_over_params),
+ "on_key_pressed_over_params", G_CALLBACK(on_key_pressed_over_params),
+ "on_param_value_edited", G_CALLBACK(on_param_value_edited),
+ NULL);
+
+ gtk_builder_connect_signals(builder, panel);
+
}
@@ -430,15 +357,19 @@ GPanelItem *g_regedit_panel_new(void)
static void reload_config_into_treeview(GRegeditPanel *panel, GGenConfig *config)
{
- GtkTreeStore *store; /* Modèle de gestion */
+ GtkBuilder *builder; /* Constructeur utilisé */
+ GtkListStore *store; /* Modèle de gestion */
GList *params; /* Paramètres de configuration */
GCfgParam *param; /* Paramètre en cours d'étude */
GList *p; /* Boucle de parcours */
char *type_desc; /* Type de paramètre */
GtkTreeIter iter; /* Point d'insertion */
- store = GTK_TREE_STORE(gtk_tree_view_get_model(panel->treeview));
- gtk_tree_store_clear(store);
+ builder = G_PANEL_ITEM(panel)->builder;
+
+ store = GTK_LIST_STORE(gtk_builder_get_object(builder, "store"));
+
+ gtk_list_store_clear(store);
g_generic_config_rlock(config);
@@ -475,8 +406,8 @@ static void reload_config_into_treeview(GRegeditPanel *panel, GGenConfig *config
}
- gtk_tree_store_append(store, &iter, NULL);
- gtk_tree_store_set(store, &iter,
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
CPC_PARAM, param,
CPC_PATH, g_config_param_get_path(param),
CPC_TYPE, type_desc,
@@ -508,14 +439,20 @@ static void reload_config_into_treeview(GRegeditPanel *panel, GGenConfig *config
static void on_config_param_modified(GCfgParam *param, GRegeditPanel *panel)
{
+ GtkBuilder *builder; /* Constructeur utilisé */
+ GtkTreeView *treeview; /* Affichage de la liste */
GtkTreeModel *model; /* Gestionnaire de données */
GtkTreeIter iter; /* Point de recherche */
gboolean looping; /* Autorisation de bouclage */
GCfgParam *item; /* Elément de la liste */
- model = gtk_tree_view_get_model(panel->treeview);
+ builder = G_PANEL_ITEM(panel)->builder;
+
+ treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview"));
+
+ model = gtk_tree_view_get_model(treeview);
- for (looping = gtk_tree_model_get_iter_first (model, &iter);
+ for (looping = gtk_tree_model_get_iter_first(model, &iter);
looping;
looping = gtk_tree_model_iter_next(model, &iter))
{
@@ -523,7 +460,7 @@ static void on_config_param_modified(GCfgParam *param, GRegeditPanel *panel)
if (item == param)
{
- update_config_param_value(GTK_TREE_STORE(model), &iter);
+ update_config_param_value(GTK_LIST_STORE(model), &iter);
break;
}
@@ -546,7 +483,7 @@ static void on_config_param_modified(GCfgParam *param, GRegeditPanel *panel)
* *
******************************************************************************/
-static void update_config_param_value(GtkTreeStore *store, GtkTreeIter *iter)
+static void update_config_param_value(GtkListStore *store, GtkTreeIter *iter)
{
GCfgParam *param; /* Paramètre à consulter */
ConfigParamState state; /* Etat du paramètre */
@@ -606,7 +543,7 @@ static void update_config_param_value(GtkTreeStore *store, GtkTreeIter *iter)
}
- gtk_tree_store_set(store, iter,
+ gtk_list_store_set(store, iter,
CPC_BOLD, state & CPS_DEFAULT ? 400 : 800,
CPC_STATUS, state_desc,
CPC_VALUE, desc, -1);
@@ -718,7 +655,7 @@ static gboolean on_key_pressed_over_params(GtkTreeView *treeview, GdkEventKey *e
* Paramètres : renderer = moteur de rendu pour la cellule. *
* path = chemin d'accès vers la cellule éditée. *
* new = nouvelle valeur sous forme de texte à valider. *
-* store = gestionnaire des données de la liste affichée. *
+* panel = panneau d'affichage sur lequel s'appuyer. *
* *
* Description : Réagit à une édition de la valeur d'un paramètre. *
* *
@@ -728,8 +665,10 @@ static gboolean on_key_pressed_over_params(GtkTreeView *treeview, GdkEventKey *e
* *
******************************************************************************/
-static void on_param_value_edited(GtkCellRendererText *renderer, gchar *path, gchar *new, GtkTreeStore *store)
+static void on_param_value_edited(GtkCellRendererText *renderer, gchar *path, gchar *new, GRegeditPanel *panel)
{
+ GtkBuilder *builder; /* Constructeur utilisé */
+ GtkListStore *store; /* Modèle de gestion */
GtkTreePath *tree_path; /* Chemin d'accès natif */
GtkTreeIter iter; /* Point de la modification */
GCfgParam *param; /* Paramètre à actualiser */
@@ -738,6 +677,10 @@ 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;
+
+ store = GTK_LIST_STORE(gtk_builder_get_object(builder, "store"));
+
tree_path = gtk_tree_path_new_from_string(path);
if (tree_path == NULL) return;
@@ -1004,12 +947,18 @@ static GCfgParam *get_selected_panel_param(GtkTreeView *treeview, GtkTreeIter *s
static void mcb_param_panel_copy(GtkMenuItem *menuitem, GRegeditPanel *panel)
{
+ GtkBuilder *builder; /* Constructeur utilisé */
+ GtkTreeView *treeview; /* Affichage de la liste */
GCfgParam *param; /* Paramètre sélectionné */
const char *content; /* Prochain contenu à diffuser */
gint clen; /* Taille de ce contenu */
GtkClipboard *clipboard; /* Presse-papiers à remplir */
- param = get_selected_panel_param(panel->treeview, NULL);
+ builder = G_PANEL_ITEM(panel)->builder;
+
+ 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);
@@ -1041,9 +990,15 @@ static void mcb_param_panel_copy(GtkMenuItem *menuitem, GRegeditPanel *panel)
static void mcb_param_panel_empty(GtkMenuItem *menuitem, GRegeditPanel *panel)
{
+ GtkBuilder *builder; /* Constructeur utilisé */
+ GtkTreeView *treeview; /* Affichage de la liste */
GCfgParam *param; /* Paramètre sélectionné */
- param = get_selected_panel_param(panel->treeview, NULL);
+ builder = G_PANEL_ITEM(panel)->builder;
+
+ 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);
@@ -1068,9 +1023,15 @@ static void mcb_param_panel_empty(GtkMenuItem *menuitem, GRegeditPanel *panel)
static void mcb_param_panel_reset(GtkMenuItem *menuitem, GRegeditPanel *panel)
{
+ GtkBuilder *builder; /* Constructeur utilisé */
+ GtkTreeView *treeview; /* Affichage de la liste */
GCfgParam *param; /* Paramètre sélectionné */
- param = get_selected_panel_param(panel->treeview, NULL);
+ builder = G_PANEL_ITEM(panel)->builder;
+
+ 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);