diff options
Diffstat (limited to 'src/gui/menus/binary.c')
-rw-r--r-- | src/gui/menus/binary.c | 190 |
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); + +} |