diff options
Diffstat (limited to 'src/gui/menus/view.c')
-rw-r--r-- | src/gui/menus/view.c | 89 |
1 files changed, 64 insertions, 25 deletions
diff --git a/src/gui/menus/view.c b/src/gui/menus/view.c index d68ffa4..85e65f7 100644 --- a/src/gui/menus/view.c +++ b/src/gui/menus/view.c @@ -33,10 +33,10 @@ /* Réagit avec le menu "Affichage -> Adresse virtuelle". */ -void mcb_view_vaddress(GtkCheckMenuItem *, gpointer); +static void mcb_view_addresses(GtkCheckMenuItem *, GMenuBar *); /* Réagit avec le menu "Affichage -> code binaire". */ -void mcb_view_code(GtkCheckMenuItem *, gpointer); +static void mcb_view_code(GtkCheckMenuItem *, GMenuBar *); @@ -44,6 +44,7 @@ void mcb_view_code(GtkCheckMenuItem *, gpointer); * * * Paramètres : ref = espace de référencement global. * * accgroup = groupe d'accélérateurs pour les menus. * +* bar = barre de menu parente. * * * * Description : Construit le menu "Fichier". * * * @@ -53,7 +54,7 @@ void mcb_view_code(GtkCheckMenuItem *, gpointer); * * ******************************************************************************/ -GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup) +GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *bar) { GtkWidget *result; /* Support à retourner */ GtkWidget *menubar; /* Support pour éléments */ @@ -68,10 +69,12 @@ GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup) submenuitem = qck_create_menu_separator(); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); - submenuitem = qck_create_check_menu_item(NULL, NULL, _("Virtual address"), G_CALLBACK(mcb_view_vaddress), result); + submenuitem = qck_create_check_menu_item(G_OBJECT(result), "addr", _("Virtual address"), + G_CALLBACK(mcb_view_addresses), bar); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); - submenuitem = qck_create_check_menu_item(NULL, NULL, _("Binary code"), G_CALLBACK(mcb_view_code), result); + submenuitem = qck_create_check_menu_item(G_OBJECT(result), "code", _("Binary code"), + G_CALLBACK(mcb_view_code), bar); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_separator(); @@ -84,8 +87,52 @@ GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup) /****************************************************************************** * * +* Paramètres : widget = menu principal à actualiser. * +* view = nouveau panneau d'affichage actif. * +* bar = barre de menu parente. * +* * +* Description : Lance une actualisation du fait d'un changement de vue. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void update_menu_view_for_view(GtkWidget *widget, GtkViewPanel *view, GMenuBar *bar) +{ + GtkWidget *submenuitem; /* Sous-élément de menu */ + bool status; /* Consigne d'affichage */ + + /* Adresses virtuelles */ + + submenuitem = g_object_get_data(G_OBJECT(widget), "addr"); + + g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_addresses), bar); + + status = gtk_view_panel_get_addresses_display(view); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(submenuitem), status); + + g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_addresses), bar); + + /* Code binaire */ + + submenuitem = g_object_get_data(G_OBJECT(widget), "code"); + + g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_code), bar); + + status = gtk_view_panel_get_code_display(view); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(submenuitem), status); + + g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_code), bar); + +} + + +/****************************************************************************** +* * * Paramètres : menuitem = élément de menu ayant basculé. * -* data = adresse de l'espace de référencement global. * +* bar = barre de menu parente. * * * * Description : Réagit avec le menu "Affichage -> Adresse virtuelle". * * * @@ -95,27 +142,23 @@ GtkWidget *build_menu_view(GObject *ref, GtkAccelGroup *accgroup) * * ******************************************************************************/ -void mcb_view_vaddress(GtkCheckMenuItem *menuitem, gpointer data) +static void mcb_view_addresses(GtkCheckMenuItem *menuitem, GMenuBar *bar) { -#if 0 - GtkBinView *binview; /* Zone de code principale */ + GtkViewPanel *panel; /* Affichage courant */ gboolean active; /* Etat de sélection du menu */ - /* FIXME : "binview" -> "current_view" */ - return; - - binview = GTK_BIN_VIEW(g_object_get_data(G_OBJECT(data), "binview")); + panel = g_editor_item_get_current_view(G_EDITOR_ITEM(bar)); active = gtk_check_menu_item_get_active(menuitem); - gtk_binview_show_vaddress(binview, active); -#endif + gtk_view_panel_set_addresses_display(panel, active); + } /****************************************************************************** * * * Paramètres : menuitem = élément de menu ayant basculé. * -* data = adresse de l'espace de référencement global. * +* bar = barre de menu parente. * * * * Description : Réagit avec le menu "Affichage -> code binaire". * * * @@ -125,18 +168,14 @@ void mcb_view_vaddress(GtkCheckMenuItem *menuitem, gpointer data) * * ******************************************************************************/ -void mcb_view_code(GtkCheckMenuItem *menuitem, gpointer data) +static void mcb_view_code(GtkCheckMenuItem *menuitem, GMenuBar *bar) { -#if 0 - GtkBinView *binview; /* Zone de code principale */ + GtkViewPanel *panel; /* Affichage courant */ gboolean active; /* Etat de sélection du menu */ - /* FIXME : "binview" -> "current_view" */ - return; - - binview = GTK_BIN_VIEW(g_object_get_data(G_OBJECT(data), "binview")); + panel = g_editor_item_get_current_view(G_EDITOR_ITEM(bar)); active = gtk_check_menu_item_get_active(menuitem); - gtk_binview_show_code(binview, active); -#endif + gtk_view_panel_set_code_display(panel, active); + } |