summaryrefslogtreecommitdiff
path: root/src/gui/menus/view.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-08-26 22:15:05 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-08-26 22:15:05 (GMT)
commit8ca477e012b11a19363542d171b8e973d637641c (patch)
tree94a4fcde1779f031946eff7a36075f41a17cd73b /src/gui/menus/view.c
parent4fb2ac107092671fe27fc3ebf9fc86dff7c3ec19 (diff)
Removed most of the functions using the editor items as global access to active items.
Diffstat (limited to 'src/gui/menus/view.c')
-rw-r--r--src/gui/menus/view.c66
1 files changed, 38 insertions, 28 deletions
diff --git a/src/gui/menus/view.c b/src/gui/menus/view.c
index a00c614..5298af3 100644
--- a/src/gui/menus/view.c
+++ b/src/gui/menus/view.c
@@ -32,6 +32,8 @@
#include "../editem-int.h"
+#include "../core/global.h"
+#include "../core/items.h"
#include "../core/panels.h"
#include "../../analysis/project.h"
#include "../../gtkext/easygtk.h"
@@ -47,10 +49,10 @@ static void mcb_view_update_side_panels_list(GtkMenuItem *, GMenuBar *);
static void mcb_view_change_panel_docking(GtkCheckMenuItem *, GPanelItem *);
/* Réagit avec le menu "Affichage -> Vue xxx". */
-static void mcb_view_change_support(GtkRadioMenuItem *, GMenuBar *);
+static void mcb_view_change_support(GtkRadioMenuItem *, gpointer);
/* Réagit avec le menu "Affichage -> (colonne xxx)". */
-static void mcb_view_display_column(GtkCheckMenuItem *, GMenuBar *);
+static void mcb_view_display_column(GtkCheckMenuItem *, gpointer);
/* Réagit avec le menu "Affichage -> Plein écran". */
static void mcb_view_show_full_screen(GtkCheckMenuItem *, GMenuBar *);
@@ -99,7 +101,7 @@ GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *bar)
/* Types de panneau de code */
submenuitem = qck_create_radio_menu_item(ref, "mnu_view_switch_textview", NULL, _("Text view"),
- G_CALLBACK(mcb_view_change_support), bar);
+ G_CALLBACK(mcb_view_change_support), NULL);
add_accelerator_to_menu_item(submenuitem, "F3", accgroup);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_view", GUINT_TO_POINTER(BVW_BLOCK));
g_object_set_data(G_OBJECT(submenuitem), "kind_of_display", GSIZE_TO_POINTER(GTK_TYPE_BLOCK_DISPLAY));
@@ -108,7 +110,7 @@ GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *bar)
rgroup = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(submenuitem));
submenuitem = qck_create_radio_menu_item(ref, "mnu_view_switch_graphview", rgroup, _("Graph view"),
- G_CALLBACK(mcb_view_change_support), bar);
+ G_CALLBACK(mcb_view_change_support), NULL);
add_accelerator_to_menu_item(submenuitem, "F4", accgroup);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_view", GUINT_TO_POINTER(BVW_GRAPH));
g_object_set_data(G_OBJECT(submenuitem), "kind_of_display", GSIZE_TO_POINTER(GTK_TYPE_GRAPH_DISPLAY));
@@ -122,17 +124,17 @@ GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *bar)
/* Affichage des données */
submenuitem = qck_create_check_menu_item(ref, "mnu_view_display_off", _("Physical offset"),
- G_CALLBACK(mcb_view_display_column), bar);
+ G_CALLBACK(mcb_view_display_column), NULL);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_col", GUINT_TO_POINTER(BLC_PHYSICAL));
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
submenuitem = qck_create_check_menu_item(ref, "mnu_view_display_addr", _("Virtual address"),
- G_CALLBACK(mcb_view_display_column), bar);
+ G_CALLBACK(mcb_view_display_column), NULL);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_col", GUINT_TO_POINTER(BLC_VIRTUAL));
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
submenuitem = qck_create_check_menu_item(ref, "mnu_view_display_code", _("Binary code"),
- G_CALLBACK(mcb_view_display_column), bar);
+ G_CALLBACK(mcb_view_display_column), NULL);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_col", GUINT_TO_POINTER(BLC_BINARY));
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
@@ -173,8 +175,8 @@ void update_menu_view_for_view(GtkWidget *widget, GtkDisplayPanel *panel, GMenuB
GtkRadioMenuItem *item; /* Elément de menu arbitraire */
GSList *radios; /* Liste des menus d'affichage */
GSList *found; /* Elément de menu à activer */
- GLoadedBinary *binary; /* Binaire courant */
BinaryView content; /* Type de vue active */
+ GLoadedBinary *binary; /* Binaire courant */
const bool *display; /* Règles d'affichage courantes*/
GtkWidget *submenuitem; /* Sous-élément de menu */
bool status; /* Consigne d'affichage */
@@ -189,7 +191,7 @@ void update_menu_view_for_view(GtkWidget *widget, GtkDisplayPanel *panel, GMenuB
void disconnect_display_radio(GtkWidget *wgt, gpointer unused)
{
- g_signal_handlers_disconnect_by_func(wgt, G_CALLBACK(mcb_view_change_support), bar);
+ g_signal_handlers_disconnect_by_func(wgt, G_CALLBACK(mcb_view_change_support), NULL);
}
@@ -216,7 +218,7 @@ void update_menu_view_for_view(GtkWidget *widget, GtkDisplayPanel *panel, GMenuB
void reconnect_display_radio(GtkWidget *wgt, gpointer unused)
{
- g_signal_connect(wgt, "toggled", G_CALLBACK(mcb_view_change_support), bar);
+ g_signal_connect(wgt, "toggled", G_CALLBACK(mcb_view_change_support), NULL);
}
@@ -224,44 +226,46 @@ void update_menu_view_for_view(GtkWidget *widget, GtkDisplayPanel *panel, GMenuB
/* - */
- binary = g_editor_item_get_current_binary(G_EDITOR_ITEM(bar));
-
content = gtk_display_panel_describe_content(panel);
+ binary = get_current_binary();
+
display = g_loaded_binary_get_column_display(binary, content);
+ g_object_unref(G_OBJECT(binary));
+
/* Positions physiques */
submenuitem = g_object_get_data(ref, "mnu_view_display_off");
- g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), bar);
+ g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), NULL);
status = display[BLC_PHYSICAL];
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(submenuitem), status);
- g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_display_column), bar);
+ g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_display_column), NULL);
/* Adresses virtuelles */
submenuitem = g_object_get_data(ref, "mnu_view_display_addr");
- g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), bar);
+ g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), NULL);
status = display[BLC_VIRTUAL];
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(submenuitem), status);
- g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_display_column), bar);
+ g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_display_column), NULL);
/* Code binaire */
submenuitem = g_object_get_data(ref, "mnu_view_display_code");
- g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), bar);
+ g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), NULL);
status = display[BLC_BINARY];
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(submenuitem), status);
- g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_display_column), bar);
+ g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_display_column), NULL);
}
@@ -447,7 +451,7 @@ static void mcb_view_change_panel_docking(GtkCheckMenuItem *menuitem, GPanelItem
/******************************************************************************
* *
* Paramètres : menuitem = élément de menu ayant basculé. *
-* bar = barre de menu parente. *
+* unused = adresse non utilisée ici. *
* *
* Description : Réagit avec le menu "Affichage -> Vue xxx". *
* *
@@ -457,7 +461,7 @@ static void mcb_view_change_panel_docking(GtkCheckMenuItem *menuitem, GPanelItem
* *
******************************************************************************/
-static void mcb_view_change_support(GtkRadioMenuItem *menuitem, GMenuBar *bar)
+static void mcb_view_change_support(GtkRadioMenuItem *menuitem, gpointer unused)
{
GSList *group; /* Liste de menus radio */
GSList *iter; /* Boucle de parcours */
@@ -465,6 +469,7 @@ static void mcb_view_change_support(GtkRadioMenuItem *menuitem, GMenuBar *bar)
GtkDisplayPanel *panel; /* Afficheur effectif de code */
GtkDockStation *station; /* Base du remplacement */
GtkWidget *scroll; /* Nouveau support à utiliser */
+ GtkDisplayPanel *new; /* Nouvel afficheur de code */
/* On ne traite qu'une seule fois ! */
if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menuitem))) return;
@@ -477,19 +482,21 @@ static void mcb_view_change_support(GtkRadioMenuItem *menuitem, GMenuBar *bar)
wanted = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(iter->data), "kind_of_view"));
- panel = g_editor_item_get_current_view(G_EDITOR_ITEM(bar));
+ panel = get_current_view();
station = get_dock_station_for_view_panel(panel);
/* En vue du retrait de la station d'accueil... */
scroll = get_scroll_window_for_view_panel(panel);
g_object_ref(G_OBJECT(scroll));
- panel = get_alt_view_for_view_panel(panel, wanted);
- scroll = get_scroll_window_for_view_panel(panel);
+ new = get_alt_view_for_view_panel(panel, wanted);
+ scroll = get_scroll_window_for_view_panel(new);
gtk_dock_panel_change_active_widget(station, scroll);
- change_editor_items_current_view(G_EDITOR_ITEM(bar)->ref, panel);
+ change_editor_items_current_view(new);
+
+ g_object_unref(G_OBJECT(panel));
}
@@ -499,7 +506,7 @@ static void mcb_view_change_support(GtkRadioMenuItem *menuitem, GMenuBar *bar)
/******************************************************************************
* *
* Paramètres : menuitem = élément de menu ayant basculé. *
-* bar = barre de menu parente. *
+* unused = adresse non utilisée ici. *
* *
* Description : Réagit avec le menu "Affichage -> (colonne xxx)". *
* *
@@ -509,7 +516,7 @@ static void mcb_view_change_support(GtkRadioMenuItem *menuitem, GMenuBar *bar)
* *
******************************************************************************/
-static void mcb_view_display_column(GtkCheckMenuItem *menuitem, GMenuBar *bar)
+static void mcb_view_display_column(GtkCheckMenuItem *menuitem, gpointer unused)
{
BufferLineColumn col; /* Colonne à traiter */
GLoadedBinary *binary; /* Binaire courant */
@@ -519,15 +526,18 @@ static void mcb_view_display_column(GtkCheckMenuItem *menuitem, GMenuBar *bar)
col = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(menuitem), "kind_of_col"));
- binary = g_editor_item_get_current_binary(G_EDITOR_ITEM(bar));
+ binary = get_current_binary();
- panel = g_editor_item_get_current_view(G_EDITOR_ITEM(bar));
+ panel = get_current_view();
view = gtk_display_panel_describe_content(panel);
+ g_object_unref(G_OBJECT(panel));
active = gtk_check_menu_item_get_active(menuitem);
g_loaded_binary_set_column_display(binary, view, col, active);
+ g_object_unref(G_OBJECT(binary));
+
}