summaryrefslogtreecommitdiff
path: root/src/gui/menus
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-08-09 22:54:08 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-08-09 22:54:08 (GMT)
commit16498486a454f6042b881b77e572f342decf5851 (patch)
treec36b6697fc9de900ec8ecff428ba407639eff133 /src/gui/menus
parent4370d2d77d623f560c7df94a3bc15b1395e4878b (diff)
Provided Python bindings for the main menu bar.
Diffstat (limited to 'src/gui/menus')
-rw-r--r--src/gui/menus/Makefile.am1
-rw-r--r--src/gui/menus/binary.h2
-rw-r--r--src/gui/menus/edition.h2
-rw-r--r--src/gui/menus/menubar.c419
-rw-r--r--src/gui/menus/menubar.h56
-rw-r--r--src/gui/menus/options.h2
-rw-r--r--src/gui/menus/project.h2
-rw-r--r--src/gui/menus/view.h2
8 files changed, 5 insertions, 481 deletions
diff --git a/src/gui/menus/Makefile.am b/src/gui/menus/Makefile.am
index 49214e1..4218374 100644
--- a/src/gui/menus/Makefile.am
+++ b/src/gui/menus/Makefile.am
@@ -7,7 +7,6 @@ libguimenus_la_SOURCES = \
edition.h edition.c \
file.h file.c \
help.h help.c \
- menubar.h menubar.c \
options.h options.c \
plugins.h plugins.c \
project.h project.c \
diff --git a/src/gui/menus/binary.h b/src/gui/menus/binary.h
index ed98b7c..056b918 100644
--- a/src/gui/menus/binary.h
+++ b/src/gui/menus/binary.h
@@ -29,7 +29,7 @@
#include <gtk/gtk.h>
-#include "menubar.h"
+#include "../menubar.h"
#include "../../analysis/loaded.h"
diff --git a/src/gui/menus/edition.h b/src/gui/menus/edition.h
index 9dd8c27..909d5ec 100644
--- a/src/gui/menus/edition.h
+++ b/src/gui/menus/edition.h
@@ -29,7 +29,7 @@
#include <gtk/gtk.h>
-#include "menubar.h"
+#include "../menubar.h"
#include "../../glibext/gloadedpanel.h"
diff --git a/src/gui/menus/menubar.c b/src/gui/menus/menubar.c
deleted file mode 100644
index 44761b9..0000000
--- a/src/gui/menus/menubar.c
+++ /dev/null
@@ -1,419 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * menubar.c - gestion des différents menus de la fenêtre principale
- *
- * Copyright (C) 2011-2020 Cyrille Bagard
- *
- * This file is part of Chrysalide.
- *
- * Chrysalide is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Chrysalide is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#include "menubar.h"
-
-
-#include <string.h>
-
-
-#include "binary.h"
-#include "debug.h"
-#include "edition.h"
-#include "file.h"
-#include "help.h"
-#include "options.h"
-#include "plugins.h"
-#include "project.h"
-#include "view.h"
-#include "../item-int.h"
-#include "../core/global.h"
-
-
-
-/* Barre de menus de la fenêtre principale (instance) */
-struct _GMenuBar
-{
- GEditorItem parent; /* A laisser en premier */
-
- GtkWidget *support; /* Composant principal */
-
- GtkWidget *file; /* Menu "Fichier" */
- GtkWidget *edition; /* Menu "Edition" */
- GtkWidget *view; /* Menu "Affichage" */
- GtkWidget *project; /* Menu "Projet" */
- GtkWidget *binary; /* Menu "Binaire" */
- GtkWidget *debug; /* Menu "Débogage" */
- GtkWidget *options; /* Menu "Options" */
- GtkWidget *plugins; /* Menu "Greffons" */
- GtkWidget *help; /* Menu "Aide" */
-
-};
-
-
-/* Barre de menus de la fenêtre principale (classe) */
-struct _GMenuBarClass
-{
- GEditorItemClass parent; /* A laisser en premier */
-
-};
-
-
-/* Initialise la classe de la barre de menus de l'éditeur. */
-static void g_menu_bar_class_init(GMenuBarClass *);
-
-/* Initialise une instance de la barre de menus pour l'éditeur. */
-static void g_menu_bar_init(GMenuBar *);
-
-/* Supprime toutes les références externes. */
-static void g_menu_bar_dispose(GMenuBar *);
-
-/* Procède à la libération totale de la mémoire. */
-static void g_menu_bar_finalize(GMenuBar *);
-
-/* Fournit le nom humain attribué à l'élément réactif. */
-static char *g_menu_bar_get_key(const GMenuBar *);
-
-/* Fournit le composant GTK associé à l'élément réactif. */
-static GtkWidget *g_menu_bar_get_widget(const GMenuBar *);
-
-/* Réagit à un changement d'affichage principal de contenu. */
-static void change_menubar_current_content(GMenuBar *, GLoadedContent *, GLoadedContent *);
-
-/* Lance une actualisation du fait d'un changement de support. */
-static void change_menubar_current_view(GMenuBar *, GLoadedPanel *, GLoadedPanel *);
-
-/* Met à jour les accès aux menus en fonction de la position. */
-static void track_caret_address_for_menu_bar(GMenuBar *, GLoadedPanel *, const GLineCursor *);
-
-/* Lance une actualisation relative à l'étendue du projet. */
-static void update_menu_bar_for_project(GMenuBar *, GStudyProject *);
-
-
-
-/* Indique le type défini pour la barre de menus de la fenêtre principale. */
-G_DEFINE_TYPE(GMenuBar, g_menu_bar, G_TYPE_EDITOR_ITEM);
-
-
-/******************************************************************************
-* *
-* Paramètres : klass = classe à initialiser. *
-* *
-* Description : Initialise la classe de la barre de menus de l'éditeur. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_menu_bar_class_init(GMenuBarClass *klass)
-{
- GObjectClass *object; /* Autre version de la classe */
- GEditorItemClass *item; /* Encore une autre vision... */
-
- object = G_OBJECT_CLASS(klass);
-
- object->dispose = (GObjectFinalizeFunc/* ! */)g_menu_bar_dispose;
- object->finalize = (GObjectFinalizeFunc)g_menu_bar_finalize;
-
- item = G_EDITOR_ITEM_CLASS(klass);
-
- item->get_key = (get_item_key_fc)g_menu_bar_get_key;
- item->get_widget = (get_item_widget_fc)g_menu_bar_get_widget;
-
- item->change_content = (change_item_content_fc)change_menubar_current_content;
- item->change_view = (change_item_view_fc)change_menubar_current_view;
- item->track_cursor = (track_cursor_in_view_fc)track_caret_address_for_menu_bar;
- item->update_project = (update_project_fc)update_menu_bar_for_project;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à initialiser. *
-* *
-* Description : Initialise une instance de la barre de menus pour l'éditeur. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_menu_bar_init(GMenuBar *bar)
-{
- bar->support = gtk_menu_bar_new();
- gtk_widget_show(bar->support);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance d'objet GLib à traiter. *
-* *
-* Description : Supprime toutes les références externes. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_menu_bar_dispose(GMenuBar *bar)
-{
- G_OBJECT_CLASS(g_menu_bar_parent_class)->dispose(G_OBJECT(bar));
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance d'objet GLib à traiter. *
-* *
-* Description : Procède à la libération totale de la mémoire. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void g_menu_bar_finalize(GMenuBar *bar)
-{
- G_OBJECT_CLASS(g_menu_bar_parent_class)->finalize(G_OBJECT(bar));
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : ref = espace de référencement global. *
-* *
-* Description : Compose la barre de menus principale. *
-* *
-* Retour : Adresse de la structure mise en place. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GEditorItem *g_menu_bar_new(GObject *ref)
-{
- GMenuBar *result; /* Structure à retourner */
-
- result = g_object_new(G_TYPE_MENU_BAR, NULL);
-
- /* Fichier */
-
- result->file = build_menu_file();
- gtk_container_add(GTK_CONTAINER(result->support), result->file);
-
- /* Edition */
-
- result->edition = build_menu_edition(ref, result);
- gtk_container_add(GTK_CONTAINER(result->support), result->edition);
-
- /* Affichage */
-
- result->view = build_menu_view(ref, result);
- gtk_container_add(GTK_CONTAINER(result->support), result->view);
-
- /* Projet */
-
- result->project = build_menu_project(ref, result);
- gtk_container_add(GTK_CONTAINER(result->support), result->project);
-
- /* Binaire */
-
- result->binary = build_menu_binary(ref, result);
- gtk_container_add(GTK_CONTAINER(result->support), result->binary);
-
- /* Débogage */
-
- result->debug = build_menu_debug(ref);
- gtk_container_add(GTK_CONTAINER(result->support), result->debug);
-
- /* Options */
-
- result->options = build_menu_options(ref, result);
- gtk_container_add(GTK_CONTAINER(result->support), result->options);
-
- /* Greffons */
-
- result->plugins = build_menu_plugins(ref);
- gtk_container_add(GTK_CONTAINER(result->support), result->plugins);
-
- /* Aide */
-
- result->help = build_menu_help();
- gtk_container_add(GTK_CONTAINER(result->support), result->help);
-
- return G_EDITOR_ITEM(result);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le nom humain attribué à l'élément réactif. *
-* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static char *g_menu_bar_get_key(const GMenuBar *bar)
-{
- char *result; /* Description à renvoyer */
-
- result = strdup("menus");
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le composant GTK associé à l'élément réactif. *
-* *
-* Retour : Instance de composant graphique chargé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static GtkWidget *g_menu_bar_get_widget(const GMenuBar *bar)
-{
- GtkWidget *result; /* Composant à retourner */
-
- result = bar->support;
-
- if (result != NULL)
- g_object_ref(G_OBJECT(result));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = barre de menus à mettre à jour. *
-* old = ancien contenu chargé analysé. *
-* new = nouveau contenu chargé à analyser. *
-* *
-* Description : Réagit à un changement d'affichage principal de contenu. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void change_menubar_current_content(GMenuBar *bar, GLoadedContent *old, GLoadedContent *new)
-{
- GObject *ref; /* Espace de référencements */
-
- ref = get_global_ref();
-
- rebuild_menu_view_for_content(bar->view, ref, new);
-
- update_access_for_content_in_menu_binary(ref, new);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = barre de menus à mettre à jour. *
-* old = ancienne vue du contenu chargé analysé. *
-* new = nouvelle vue du contenu chargé analysé. *
-* *
-* Description : Lance une actualisation du fait d'un changement de support. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void change_menubar_current_view(GMenuBar *bar, GLoadedPanel *old, GLoadedPanel *new)
-{
- GObject *ref; /* Espace de référencements */
-
- ref = get_global_ref();
-
- update_access_for_view_in_menu_edition(ref, new);
-
- rebuild_menu_view_for_view(bar->view, ref, new);
-
- update_access_for_view_in_menu_view(ref, new);
-
- update_access_for_view_in_menu_binary(ref, new);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = barre de menus à actualiser. *
-* panel = composant d'affichage parcouru. *
-* cursor = nouvel emplacement du curseur courant. *
-* *
-* Description : Met à jour les accès aux menus en fonction de la position. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void track_caret_address_for_menu_bar(GMenuBar *bar, GLoadedPanel *panel, const GLineCursor *cursor)
-{
- GObject *ref; /* Espace de référencements */
-
- ref = get_global_ref();
-
- update_access_for_cursor_in_menu_edition(ref, panel, cursor);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = barre de menus à actualiser. *
-* project = projet visé par la procédure. *
-* *
-* Description : Lance une actualisation relative à l'étendue du projet. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static void update_menu_bar_for_project(GMenuBar *bar, GStudyProject *project)
-{
- update_menu_project_for_project(bar->project, project, bar);
-
-}
diff --git a/src/gui/menus/menubar.h b/src/gui/menus/menubar.h
deleted file mode 100644
index 5b77dc6..0000000
--- a/src/gui/menus/menubar.h
+++ /dev/null
@@ -1,56 +0,0 @@
-
-/* Chrysalide - Outil d'analyse de fichiers binaires
- * menubar.h - prototypes pour la gestion des différents menus de la fenêtre principale
- *
- * Copyright (C) 2011-2018 Cyrille Bagard
- *
- * This file is part of Chrysalide.
- *
- * Chrysalide is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Chrysalide is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-
-#ifndef _GUI_MENUS_MENUBAR_H
-#define _GUI_MENUS_MENUBAR_H
-
-
-#include "../item.h"
-
-
-
-#define G_TYPE_MENU_BAR g_menu_bar_get_type()
-#define G_MENU_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_menu_bar_get_type(), GMenuBar))
-#define G_IS_MENU_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_menu_bar_get_type()))
-#define G_MENU_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_MENU_BAR, GMenuBarClass))
-#define G_IS_MENU_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_MENU_BAR))
-#define G_MENU_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_MENU_BAR, GMenuBarClass))
-
-
-/* Barre de menus de la fenêtre principale (instance) */
-typedef struct _GMenuBar GMenuBar;
-
-/* Barre de menus de la fenêtre principale (classe) */
-typedef struct _GMenuBarClass GMenuBarClass;
-
-
-/* Indique le type défini pour la barre de menus de la fenêtre principale. */
-GType g_menu_bar_get_type(void);
-
-/* Compose la barre de menus principale. */
-GEditorItem *g_menu_bar_new(GObject *);
-
-
-
-#endif /* _GUI_MENUS_MENUBAR_H */
diff --git a/src/gui/menus/options.h b/src/gui/menus/options.h
index f73d659..7176a09 100644
--- a/src/gui/menus/options.h
+++ b/src/gui/menus/options.h
@@ -29,7 +29,7 @@
#include <gtk/gtk.h>
-#include "menubar.h"
+#include "../menubar.h"
diff --git a/src/gui/menus/project.h b/src/gui/menus/project.h
index 5257694..6fddf74 100644
--- a/src/gui/menus/project.h
+++ b/src/gui/menus/project.h
@@ -29,7 +29,7 @@
#include <gtk/gtk.h>
-#include "menubar.h"
+#include "../menubar.h"
#include "../../analysis/project.h"
diff --git a/src/gui/menus/view.h b/src/gui/menus/view.h
index f230b85..3d4b69f 100644
--- a/src/gui/menus/view.h
+++ b/src/gui/menus/view.h
@@ -29,7 +29,7 @@
#include <gtk/gtk.h>
-#include "menubar.h"
+#include "../menubar.h"
#include "../../glibext/gloadedpanel.h"