diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-11-27 23:08:36 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-11-27 23:08:36 (GMT) |
commit | 425f8ce0e40592287431bd1d3d71e03f5bdcbdd5 (patch) | |
tree | a8a555a4708dbb35dc3892648c30358fbf8e010f /src/gui/panels/history.c | |
parent | ce4b859adf12e1be6e13ea33b5afb1ce773ff1b3 (diff) |
Used Glade to build all GUI panels.
Diffstat (limited to 'src/gui/panels/history.c')
-rw-r--r-- | src/gui/panels/history.c | 160 |
1 files changed, 59 insertions, 101 deletions
diff --git a/src/gui/panels/history.c b/src/gui/panels/history.c index 247c1a1..a1aa36b 100644 --- a/src/gui/panels/history.c +++ b/src/gui/panels/history.c @@ -36,7 +36,6 @@ #include "../../analysis/binary.h" #include "../../glibext/chrysamarshal.h" #include "../../glibext/signal.h" -#include "../../gtkext/easygtk.h" @@ -45,9 +44,6 @@ struct _GHistoryPanel { GPanelItem parent; /* A laisser en premier */ - GtkTreeView *treeview; /* Composant d'affichage */ - GtkTreeStore *store; /* Modèle de gestion */ - GLoadedBinary *binary; /* Binaire à prendre en compte */ }; @@ -158,14 +154,8 @@ static void g_history_panel_init(GHistoryPanel *panel) { GEditorItem *base; /* Version basique d'instance */ GPanelItem *pitem; /* Version parente du panneau */ - GObject *ref; /* Espace de référencement */ - GtkWidget *scrollwnd; /* Support défilant */ - GtkWidget *treeview; /* Affichage de la liste */ - GtkCellRenderer *renderer; /* Moteur de rendu de colonne */ - GtkTreeViewColumn *column; /* Colonne de la liste */ - GtkWidget *box; /* Séparation horizontale */ - GtkWidget *button; /* Bouton de cette même barre */ - GtkTreeSelection *select; /* Sélection dans la liste */ + GtkBuilder *builder; /* Constructeur utilisé */ + GtkListStore *store; /* Modèle de gestion */ /* Eléments de base */ @@ -182,80 +172,22 @@ static void g_history_panel_init(GHistoryPanel *panel) /* Représentation graphique */ - base->widget = gtk_box_new(GTK_ORIENTATION_VERTICAL, 8); - gtk_container_set_border_width(GTK_CONTAINER(base->widget), 8); - gtk_widget_show(base->widget); - - ref = G_OBJECT(panel); - - /* Liste des éléments d'évolution */ - - scrollwnd = gtk_scrolled_window_new(NULL, NULL); - gtk_widget_show(scrollwnd); - gtk_box_pack_start(GTK_BOX(base->widget), scrollwnd, TRUE, TRUE, 0); - gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrollwnd), GTK_SHADOW_IN); - - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwnd), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrollwnd), GTK_SHADOW_IN); - - panel->store = gtk_tree_store_new(HTC_COUNT, G_TYPE_OBJECT, CAIRO_GOBJECT_TYPE_SURFACE, - G_TYPE_STRING, G_TYPE_STRING); - - treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(panel->store)); - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); - gtk_tree_view_set_enable_tree_lines(GTK_TREE_VIEW(treeview), TRUE); - - panel->treeview = GTK_TREE_VIEW(treeview); - - gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(panel->store), sort_history_lines, NULL, NULL); - - gtk_widget_show(treeview); - gtk_container_add(GTK_CONTAINER(scrollwnd), treeview); - - g_object_unref(G_OBJECT(panel->store)); - - /* Cellules d'affichage */ - - renderer = gtk_cell_renderer_pixbuf_new(); - column = gtk_tree_view_column_new_with_attributes("", renderer, - "surface", HTC_PICTURE, - NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); - - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes(_("Label"), renderer, - "foreground", HTC_FOREGROUND, - "text", HTC_LABEL, - NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); + builder = g_panel_item_build(pitem, "history"); - gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(panel->store), - GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); + store = GTK_LIST_STORE(gtk_builder_get_object(builder, "store")); - /* Eléments de contrôle inférieurs */ + gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(store), sort_history_lines, NULL, NULL); - box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); - gtk_widget_set_halign(box, GTK_ALIGN_CENTER); - gtk_widget_show(box); - gtk_box_pack_start(GTK_BOX(base->widget), box, FALSE, TRUE, 0); + /* Connexion des signaux */ - button = qck_create_button_with_css_img(ref, "undo", "img-undo", _("Undo"), - G_CALLBACK(do_history_undo), panel); - gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); + gtk_builder_add_callback_symbols(builder, + "on_history_selection_change", G_CALLBACK(on_history_selection_change), + "do_history_undo", G_CALLBACK(do_history_undo), + "do_history_redo", G_CALLBACK(do_history_redo), + "do_history_clean", G_CALLBACK(do_history_clean), + NULL); - button = qck_create_button_with_css_img(ref, "redo", "img-redo", _("Redo"), - G_CALLBACK(do_history_redo), panel); - gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); - - button = qck_create_button_with_css_img(NULL, NULL, "img-clean", _("Clean"), - G_CALLBACK(do_history_clean), panel); - gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); - - /* Prise en compte de la sélection */ - - select = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); - gtk_tree_selection_set_mode(select, GTK_SELECTION_BROWSE); - g_signal_connect(G_OBJECT(select), "changed", G_CALLBACK(on_history_selection_change), panel); + gtk_builder_connect_signals(builder, panel); } @@ -274,8 +206,7 @@ static void g_history_panel_init(GHistoryPanel *panel) static void g_history_panel_dispose(GHistoryPanel *panel) { - if (panel->binary != NULL) - g_object_unref(G_OBJECT(panel->binary)); + g_clear_object(&panel->binary); G_OBJECT_CLASS(g_history_panel_parent_class)->dispose(G_OBJECT(panel)); @@ -344,7 +275,8 @@ static void change_history_panel_current_content(GHistoryPanel *panel, GLoadedCo GList *collections; /* Ensemble de collections */ GList *c; /* Boucle de parcours #1 */ GDbCollection *collec; /* Collection visée manipulée */ - GtkTreeStore *store; /* Modèle de gestion */ + GtkBuilder *builder; /* Constructeur utilisé */ + GtkListStore *store; /* Modèle de gestion */ GList *items; /* Liste des éléments groupés */ GList *i; /* Boucle de parcours #2 */ GDbItem *item; /* Elément à intégrer */ @@ -380,8 +312,11 @@ static void change_history_panel_current_content(GHistoryPanel *panel, GLoadedCo if (panel->binary != NULL) g_object_ref(G_OBJECT(binary)); - 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); /* Si le panneau actif ne représente pas un binaire... */ @@ -402,8 +337,8 @@ static void change_history_panel_current_content(GHistoryPanel *panel, GLoadedCo { item = G_DB_ITEM(i->data); - 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, HTC_ITEM, item, //HTC_PICTURE, G_BOOKMARKS_PANEL_GET_CLASS(panel)->bookmark_img, HTC_FOREGROUND, g_db_item_is_active(item) ? NULL : "grey", @@ -442,13 +377,21 @@ static void change_history_panel_current_content(GHistoryPanel *panel, GLoadedCo static void on_history_changed(GDbCollection *collec, DBAction action, GDbItem *item, GHistoryPanel *panel) { - GtkTreeModel *model; /* Modèle de gestion courant */ + GtkBuilder *builder; /* Constructeur utilisé */ + GtkTreeView *treeview; /* Arborescence manipulée */ + GtkListStore *store; /* Modèle de gestion courant */ + GtkTreeModel *model; /* Modèle de gestion générique */ GtkTreeSelection *selection; /* Nouvelle sélection à établir*/ GtkTreeIter iter; /* Boucle de parcours */ - model = GTK_TREE_MODEL(panel->store); + builder = G_PANEL_ITEM(panel)->builder; - selection = gtk_tree_view_get_selection(panel->treeview); + treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview")); + + store = GTK_LIST_STORE(gtk_builder_get_object(builder, "store")); + model = GTK_TREE_MODEL(store); + + selection = gtk_tree_view_get_selection(treeview); /* Mise à jour de la liste affichée */ @@ -484,8 +427,8 @@ static void on_history_changed(GDbCollection *collec, DBAction action, GDbItem * { case DBA_ADD_ITEM: - gtk_tree_store_append(panel->store, &iter, NULL); - gtk_tree_store_set(panel->store, &iter, + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, HTC_ITEM, item, //HTC_PICTURE, G_BOOKMARKS_PANEL_GET_CLASS(panel)->bookmark_img, HTC_FOREGROUND, g_db_item_is_active(item) ? NULL : "grey", @@ -497,14 +440,14 @@ static void on_history_changed(GDbCollection *collec, DBAction action, GDbItem * case DBA_REM_ITEM: if (find_changed_item(model, item, &iter)) - gtk_tree_store_remove(panel->store, &iter); + gtk_list_store_remove(store, &iter); break; case DBA_CHANGE_STATE: if (find_changed_item(model, item, &iter)) - gtk_tree_store_set(panel->store, &iter, + gtk_list_store_set(store, &iter, HTC_FOREGROUND, g_db_item_is_active(item) ? NULL : "grey", -1); break; @@ -599,19 +542,22 @@ static gint sort_history_lines(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter static void on_history_selection_change(GtkTreeSelection *selection, GHistoryPanel *panel) { + GtkBuilder *builder; /* Constructeur utilisé */ GtkTreeIter iter; /* Point de sélection */ GtkTreeModel *model; /* Modèle de gestion */ GDbItem *item; /* Elément de collection */ GtkWidget *button; /* Bouton de barre de contrôle */ + builder = G_PANEL_ITEM(panel)->builder; + if (gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_tree_model_get(model, &iter, HTC_ITEM, &item, -1); - button = GTK_WIDGET(g_object_get_data(G_OBJECT(panel), "undo")); + button = GTK_WIDGET(gtk_builder_get_object(builder, "undo")); gtk_widget_set_sensitive(button, g_db_item_is_active(item)); - button = GTK_WIDGET(g_object_get_data(G_OBJECT(panel), "redo")); + button = GTK_WIDGET(gtk_builder_get_object(builder, "redo")); gtk_widget_set_sensitive(button, !g_db_item_is_active(item)); g_object_unref(G_OBJECT(item)); @@ -620,10 +566,10 @@ static void on_history_selection_change(GtkTreeSelection *selection, GHistoryPan else { - button = GTK_WIDGET(g_object_get_data(G_OBJECT(panel), "undo")); + button = GTK_WIDGET(gtk_builder_get_object(builder, "undo")); gtk_widget_set_sensitive(button, FALSE); - button = GTK_WIDGET(g_object_get_data(G_OBJECT(panel), "redo")); + button = GTK_WIDGET(gtk_builder_get_object(builder, "redo")); gtk_widget_set_sensitive(button, FALSE); } @@ -646,13 +592,19 @@ static void on_history_selection_change(GtkTreeSelection *selection, GHistoryPan static void do_history_undo(GtkButton *button, GHistoryPanel *panel) { + GtkBuilder *builder; /* Constructeur utilisé */ + GtkTreeView *treeview; /* Arborescence manipulée */ GtkTreeSelection *selection; /* Sélection courante */ GtkTreeModel *model; /* Modèle de gestion de données*/ GtkTreeIter iter; /* Pointeur vers la ligne visée*/ GDbItem *item; /* Elément de collection */ GDbClient *client; /* Connexion vers la base */ - selection = gtk_tree_view_get_selection(panel->treeview); + builder = G_PANEL_ITEM(panel)->builder; + + treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview")); + + selection = gtk_tree_view_get_selection(treeview); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { @@ -687,13 +639,19 @@ static void do_history_undo(GtkButton *button, GHistoryPanel *panel) static void do_history_redo(GtkButton *button, GHistoryPanel *panel) { + GtkBuilder *builder; /* Constructeur utilisé */ + GtkTreeView *treeview; /* Arborescence manipulée */ GtkTreeSelection *selection; /* Sélection courante */ GtkTreeModel *model; /* Modèle de gestion de données*/ GtkTreeIter iter; /* Pointeur vers la ligne visée*/ GDbItem *item; /* Elément de collection */ GDbClient *client; /* Connexion vers la base */ - selection = gtk_tree_view_get_selection(panel->treeview); + builder = G_PANEL_ITEM(panel)->builder; + + treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview")); + + selection = gtk_tree_view_get_selection(treeview); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { |