summaryrefslogtreecommitdiff
path: root/src/gui/panels/history.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/history.c
parentce4b859adf12e1be6e13ea33b5afb1ce773ff1b3 (diff)
Used Glade to build all GUI panels.
Diffstat (limited to 'src/gui/panels/history.c')
-rw-r--r--src/gui/panels/history.c160
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))
{