summaryrefslogtreecommitdiff
path: root/src/gui/menus/view.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/menus/view.c')
-rw-r--r--src/gui/menus/view.c74
1 files changed, 65 insertions, 9 deletions
diff --git a/src/gui/menus/view.c b/src/gui/menus/view.c
index d3bebc3..43c1a69 100644
--- a/src/gui/menus/view.c
+++ b/src/gui/menus/view.c
@@ -95,7 +95,9 @@ GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *bar)
submenuitem = qck_create_menu_separator();
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
- submenuitem = qck_create_radio_menu_item(ref, "textview", NULL, _("Text view"),
+ /* 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);
add_accelerator_to_menu_item(submenuitem, "F2", accgroup);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_view", GUINT_TO_POINTER(BVW_BLOCK));
@@ -103,7 +105,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, "graphview", rgroup, _("Graph view"),
+ submenuitem = qck_create_radio_menu_item(ref, "mnu_view_switch_graphview", rgroup, _("Graph view"),
G_CALLBACK(mcb_view_change_support), bar);
add_accelerator_to_menu_item(submenuitem, "F3", accgroup);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_view", GUINT_TO_POINTER(BVW_GRAPH));
@@ -111,26 +113,30 @@ 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, "sourceview", rgroup, _("Source code"),
+ submenuitem = qck_create_radio_menu_item(ref, "mnu_view_switch_sourceview", rgroup, _("Source code"),
G_CALLBACK(mcb_view_change_support), bar);
add_accelerator_to_menu_item(submenuitem, "F4", accgroup);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_view", GUINT_TO_POINTER(BVW_SOURCE));
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
+ /* - */
+
submenuitem = qck_create_menu_separator();
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
- submenuitem = qck_create_check_menu_item(G_OBJECT(result), "off", _("Physical offset"),
+ /* 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_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(G_OBJECT(result), "addr", _("Virtual address"),
+ submenuitem = qck_create_check_menu_item(ref, "mnu_view_display_addr", _("Virtual address"),
G_CALLBACK(mcb_view_display_column), bar);
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(G_OBJECT(result), "code", _("Binary code"),
+ submenuitem = qck_create_check_menu_item(ref, "mnu_view_display_code", _("Binary code"),
G_CALLBACK(mcb_view_display_column), bar);
g_object_set_data(G_OBJECT(submenuitem), "kind_of_col", GUINT_TO_POINTER(BLC_BINARY));
gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
@@ -168,12 +174,15 @@ GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *bar)
void update_menu_view_for_view(GtkWidget *widget, GtkViewPanel *view, GMenuBar *bar)
{
+ GObject *ref; /* Espace de référencements */
GLoadedBinary *binary; /* Binaire courant */
BinaryView content; /* Type de vue active */
const bool *display; /* Règles d'affichage courantes*/
GtkWidget *submenuitem; /* Sous-élément de menu */
bool status; /* Consigne d'affichage */
+ ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar));
+
binary = g_editor_item_get_current_binary(G_EDITOR_ITEM(bar));
content = gtk_view_panel_describe_content(view);
@@ -182,7 +191,7 @@ void update_menu_view_for_view(GtkWidget *widget, GtkViewPanel *view, GMenuBar *
/* Positions physiques */
- submenuitem = g_object_get_data(G_OBJECT(widget), "off");
+ submenuitem = g_object_get_data(ref, "mnu_view_display_off");
g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), bar);
@@ -193,7 +202,7 @@ void update_menu_view_for_view(GtkWidget *widget, GtkViewPanel *view, GMenuBar *
/* Adresses virtuelles */
- submenuitem = g_object_get_data(G_OBJECT(widget), "addr");
+ submenuitem = g_object_get_data(ref, "mnu_view_display_addr");
g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), bar);
@@ -204,7 +213,7 @@ void update_menu_view_for_view(GtkWidget *widget, GtkViewPanel *view, GMenuBar *
/* Code binaire */
- submenuitem = g_object_get_data(G_OBJECT(widget), "code");
+ submenuitem = g_object_get_data(ref, "mnu_view_display_code");
g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_display_column), bar);
@@ -218,6 +227,53 @@ void update_menu_view_for_view(GtkWidget *widget, GtkViewPanel *view, GMenuBar *
/******************************************************************************
* *
+* Paramètres : ref = espace de référencements à consulter. *
+* vpanel = panneau d'affichage actif ou NULL si aucun. *
+* *
+* Description : Met à jour les accès du menu "Affichage" selon le contenu. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void update_access_in_menu_view(GObject *ref, GtkViewPanel *vpanel)
+{
+ gboolean access; /* Accès à déterminer */
+ GtkWidget *item; /* Elément de menu à traiter */
+
+ /* Préliminaire */
+
+ access = (vpanel != NULL);
+
+ /* Types de panneau de code */
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_view_switch_textview"));
+ gtk_widget_set_sensitive(item, access);
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_view_switch_graphview"));
+ gtk_widget_set_sensitive(item, access);
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_view_switch_sourceview"));
+ gtk_widget_set_sensitive(item, access);
+
+ /* Affichage des données */
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_view_display_off"));
+ gtk_widget_set_sensitive(item, access);
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_view_display_addr"));
+ gtk_widget_set_sensitive(item, access);
+
+ item = GTK_WIDGET(g_object_get_data(ref, "mnu_view_display_code"));
+ gtk_widget_set_sensitive(item, access);
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : menuitem = élément de menu sélectionné. *
* bar = barre de menu parente. *
* *