diff options
Diffstat (limited to 'src/gui/menubar.c')
-rw-r--r-- | src/gui/menubar.c | 297 |
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)); |