summaryrefslogtreecommitdiff
path: root/src/gui/menus/view.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2012-01-16 01:29:18 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2012-01-16 01:29:18 (GMT)
commitd487ea54850c85ea22df22af3b21b57d9ad0fd2f (patch)
treee84eefa64d8845cb97ca98c95cc9acf713ccfcf8 /src/gui/menus/view.c
parent725304423eccf57b8e829542670b5abe7b00eeb4 (diff)
Updated menus on view change.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@227 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gui/menus/view.c')
-rw-r--r--src/gui/menus/view.c89
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);
+
}