summaryrefslogtreecommitdiff
path: root/src/gui/menus/binary.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/menus/binary.c')
-rw-r--r--src/gui/menus/binary.c190
1 files changed, 71 insertions, 119 deletions
diff --git a/src/gui/menus/binary.c b/src/gui/menus/binary.c
index 9e85520..98563a0 100644
--- a/src/gui/menus/binary.c
+++ b/src/gui/menus/binary.c
@@ -30,6 +30,7 @@
#include "../agroup.h"
#include "../item-int.h"
+#include "../menubar.h"
#include "../core/global.h"
#include "../dialogs/export_disass.h"
#include "../dialogs/export_graph.h"
@@ -64,88 +65,9 @@ static void mcb_binary_export_graph(GtkMenuItem *, gpointer);
/******************************************************************************
* *
-* Paramètres : ref = espace de référencement global. *
-* bar = barre de menu parente. *
+* Paramètres : builder = constructeur avec l'ensemble des références. *
* *
-* Description : Construit le menu "Binaire". *
-* *
-* Retour : Panneau de menus mis en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkWidget *build_menu_binary(GObject *ref, GMenuBar *bar)
-{
- GtkWidget *result; /* Support à retourner */
- GtkWidget *menubar; /* Support pour éléments */
- GtkWidget *submenuitem; /* Sous-élément de menu #1 */
- GtkWidget *deepmenubar; /* Support pour éléments #2 */
- GtkWidget *deepmenuitem; /* Sous-élément de menu #2 */
-
- result = gtk_menu_item_new_with_mnemonic(_("_Binary"));
- gtk_widget_show(result);
-
- menubar = qck_create_menu(GTK_MENU_ITEM(result));
-
- submenuitem = qck_create_menu_item(ref, "mnu_binary_epoints", _("Entry points"),
- G_CALLBACK(mcb_binary_entry_points), bar);
- add_accelerator_to_widget(submenuitem, "<Ctrl>E");
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
- submenuitem = qck_create_menu_separator();
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
- submenuitem = qck_create_menu_item(ref, "mnu_binary_attach_debugger", _("Attach a debugger"),
- G_CALLBACK(mcb_binary_attach_debugger), bar);
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
- /* Séparation */
-
- submenuitem = qck_create_menu_separator();
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
- /* Bases de données */
-
- submenuitem = qck_create_menu_item(ref, "mnu_binary_storage", _("Storage"),
- G_CALLBACK(mcb_binary_storage), bar);
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
- submenuitem = qck_create_menu_item(ref, "mnu_binary_snapshots", _("Snapshots"),
- G_CALLBACK(mcb_binary_snapshots), bar);
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
- /* Séparation */
-
- submenuitem = qck_create_menu_separator();
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
- /* Exportations */
-
- submenuitem = qck_create_menu_item(NULL, NULL, _("Export"), NULL, NULL);
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
- deepmenubar = qck_create_menu(GTK_MENU_ITEM(submenuitem));
-
- deepmenuitem = qck_create_menu_item(ref, "mnu_binary_export_disass", _("Disassembly"),
- G_CALLBACK(mcb_binary_export_disass), bar);
- gtk_container_add(GTK_CONTAINER(deepmenubar), deepmenuitem);
-
- deepmenuitem = qck_create_menu_item(ref, "mnu_binary_export_graph", _("Graph view"),
- G_CALLBACK(mcb_binary_export_graph), NULL);
- gtk_container_add(GTK_CONTAINER(deepmenubar), deepmenuitem);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : ref = espace de référencement global. *
-* new = nouveau contenu chargé à analyser. *
-* *
-* Description : Réagit à un changement d'affichage principal de contenu. *
+* Description : Complète la définition du menu "Binaire". *
* *
* Retour : - *
* *
@@ -153,47 +75,19 @@ GtkWidget *build_menu_binary(GObject *ref, GMenuBar *bar)
* *
******************************************************************************/
-void update_access_for_content_in_menu_binary(GObject *ref, GLoadedContent *new)
+void setup_menu_binary_callbacks(GtkBuilder *builder)
{
- gboolean access; /* Accès à déterminer */
- GtkWidget *item; /* Elément de menu à traiter */
- access = G_IS_LOADED_BINARY(new);
-
- item = GTK_WIDGET(g_object_get_data(ref, "mnu_binary_epoints"));
- gtk_widget_set_sensitive(item, access);
+#define DEFINE_CALLBACK(cb) #cb, G_CALLBACK(cb)
- item = GTK_WIDGET(g_object_get_data(ref, "mnu_binary_storage"));
- gtk_widget_set_sensitive(item, access);
-
- item = GTK_WIDGET(g_object_get_data(ref, "mnu_binary_export_disass"));
- gtk_widget_set_sensitive(item, access);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : ref = espace de référencement global. *
-* new = nouvelle vue du contenu chargé analysé. *
-* *
-* Description : Lance une actualisation du fait d'un changement de support. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void update_access_for_view_in_menu_binary(GObject *ref, GLoadedPanel *new)
-{
- gboolean access; /* Accès à déterminer */
- GtkWidget *item; /* Elément de menu à traiter */
-
- access = GTK_IS_GRAPH_DISPLAY(new);
-
- item = GTK_WIDGET(g_object_get_data(ref, "mnu_binary_export_graph"));
- gtk_widget_set_sensitive(item, access);
+ gtk_builder_add_callback_symbols(builder,
+ DEFINE_CALLBACK(mcb_binary_entry_points),
+ DEFINE_CALLBACK(mcb_binary_attach_debugger),
+ DEFINE_CALLBACK(mcb_binary_storage),
+ DEFINE_CALLBACK(mcb_binary_snapshots),
+ DEFINE_CALLBACK(mcb_binary_export_disass),
+ DEFINE_CALLBACK(mcb_binary_export_graph),
+ NULL);
}
@@ -415,3 +309,61 @@ static void mcb_binary_export_graph(GtkMenuItem *menuitem, gpointer unused)
g_object_unref(G_OBJECT(binary));
}
+
+
+/******************************************************************************
+* *
+* Paramètres : builder = constructeur avec l'ensemble des références. *
+* new = nouveau contenu chargé à analyser. *
+* *
+* Description : Réagit à un changement d'affichage principal de contenu. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void update_access_for_content_in_menu_binary(GtkBuilder *builder, GLoadedContent *new)
+{
+ gboolean access; /* Accès à déterminer */
+ GtkWidget *item; /* Elément de menu à traiter */
+
+ access = G_IS_LOADED_BINARY(new);
+
+ item = GTK_WIDGET(gtk_builder_get_object(builder, "binary_entry_points"));
+ gtk_widget_set_sensitive(item, access);
+
+ item = GTK_WIDGET(gtk_builder_get_object(builder, "binary_storage"));
+ gtk_widget_set_sensitive(item, access);
+
+ item = GTK_WIDGET(gtk_builder_get_object(builder, "binary_export_disass"));
+ gtk_widget_set_sensitive(item, access);
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : builder = constructeur avec l'ensemble des références. *
+* new = nouvelle vue du contenu chargé analysé. *
+* *
+* Description : Lance une actualisation du fait d'un changement de support. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void update_access_for_view_in_menu_binary(GtkBuilder *builder, GLoadedPanel *new)
+{
+ gboolean access; /* Accès à déterminer */
+ GtkWidget *item; /* Elément de menu à traiter */
+
+ access = GTK_IS_GRAPH_DISPLAY(new);
+
+ item = GTK_WIDGET(gtk_builder_get_object(builder, "binary_export_graph"));
+ gtk_widget_set_sensitive(item, access);
+
+}