diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2011-01-03 01:22:36 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2011-01-03 01:22:36 (GMT) |
commit | 9776f811af66eca56116fe81f77d859fb9b6e8fe (patch) | |
tree | 63329a5b60e84528e10733ded7013c8eb81a9996 /src/gui | |
parent | 651c94450df8619c26e26a133289dbaa197616f4 (diff) |
Moved all menus related stuff into 'src/gui/menus'.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@205 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/Makefile.am | 6 | ||||
-rw-r--r-- | src/gui/editem.c | 19 | ||||
-rw-r--r-- | src/gui/editem.h | 3 | ||||
-rw-r--r-- | src/gui/menus/Makefile.am | 20 | ||||
-rw-r--r-- | src/gui/menus/help.c | 93 | ||||
-rw-r--r-- | src/gui/menus/help.h | 38 | ||||
-rw-r--r-- | src/gui/menus/menubar.c | 142 | ||||
-rw-r--r-- | src/gui/menus/menubar.h | 56 |
8 files changed, 375 insertions, 2 deletions
diff --git a/src/gui/Makefile.am b/src/gui/Makefile.am index 801ee73..06f1a4e 100644 --- a/src/gui/Makefile.am +++ b/src/gui/Makefile.am @@ -6,7 +6,9 @@ libgui_la_SOURCES = \ editem.h editem.c libgui_la_LIBADD = \ - tb/libguitb.la + menus/libguimenus.la \ + tb/libguitb.la \ + ../dialogs/libdialogs.la libgui_la_LDFLAGS = @@ -17,4 +19,4 @@ AM_CPPFLAGS = AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS) -SUBDIRS = tb +SUBDIRS = menus tb diff --git a/src/gui/editem.c b/src/gui/editem.c index 694591b..bb3ec35 100644 --- a/src/gui/editem.c +++ b/src/gui/editem.c @@ -94,6 +94,25 @@ static void g_editor_item_init(GEditorItem *item) } +/****************************************************************************** +* * +* Paramètres : item = instance à consulter. * +* * +* Description : Fournit le composant GTK associé à l'élément réactif. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *g_editor_item_get_widget(const GEditorItem *item) +{ + return item->widget; + +} + + /* ---------------------------------------------------------------------------------- */ /* MANIPULATION D'ENSEMBLES */ diff --git a/src/gui/editem.h b/src/gui/editem.h index e991630..04513d7 100644 --- a/src/gui/editem.h +++ b/src/gui/editem.h @@ -55,6 +55,9 @@ typedef struct _GEditorItemClass GEditorItemClass; /* Indique le type défini pour un élément réactif d'éditeur. */ GType g_editor_item_get_type(void); +/* Fournit le composant GTK associé à l'élément réactif. */ +GtkWidget *g_editor_item_get_widget(const GEditorItem *); + /* ---------------------------- MANIPULATION D'ENSEMBLES ---------------------------- */ diff --git a/src/gui/menus/Makefile.am b/src/gui/menus/Makefile.am new file mode 100644 index 0000000..b9e127d --- /dev/null +++ b/src/gui/menus/Makefile.am @@ -0,0 +1,20 @@ + +noinst_LTLIBRARIES = libguimenus.la + +libguimenus_la_SOURCES = \ + help.h help.c \ + menubar.h menubar.c + +libguimenus_la_LDFLAGS = + +libguimenus_LIBADD = $(LIBINTL) \ + ../../dialogs/libdialogs.la + + +INCLUDES = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) + +AM_CPPFLAGS = + +AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS) + +SUBDIRS = diff --git a/src/gui/menus/help.c b/src/gui/menus/help.c new file mode 100644 index 0000000..b1fb545 --- /dev/null +++ b/src/gui/menus/help.c @@ -0,0 +1,93 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * help.c - gestion du menu 'Aide' + * + * Copyright (C) 2011 Cyrille Bagard + * + * This file is part of OpenIDA. + * + * OpenIDA 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. + * + * OpenIDA 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 "help.h" + + +#include <i18n.h> + + +#include "../../dialogs/about.h" +#include "../../gtkext/easygtk.h" + + + +/* Réagit avec le menu "Aide -> A propos de...". */ +static void mcb_help_about(GtkMenuItem *, GObject *); + + + +/****************************************************************************** +* * +* Paramètres : ref = espace de référencement global. * +* * +* Description : Construit le menu "Aide". * +* * +* Retour : Panneau de menus mis en place. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *build_menu_help(GObject *ref) +{ + GtkWidget *result; /* Support à retourner */ + GtkWidget *menubar; /* Support pour éléments */ + GtkWidget *submenuitem; /* Sous-élément de menu */ + + result = gtk_menu_item_new_with_mnemonic(_("_Help")); + gtk_widget_show(result); + + menubar = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(result), menubar); + + submenuitem = qck_create_menu_item(NULL, NULL, _("About"), G_CALLBACK(mcb_help_about), ref); + gtk_container_add(GTK_CONTAINER(menubar), submenuitem); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : menuitem = élément de menu sélectionné. * +* ref = adresse de l'espace de référencement global. * +* * +* Description : Réagit avec le menu "Aide -> A propos de...". * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static void mcb_help_about(GtkMenuItem *menuitem, GObject *ref) +{ + GtkWidget *dialog; /* Boîte de dialogue à montrer */ + + dialog = create_about_dialog(GTK_WINDOW(ref)); + gtk_widget_show(dialog); + +} diff --git a/src/gui/menus/help.h b/src/gui/menus/help.h new file mode 100644 index 0000000..0c2d345 --- /dev/null +++ b/src/gui/menus/help.h @@ -0,0 +1,38 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * help.h - prototypes pour la gestion du menu 'Aide' + * + * Copyright (C) 2011 Cyrille Bagard + * + * This file is part of OpenIDA. + * + * OpenIDA 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. + * + * OpenIDA 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_HELP_H +#define _GUI_MENUS_HELP_H + + +#include <gtk/gtk.h> + + + +/* Construit le menu "Aide". */ +GtkWidget *build_menu_help(GObject *); + + + +#endif /* _GUI_MENUS_HELP_H */ diff --git a/src/gui/menus/menubar.c b/src/gui/menus/menubar.c new file mode 100644 index 0000000..af27888 --- /dev/null +++ b/src/gui/menus/menubar.c @@ -0,0 +1,142 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * menubar.c - gestion des différents menus de la fenêtre principale + * + * Copyright (C) 2011 Cyrille Bagard + * + * This file is part of OpenIDA. + * + * OpenIDA 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. + * + * OpenIDA 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 "help.h" +#include "../editem-int.h" + + + +/* Barre de menus de la fenêtre principale (instance) */ +struct _GMenuBar +{ + GEditorItem parent; /* A laisser en premier */ + +}; + + +/* 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 *); + + + +/* 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) +{ + +} + + +/****************************************************************************** +* * +* 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) +{ + GEditorItem *item; /* Autre version de l'élément */ + + item = G_EDITOR_ITEM(bar); + + item->name = "menus"; + + item->widget = gtk_menu_bar_new(); + gtk_widget_show(item->widget); + +} + + +/****************************************************************************** +* * +* Paramètres : ref = espace de référencement global. * +* name = nom associé à l'élément. * +* widget = composant à présenter à l'affichage. * +* label = étiquette destinée au menu. * +* * +* 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 */ + GEditorItem *item; /* Autre version de l'élément */ + GtkWidget *menuitem; /* Elément de menu */ + + result = g_object_new(G_TYPE_MENU_BAR, NULL); + + /* Initialisation générique */ + + item = G_EDITOR_ITEM(result); + + g_object_ref(ref); + item->ref = ref; + + /* Aide */ + + menuitem = build_menu_help(ref); + gtk_container_add(GTK_CONTAINER(item->widget), menuitem); + + return G_EDITOR_ITEM(result); + +} diff --git a/src/gui/menus/menubar.h b/src/gui/menus/menubar.h new file mode 100644 index 0000000..e7dcf6d --- /dev/null +++ b/src/gui/menus/menubar.h @@ -0,0 +1,56 @@ + +/* OpenIDA - Outil d'analyse de fichiers binaires + * menubar.h - prototypes pour la gestion des différents menus de la fenêtre principale + * + * Copyright (C) 2011 Cyrille Bagard + * + * This file is part of OpenIDA. + * + * OpenIDA 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. + * + * OpenIDA 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 "../editem.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 */ |