summaryrefslogtreecommitdiff
path: root/src/gui/menubar.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/menubar.c')
-rw-r--r--src/gui/menubar.c297
1 files changed, 33 insertions, 264 deletions
diff --git a/src/gui/menubar.c b/src/gui/menubar.c
index 55ff3fa..5630194 100644
--- a/src/gui/menubar.c
+++ b/src/gui/menubar.c
@@ -36,7 +36,6 @@
#include "menus/file.h"
#include "menus/help.h"
#include "menus/options.h"
-#include "menus/plugins.h"
#include "menus/project.h"
#include "menus/view.h"
@@ -47,17 +46,7 @@ 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" */
+ GtkBuilder *builder; /* Constructeur des menus */
};
@@ -86,7 +75,7 @@ static void g_menu_bar_finalize(GMenuBar *);
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 *);
+static GtkWidget *g_menu_bar_get_widget(GMenuBar *);
/* Réagit à un changement d'affichage principal de contenu. */
static void change_menubar_current_content(GMenuBar *, GLoadedContent *, GLoadedContent *);
@@ -155,8 +144,7 @@ static void g_menu_bar_class_init(GMenuBarClass *klass)
static void g_menu_bar_init(GMenuBar *bar)
{
- bar->support = gtk_menu_bar_new();
- gtk_widget_show(bar->support);
+ bar->builder = NULL;
}
@@ -175,6 +163,8 @@ static void g_menu_bar_init(GMenuBar *bar)
static void g_menu_bar_dispose(GMenuBar *bar)
{
+ g_clear_object(&bar->builder);
+
G_OBJECT_CLASS(g_menu_bar_parent_class)->dispose(G_OBJECT(bar));
}
@@ -201,7 +191,7 @@ static void g_menu_bar_finalize(GMenuBar *bar)
/******************************************************************************
* *
-* Paramètres : ref = espace de référencement global. *
+* Paramètres : builder = constructeur principal de l'éditeur. *
* *
* Description : Compose la barre de menus principale. *
* *
@@ -211,56 +201,23 @@ static void g_menu_bar_finalize(GMenuBar *bar)
* *
******************************************************************************/
-GEditorItem *g_menu_bar_new(GObject *ref)
+GEditorItem *g_menu_bar_new(GtkBuilder *builder)
{
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);
+ result->builder = builder;
+ g_object_ref(G_OBJECT(builder));
- /* 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);
+ setup_menu_file_callbacks(builder);
+ setup_menu_edition_callbacks(builder);
+ setup_menu_view_callbacks(builder);
+ setup_menu_project_callbacks(builder);
+ setup_menu_binary_callbacks(builder);
+ setup_menu_debug_callbacks(builder);
+ setup_menu_options_callbacks(builder);
+ setup_menu_help_callbacks(builder);
return G_EDITOR_ITEM(result);
@@ -302,14 +259,13 @@ static char *g_menu_bar_get_key(const GMenuBar *bar)
* *
******************************************************************************/
-static GtkWidget *g_menu_bar_get_widget(const GMenuBar *bar)
+static GtkWidget *g_menu_bar_get_widget(GMenuBar *bar)
{
GtkWidget *result; /* Composant à retourner */
- result = bar->support;
+ result = GTK_WIDGET(gtk_builder_get_object(bar->builder, "menubar"));
- if (result != NULL)
- g_object_ref(G_OBJECT(result));
+ g_object_ref(G_OBJECT(result));
return result;
@@ -332,13 +288,9 @@ static GtkWidget *g_menu_bar_get_widget(const GMenuBar *bar)
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);
+ rebuild_menu_view_for_content(bar->builder, new);
- update_access_for_content_in_menu_binary(ref, new);
+ update_access_for_content_in_menu_binary(bar->builder, new);
}
@@ -359,17 +311,13 @@ static void change_menubar_current_content(GMenuBar *bar, GLoadedContent *old, G
static void change_menubar_current_view(GMenuBar *bar, GLoadedPanel *old, GLoadedPanel *new)
{
- GObject *ref; /* Espace de référencements */
+ update_access_for_view_in_menu_edition(bar->builder, new);
- ref = get_global_ref();
+ rebuild_menu_view_for_view(bar->builder, new);
- update_access_for_view_in_menu_edition(ref, new);
+ update_access_for_view_in_menu_view(bar->builder, 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);
+ update_access_for_view_in_menu_binary(bar->builder, new);
}
@@ -390,11 +338,7 @@ static void change_menubar_current_view(GMenuBar *bar, GLoadedPanel *old, GLoade
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);
+ update_access_for_cursor_in_menu_edition(bar->builder, panel, cursor);
}
@@ -414,182 +358,7 @@ static void track_caret_address_for_menu_bar(GMenuBar *bar, GLoadedPanel *panel,
static void update_menu_bar_for_project(GMenuBar *bar, GStudyProject *project)
{
- update_menu_project_for_project(bar->project, project, bar);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le composant GTK associé au menu "Fichier". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkWidget *g_menu_bar_get_file_menu(const GMenuBar *bar)
-{
- GtkWidget *result; /* Menu à renvoyer */
-
- result = bar->file;
-
- g_object_ref(G_OBJECT(result));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le composant GTK associé au menu "Edition". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkWidget *g_menu_bar_get_edition_menu(const GMenuBar *bar)
-{
- GtkWidget *result; /* Menu à renvoyer */
-
- result = bar->edition;
-
- g_object_ref(G_OBJECT(result));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le composant GTK associé au menu "Affichage". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkWidget *g_menu_bar_get_view_menu(const GMenuBar *bar)
-{
- GtkWidget *result; /* Menu à renvoyer */
-
- result = bar->view;
-
- g_object_ref(G_OBJECT(result));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le composant GTK associé au menu "Projet". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkWidget *g_menu_bar_get_project_menu(const GMenuBar *bar)
-{
- GtkWidget *result; /* Menu à renvoyer */
-
- result = bar->project;
-
- g_object_ref(G_OBJECT(result));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le composant GTK associé au menu "Binaire". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkWidget *g_menu_bar_get_binary_menu(const GMenuBar *bar)
-{
- GtkWidget *result; /* Menu à renvoyer */
-
- result = bar->binary;
-
- g_object_ref(G_OBJECT(result));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le composant GTK associé au menu "Débogage". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkWidget *g_menu_bar_get_debug_menu(const GMenuBar *bar)
-{
- GtkWidget *result; /* Menu à renvoyer */
-
- result = bar->debug;
-
- g_object_ref(G_OBJECT(result));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : bar = instance à consulter. *
-* *
-* Description : Fournit le composant GTK associé au menu "Options". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GtkWidget *g_menu_bar_get_options_menu(const GMenuBar *bar)
-{
- GtkWidget *result; /* Menu à renvoyer */
-
- result = bar->options;
-
- g_object_ref(G_OBJECT(result));
-
- return result;
+ update_menu_project_for_project(bar->builder, project);
}
@@ -598,19 +367,19 @@ GtkWidget *g_menu_bar_get_options_menu(const GMenuBar *bar)
* *
* Paramètres : bar = instance à consulter. *
* *
-* Description : Fournit le composant GTK associé au menu "Aide". *
+* Description : Fournit le constructeur associé à la barre de menus. *
* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
+* Retour : Instance du constructeur (principal) associé à la barre. *
* *
* Remarques : - *
* *
******************************************************************************/
-GtkWidget *g_menu_bar_get_help_menu(const GMenuBar *bar)
+GtkBuilder *g_menu_bar_get_builder(const GMenuBar *bar)
{
- GtkWidget *result; /* Menu à renvoyer */
+ GtkBuilder *result; /* Constructeur à renvoyer */
- result = bar->help;
+ result = bar->builder;
g_object_ref(G_OBJECT(result));