summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/pychrysalide/gui/core/global.c43
-rw-r--r--plugins/pychrysalide/gui/menubar.c323
-rw-r--r--plugins/ropgadgets/plugin.c27
3 files changed, 74 insertions, 319 deletions
diff --git a/plugins/pychrysalide/gui/core/global.c b/plugins/pychrysalide/gui/core/global.c
index 26d51cb..a3b62ee 100644
--- a/plugins/pychrysalide/gui/core/global.c
+++ b/plugins/pychrysalide/gui/core/global.c
@@ -25,6 +25,7 @@
#include "global.h"
+#include <assert.h>
#include <pygobject.h>
@@ -36,6 +37,9 @@
+/* Fournit l'adresse du constructeur principal de l'éditeur. */
+static PyObject *py_global_get_editor_builder(PyObject *, PyObject *);
+
/* Fournit l'adresse de la fenêtre principale de l'éditeur. */
static PyObject *py_global_get_editor_window(PyObject *, PyObject *);
@@ -49,6 +53,44 @@ static PyObject *py_global_get_current_content(PyObject *, PyObject *);
* Paramètres : self = objet Python concerné par l'appel. *
* args = non utilisé ici. *
* *
+* Description : Fournit l'adresse du constructeur principal de l'éditeur. *
+* *
+* Retour : Constructeur principal référencé. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PyObject *py_global_get_editor_builder(PyObject *self, PyObject *args)
+{
+ PyObject *result; /* Instance Python à retourner */
+ GtkBuilder *builder; /* Constructeur principal */
+
+#define GLOBAL_GET_EDITOR_BUILDER_METHOD PYTHON_METHOD_DEF \
+( \
+ get_editor_builder, "", \
+ METH_NOARGS, py_global, \
+ "Provide access to the Chrysalide main window builder.\n" \
+ "\n" \
+ "The result should be an instance of Gtk.Builder, never None." \
+)
+
+ builder = get_editor_builder();
+ assert(builder != NULL);
+
+ result = pygobject_new(G_OBJECT(builder));
+ g_object_unref(G_OBJECT(builder));
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : self = objet Python concerné par l'appel. *
+* args = non utilisé ici. *
+* *
* Description : Fournit l'adresse de la fenêtre principale de l'éditeur. *
* *
* Retour : Fenêtre principale référencée. *
@@ -150,6 +192,7 @@ bool populate_gui_core_module_with_global(void)
PyObject *module; /* Module à recompléter */
static PyMethodDef py_global_methods[] = {
+ GLOBAL_GET_EDITOR_BUILDER_METHOD,
GLOBAL_GET_EDITOR_WINDOW_METHOD,
GLOBAL_GET_CURRENT_CONTENT_METHOD,
{ NULL }
diff --git a/plugins/pychrysalide/gui/menubar.c b/plugins/pychrysalide/gui/menubar.c
index 0234fba..5c6270e 100644
--- a/plugins/pychrysalide/gui/menubar.c
+++ b/plugins/pychrysalide/gui/menubar.c
@@ -47,296 +47,9 @@
" 'menubar' as key."
-/* Fournit le composant GTK associé au menu "Fichier". */
-static PyObject *py_menu_bar_get_file_menu(PyObject *, void *);
+/* Fournit le constructeur associé à la barre de menus. */
+static PyObject *py_menu_bar_get_builder(PyObject *self, void *);
-/* Fournit le composant GTK associé au menu "Edition". */
-static PyObject *py_menu_bar_get_edition_menu(PyObject *, void *);
-
-/* Fournit le composant GTK associé au menu "Affichage". */
-static PyObject *py_menu_bar_get_view_menu(PyObject *, void *);
-
-/* Fournit le composant GTK associé au menu "Projet". */
-static PyObject *py_menu_bar_get_project_menu(PyObject *, void *);
-
-/* Fournit le composant GTK associé au menu "Binaire". */
-static PyObject *py_menu_bar_get_binary_menu(PyObject *, void *);
-
-/* Fournit le composant GTK associé au menu "Débogage". */
-static PyObject *py_menu_bar_get_debug_menu(PyObject *, void *);
-
-/* Fournit le composant GTK associé au menu "Options". */
-static PyObject *py_menu_bar_get_options_menu(PyObject *, void *);
-
-/* Fournit le composant GTK associé au menu "Aide". */
-static PyObject *py_menu_bar_get_help_menu(PyObject *, void *);
-
-
-
-/******************************************************************************
-* *
-* Paramètres : self = objet Python concerné par l'appel. *
-* closure = non utilisé ici. *
-* *
-* Description : Fournit le composant GTK associé au menu "Fichier". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PyObject *py_menu_bar_get_file_menu(PyObject *self, void *closure)
-{
- PyObject *result; /* Valeur à retourner */
- GMenuBar *bar; /* Elément à consulter */
- GtkWidget *menu; /* Composant GTK visé */
-
-#define MENU_BAR_FILE_MENU_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- file_menu, py_menu_bar, \
- "File menu included in the main menubar, as a" \
- " Gtk.MenuItem instance." \
-)
-
- bar = G_MENU_BAR(pygobject_get(self));
-
- menu = g_menu_bar_get_file_menu(bar);
-
- result = pygobject_new(G_OBJECT(menu));
- g_object_unref(G_OBJECT(menu));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : self = objet Python concerné par l'appel. *
-* closure = non utilisé ici. *
-* *
-* Description : Fournit le composant GTK associé au menu "Edition". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PyObject *py_menu_bar_get_edition_menu(PyObject *self, void *closure)
-{
- PyObject *result; /* Valeur à retourner */
- GMenuBar *bar; /* Elément à consulter */
- GtkWidget *menu; /* Composant GTK visé */
-
-#define MENU_BAR_EDITION_MENU_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- edition_menu, py_menu_bar, \
- "Edition menu included in the main menubar, as a" \
- " Gtk.MenuItem instance." \
-)
-
- bar = G_MENU_BAR(pygobject_get(self));
-
- menu = g_menu_bar_get_edition_menu(bar);
-
- result = pygobject_new(G_OBJECT(menu));
- g_object_unref(G_OBJECT(menu));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : self = objet Python concerné par l'appel. *
-* closure = non utilisé ici. *
-* *
-* Description : Fournit le composant GTK associé au menu "Affichage". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PyObject *py_menu_bar_get_view_menu(PyObject *self, void *closure)
-{
- PyObject *result; /* Valeur à retourner */
- GMenuBar *bar; /* Elément à consulter */
- GtkWidget *menu; /* Composant GTK visé */
-
-#define MENU_BAR_VIEW_MENU_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- view_menu, py_menu_bar, \
- "View menu included in the main menubar, as a" \
- " Gtk.MenuItem instance." \
-)
-
- bar = G_MENU_BAR(pygobject_get(self));
-
- menu = g_menu_bar_get_view_menu(bar);
-
- result = pygobject_new(G_OBJECT(menu));
- g_object_unref(G_OBJECT(menu));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : self = objet Python concerné par l'appel. *
-* closure = non utilisé ici. *
-* *
-* Description : Fournit le composant GTK associé au menu "Projet". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PyObject *py_menu_bar_get_project_menu(PyObject *self, void *closure)
-{
- PyObject *result; /* Valeur à retourner */
- GMenuBar *bar; /* Elément à consulter */
- GtkWidget *menu; /* Composant GTK visé */
-
-#define MENU_BAR_PROJECT_MENU_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- project_menu, py_menu_bar, \
- "Project menu included in the main menubar, as a" \
- " Gtk.MenuItem instance." \
-)
-
- bar = G_MENU_BAR(pygobject_get(self));
-
- menu = g_menu_bar_get_project_menu(bar);
-
- result = pygobject_new(G_OBJECT(menu));
- g_object_unref(G_OBJECT(menu));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : self = objet Python concerné par l'appel. *
-* closure = non utilisé ici. *
-* *
-* Description : Fournit le composant GTK associé au menu "Binaire". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PyObject *py_menu_bar_get_binary_menu(PyObject *self, void *closure)
-{
- PyObject *result; /* Valeur à retourner */
- GMenuBar *bar; /* Elément à consulter */
- GtkWidget *menu; /* Composant GTK visé */
-
-#define MENU_BAR_BINARY_MENU_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- binary_menu, py_menu_bar, \
- "Binary menu included in the main menubar, as a" \
- " Gtk.MenuItem instance." \
-)
-
- bar = G_MENU_BAR(pygobject_get(self));
-
- menu = g_menu_bar_get_binary_menu(bar);
-
- result = pygobject_new(G_OBJECT(menu));
- g_object_unref(G_OBJECT(menu));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : self = objet Python concerné par l'appel. *
-* closure = non utilisé ici. *
-* *
-* Description : Fournit le composant GTK associé au menu "Débogage". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PyObject *py_menu_bar_get_debug_menu(PyObject *self, void *closure)
-{
- PyObject *result; /* Valeur à retourner */
- GMenuBar *bar; /* Elément à consulter */
- GtkWidget *menu; /* Composant GTK visé */
-
-#define MENU_BAR_DEBUG_MENU_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- debug_menu, py_menu_bar, \
- "Debug menu included in the main menubar, as a" \
- " Gtk.MenuItem instance." \
-)
-
- bar = G_MENU_BAR(pygobject_get(self));
-
- menu = g_menu_bar_get_debug_menu(bar);
-
- result = pygobject_new(G_OBJECT(menu));
- g_object_unref(G_OBJECT(menu));
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : self = objet Python concerné par l'appel. *
-* closure = non utilisé ici. *
-* *
-* Description : Fournit le composant GTK associé au menu "Options". *
-* *
-* Retour : Instance de composant graphique correspondant au menu visé. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PyObject *py_menu_bar_get_options_menu(PyObject *self, void *closure)
-{
- PyObject *result; /* Valeur à retourner */
- GMenuBar *bar; /* Elément à consulter */
- GtkWidget *menu; /* Composant GTK visé */
-
-#define MENU_BAR_OPTIONS_MENU_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- options_menu, py_menu_bar, \
- "Options menu included in the main menubar, as a" \
- " Gtk.MenuItem instance." \
-)
-
- bar = G_MENU_BAR(pygobject_get(self));
-
- menu = g_menu_bar_get_options_menu(bar);
-
- result = pygobject_new(G_OBJECT(menu));
- g_object_unref(G_OBJECT(menu));
-
- return result;
-
-}
/******************************************************************************
@@ -344,33 +57,32 @@ static PyObject *py_menu_bar_get_options_menu(PyObject *self, void *closure)
* Paramètres : self = objet Python concerné par l'appel. *
* closure = non utilisé ici. *
* *
-* 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 : - *
* *
******************************************************************************/
-static PyObject *py_menu_bar_get_help_menu(PyObject *self, void *closure)
+static PyObject *py_menu_bar_get_builder(PyObject *self, void *closure)
{
PyObject *result; /* Valeur à retourner */
GMenuBar *bar; /* Elément à consulter */
- GtkWidget *menu; /* Composant GTK visé */
+ GtkBuilder *builder; /* Instance GTK visée */
-#define MENU_BAR_HELP_MENU_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- help_menu, py_menu_bar, \
- "Help menu included in the main menubar, as a" \
- " Gtk.MenuItem instance." \
+#define MENU_BAR_BUILDER_ATTRIB PYTHON_GET_DEF_FULL \
+( \
+ builder, py_menu_bar, \
+ "Builder linked to the main menubar, as a Gtk.Builder instance." \
)
bar = G_MENU_BAR(pygobject_get(self));
- menu = g_menu_bar_get_help_menu(bar);
+ builder = g_menu_bar_get_builder(bar);
- result = pygobject_new(G_OBJECT(menu));
- g_object_unref(G_OBJECT(menu));
+ result = pygobject_new(G_OBJECT(builder));
+ g_object_unref(G_OBJECT(builder));
return result;
@@ -396,14 +108,7 @@ PyTypeObject *get_python_menu_bar_type(void)
};
static PyGetSetDef py_menu_bar_getseters[] = {
- MENU_BAR_FILE_MENU_ATTRIB,
- MENU_BAR_EDITION_MENU_ATTRIB,
- MENU_BAR_VIEW_MENU_ATTRIB,
- MENU_BAR_PROJECT_MENU_ATTRIB,
- MENU_BAR_BINARY_MENU_ATTRIB,
- MENU_BAR_DEBUG_MENU_ATTRIB,
- MENU_BAR_OPTIONS_MENU_ATTRIB,
- MENU_BAR_HELP_MENU_ATTRIB,
+ MENU_BAR_BUILDER_ATTRIB,
{ NULL }
};
diff --git a/plugins/ropgadgets/plugin.c b/plugins/ropgadgets/plugin.c
index c4c33dc..836717c 100644
--- a/plugins/ropgadgets/plugin.c
+++ b/plugins/ropgadgets/plugin.c
@@ -70,27 +70,34 @@ static void mcb_plugins_list_rop_gadgets(GtkMenuItem *, gpointer);
G_MODULE_EXPORT bool chrysalide_plugin_init(GPluginModule *plugin)
{
bool result; /* Bilan à retourner */
- GObject *ref; /* Espace de référencements */
- GtkContainer *menubar; /* Support pour éléments */
+ GtkBuilder *builder; /* Constructeur principal */
+ GtkMenuItem *item; /* Menu à compléter */
+ GtkContainer *menu; /* Support pour éléments */
GtkWidget *submenuitem; /* Sous-élément de menu */
result = false;
- ref = G_OBJECT(get_editor_window());
- if (ref == NULL) goto no_editor;
+ builder = get_editor_builder();
+ if (builder == NULL)
+ {
+ result = true;
+ goto no_editor;
+ }
- menubar = GTK_CONTAINER(g_object_get_data(ref, "menubar_plugins"));
- if (menubar == NULL) goto no_menubar;
+ item = GTK_MENU_ITEM(gtk_builder_get_object(builder, "binary"));
+ if (item == NULL) goto no_binary_menu;
- submenuitem = qck_create_menu_item(ref, "mnu_plugins_ropgadgets", _("List ROP gadgets"),
+ menu = GTK_CONTAINER(gtk_menu_item_get_submenu(item));
+
+ submenuitem = qck_create_menu_item(G_OBJECT(item), "binary_ropgadgets", _("List ROP gadgets"),
G_CALLBACK(mcb_plugins_list_rop_gadgets), NULL);
- gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
+ gtk_container_add(GTK_CONTAINER(menu), submenuitem);
result = true;
- no_menubar:
+ no_binary_menu:
- g_object_unref(ref);
+ g_object_unref(G_OBJECT(builder));
no_editor: