diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2016-09-27 19:11:45 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2016-09-27 19:11:45 (GMT) |
commit | 34db987b49ae8135f4ad41ec0012c86ede0c9f4c (patch) | |
tree | bc1cf8f3ca11ebef9a7b8db9ee5f4db20019786e /src/gui/menus/view.c | |
parent | 7972f2da7d0e363fe918992cb5661b17ee3577d7 (diff) |
Given access to menus relative to binaries only if a view panel is displayed.
Diffstat (limited to 'src/gui/menus/view.c')
-rw-r--r-- | src/gui/menus/view.c | 74 |
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. * * * |