diff options
Diffstat (limited to 'plugins/pychrysa/gui/panels')
| -rw-r--r-- | plugins/pychrysa/gui/panels/Makefile.am | 15 | ||||
| -rw-r--r-- | plugins/pychrysa/gui/panels/module.c | 93 | ||||
| -rw-r--r-- | plugins/pychrysa/gui/panels/module.h | 39 | ||||
| -rw-r--r-- | plugins/pychrysa/gui/panels/panel.c | 244 | ||||
| -rw-r--r-- | plugins/pychrysa/gui/panels/panel.h | 42 | 
5 files changed, 0 insertions, 433 deletions
| diff --git a/plugins/pychrysa/gui/panels/Makefile.am b/plugins/pychrysa/gui/panels/Makefile.am deleted file mode 100644 index 99e4c3f..0000000 --- a/plugins/pychrysa/gui/panels/Makefile.am +++ /dev/null @@ -1,15 +0,0 @@ - -noinst_LTLIBRARIES = libpychrysaguipanels.la - -libpychrysaguipanels_la_SOURCES =		\ -	module.h module.c					\ -	panel.h panel.c - - -libpychrysaguipanels_la_LDFLAGS =  - - -AM_CPPFLAGS = $(LIBGTK_CFLAGS) $(LIBXML_CFLAGS) $(LIBPYTHON_CFLAGS) $(LIBPYGOBJECT_CFLAGS) \ -	-I../../../../src - -AM_CFLAGS = $(DEBUG_CFLAGS) $(WARNING_FLAGS) $(COMPLIANCE_FLAGS) diff --git a/plugins/pychrysa/gui/panels/module.c b/plugins/pychrysa/gui/panels/module.c deleted file mode 100644 index 21b487e..0000000 --- a/plugins/pychrysa/gui/panels/module.c +++ /dev/null @@ -1,93 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * module.c - intégration du répertoire panels en tant que module - * - * Copyright (C) 2012-2017 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 "module.h" - - -#include <assert.h> - - -#include "panel.h" -#include "../../access.h" - - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : module = module dont la définition est à compléter.          * -*                                                                             * -*  Description : Ajoute le module 'gui.panels' au module Python.              * -*                                                                             * -*  Retour      : -                                                            * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -bool add_gui_panels_module_to_python_module(PyObject *super) -{ -    bool result;                            /* Bilan à retourner           */ -    PyObject *module;                       /* Sous-module mis en place    */ -    int ret;                                /* Bilan d'un appel            */ - -    static PyModuleDef py_chrysalide_panels_module = { - -        .m_base = PyModuleDef_HEAD_INIT, - -        .m_name = "gui.analysis.panels", -        .m_doc = "Python module for Chrysalide.gui.panels", - -        .m_size = -1, - -    }; - -    result = false; - -    module = PyModule_Create(&py_chrysalide_panels_module); -    if (module == NULL) return false; - -    ret = PyState_AddModule(super, &py_chrysalide_panels_module); -    if (ret != 0) goto loading_failed; - -    ret = _PyImport_FixupBuiltin(module, "pychrysalide.gui.panels"); -    if (ret != 0) goto loading_failed; - -    Py_INCREF(module); -    ret = PyModule_AddObject(super, "panels", module); -    if (ret != 0) goto loading_failed; - -    result = true; - -    result &= register_python_panel_item(module); - -    if (result) -        register_access_to_python_module("pychrysalide.gui.panels", module); - - loading_failed: - -    assert(result); - -    return result; - -} diff --git a/plugins/pychrysa/gui/panels/module.h b/plugins/pychrysa/gui/panels/module.h deleted file mode 100644 index 542754b..0000000 --- a/plugins/pychrysa/gui/panels/module.h +++ /dev/null @@ -1,39 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * module.h - prototypes pour l'intégration du répertoire panels en tant que module - * - * Copyright (C) 2012-2017 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 _PLUGINS_PYCHRYSA_GUI_PANELS_MODULE_H -#define _PLUGINS_PYCHRYSA_GUI_PANELS_MODULE_H - - -#include <Python.h> -#include <stdbool.h> - - - -/* Ajoute le module 'gui.panels' au module Python. */ -bool add_gui_panels_module_to_python_module(PyObject *); - - - -#endif  /* _PLUGINS_PYCHRYSA_GUI_PANELS_MODULE_H */ diff --git a/plugins/pychrysa/gui/panels/panel.c b/plugins/pychrysa/gui/panels/panel.c deleted file mode 100644 index 72c9e7e..0000000 --- a/plugins/pychrysa/gui/panels/panel.c +++ /dev/null @@ -1,244 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * panel.c - équivalent Python du fichier "gui/panels/panel.c" - * - * Copyright (C) 2012-2017 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 "panel.h" - - -#include <pygobject.h> - - -#include <core/params.h> -#include <gui/core/panels.h> -#include <gui/panels/panel.h> - - -#include "../editem.h" -#include "../../helpers.h" -#include "../../gtkext/dockable.h" - - - -/* Initialise une instance sur la base du dérivé de GObject. */ -static int py_panel_item_init(PyObject *self, PyObject *args, PyObject *kwds); - -/* Place un panneau dans l'ensemble affiché. */ -static PyObject *py_panel_item_dock(PyObject *, PyObject *); - -/* Définit les constantes pour les panneaux. */ -static bool py_panel_item_define_constants(PyTypeObject *); - - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : self = objet à initialiser (théoriquement).                  * -*                args = arguments fournis à l'appel.                          * -*                kwds = arguments de type key=val fournis.                    * -*                                                                             * -*  Description : Initialise une instance sur la base du dérivé de GObject.    * -*                                                                             * -*  Retour      : 0.                                                           * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -static int py_panel_item_init(PyObject *self, PyObject *args, PyObject *kwds) -{ -    unsigned long personality;              /* Nature du panneau           */ -    const char *name;                       /* Désignation humaine         */ -    const char *lname;                      /* Nom version longue          */ -    PyGObject *widget;                      /* Composant visuel du panneau */ -    int startup;                            /* Recommandation au démarrage */ -    const char *path;                       /* Placement à l'affichage     */ -    int ret;                                /* Bilan de lecture des args.  */ -    GPanelItem *item;                       /* Elément de l'éditeur        */ - -    ret = PyArg_ParseTuple(args, "kssOps", &personality, &name, &lname, &widget, &startup, &path); -    if (!ret) return -1; - -    item = g_panel_item_new(personality, name, lname, -                            GTK_WIDGET(pygobject_get(widget)), startup, path); - -    /* FIXME ? Est-ce à l'utilisateur de s'enregistrer ? */ -    register_panel_item(item, get_main_configuration()); - -    /** -     * Si Python ne voit plus la variable représentant le panneau utilisée, -     * il va la supprimer, ce qui va supprimer le composant GTK. -     * -     * On sera donc en situation de Use-After-Free, dont les conséquences -     * arrivent très vite. -     */ -    g_object_ref(GTK_WIDGET(pygobject_get(widget))); -    Py_INCREF(self); - -    /* Enregistrement auprès de PyGObject */ - -    ((PyGObject *)self)->obj = G_OBJECT(item); - -    pygobject_register_wrapper(self); - -    return 0; - -} - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : self = classe représentant un binaire.                       * -*                args = arguments fournis à l'appel.                          * -*                                                                             * -*  Description : Place un panneau dans l'ensemble affiché.                    * -*                                                                             * -*  Retour      : Py_None.                                                     * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -static PyObject *py_panel_item_dock(PyObject *self, PyObject *args) -{ -    GPanelItem *item;                       /* Panneau à manipuler         */ - -    item = G_PANEL_ITEM(pygobject_get(self)); - -    g_panel_item_dock(item); - -    Py_RETURN_NONE; - -} - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : -                                                            * -*                                                                             * -*  Description : Fournit un accès à une définition de type à diffuser.        * -*                                                                             * -*  Retour      : Définition d'objet pour Python.                              * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -PyTypeObject *get_python_panel_item_type(void) -{ -    static PyMethodDef py_panel_item_methods[] = { -        { -            "dock", (PyCFunction)py_panel_item_dock, -            METH_NOARGS, -            "dock($self, /)\n--\n\nDisplay the panel item in the right place." -        }, -        { NULL } -    }; - -    static PyGetSetDef py_panel_item_getseters[] = { -        { NULL } -    }; - -    static PyTypeObject py_panel_item_type = { - -        PyVarObject_HEAD_INIT(NULL, 0) - -        .tp_name        = "pychrysalide.gui.panels.PanelItem", -        .tp_basicsize   = sizeof(PyGObject), - -        .tp_flags       = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - -        .tp_doc         = "PyChrysalide panel item.", - -        .tp_methods     = py_panel_item_methods, -        .tp_getset      = py_panel_item_getseters, -        .tp_init        = (initproc)py_panel_item_init - -    }; - -    return &py_panel_item_type; - -} - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : obj_type = type dont le dictionnaire est à compléter.        * -*                                                                             * -*  Description : Définit les constantes pour les panneaux.                    * -*                                                                             * -*  Retour      : -                                                            * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -static bool py_panel_item_define_constants(PyTypeObject *obj_type) -{ -    bool result;                            /* Bilan à retourner           */ - -    result = true; - -    result &= PyDict_AddIntMacro(obj_type, PIP_INVALID); - -    result &= PyDict_AddIntMacro(obj_type, PIP_SINGLETON); -    result &= PyDict_AddIntMacro(obj_type, PIP_BINARY_VIEW); -    result &= PyDict_AddIntMacro(obj_type, PIP_OTHER); - -    result &= PyDict_AddIntMacro(obj_type, PIP_COUNT); - -    return result; - -} - - -/****************************************************************************** -*                                                                             * -*  Paramètres  : module = module dont la définition est à compléter.          * -*                                                                             * -*  Description : Prend en charge l'objet 'pychrysalide.gui.panels.PanelItem'. * -*                                                                             * -*  Retour      : Bilan de l'opération.                                        * -*                                                                             * -*  Remarques   : -                                                            * -*                                                                             * -******************************************************************************/ - -bool register_python_panel_item(PyObject *module) -{ -    PyTypeObject *py_panel_item_type;       /* Type Python 'LoadedBinary'  */ -    PyObject *dict;                         /* Dictionnaire du module      */ - -    py_panel_item_type = get_python_panel_item_type(); - -    dict = PyModule_GetDict(module); - -    if (!_register_class_for_pygobject(dict, G_TYPE_PANEL_ITEM, py_panel_item_type, -                                       get_python_editor_item_type(), get_python_gtk_dockable_type(), NULL)) -        return false; - -    if (!py_panel_item_define_constants(py_panel_item_type)) -        return false; - -    return true; - -} diff --git a/plugins/pychrysa/gui/panels/panel.h b/plugins/pychrysa/gui/panels/panel.h deleted file mode 100644 index b10928c..0000000 --- a/plugins/pychrysa/gui/panels/panel.h +++ /dev/null @@ -1,42 +0,0 @@ - -/* Chrysalide - Outil d'analyse de fichiers binaires - * panel.h - prototypes pour l'équivalent Python du fichier "gui/panels/panel.h" - * - * Copyright (C) 2012-2017 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 _PLUGINS_PYCHRYSA_GUI_PANELS_PANEL_H -#define _PLUGINS_PYCHRYSA_GUI_PANELS_PANEL_H - - -#include <Python.h> -#include <stdbool.h> - - - -/* Fournit un accès à une définition de type à diffuser. */ -PyTypeObject *get_python_panel_item_type(void); - -/* Prend en charge l'objet 'pychrysalide.gui.panels.PanelItem'. */ -bool register_python_panel_item(PyObject *); - - - -#endif  /* _PLUGINS_PYCHRYSA_GUI_PANELS_PANEL_H */ | 
