diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-04-21 22:00:00 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-04-21 22:00:00 (GMT) |
commit | 8eb95d316f7b6fbad0ff798abfe7f70f89e812d2 (patch) | |
tree | 4f310c7ffdb94d48fff236e63c7e6f0ed9f1dee1 /plugins/pychrysalide/analysis/project.c | |
parent | 315146a49b5570294ca20beca720c4e3f74a86bd (diff) |
Improved the way file formats are detected and loaded.
Diffstat (limited to 'plugins/pychrysalide/analysis/project.c')
-rw-r--r-- | plugins/pychrysalide/analysis/project.c | 93 |
1 files changed, 91 insertions, 2 deletions
diff --git a/plugins/pychrysalide/analysis/project.c b/plugins/pychrysalide/analysis/project.c index cd7578d..fa7de72 100644 --- a/plugins/pychrysalide/analysis/project.c +++ b/plugins/pychrysalide/analysis/project.c @@ -32,18 +32,66 @@ #include <analysis/project.h> +#include "loaded.h" #include "../helpers.h" +/* Crée un nouvel objet Python de type 'StudyProject'. */ +static PyObject *py_study_project_new(PyTypeObject *, PyObject *, PyObject *); + /* Procède à l'enregistrement d'un projet donné. */ static PyObject *py_study_project_save(PyObject *, PyObject *); +/* Attache un contenu donné à un projet donné. */ +static PyObject *py_study_project_attach_content(PyObject *, PyObject *); + + + +/****************************************************************************** +* * +* Paramètres : type = type de l'objet à instancier. * +* args = arguments fournis à l'appel. * +* kwds = arguments de type key=val fournis. * +* * +* Description : Crée un nouvel objet Python de type 'StudyProject'. * +* * +* Retour : Instance Python mise en place. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_study_project_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *result; /* Instance à retourner */ + const char *filename; /* Destination de la sauvegarde*/ + int ret; /* Bilan de lecture des args. */ + GStudyProject *project; /* Version GLib du projet */ + + filename = NULL; + + ret = PyArg_ParseTuple(args, "|s", &filename); + if (!ret) return NULL; + + if (filename != NULL) + project = g_study_project_open(filename); + else + project = g_study_project_new(); + + result = pygobject_new(G_OBJECT(project)); + + if (project != NULL) + g_object_unref(project); + + return result; + +} /****************************************************************************** * * -* Paramètres : self = contenu binaire à manipuler. * +* Paramètres : self = projet d'étude à manipuler. * * args = arguments accompagnant l'appel. * * * * Description : Procède à l'enregistrement d'un projet donné. * @@ -80,6 +128,41 @@ static PyObject *py_study_project_save(PyObject *self, PyObject *args) /****************************************************************************** * * +* Paramètres : self = projet d'étude à manipuler. * +* args = arguments accompagnant l'appel. * +* * +* Description : Attache un contenu donné à un projet donné. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_study_project_attach_content(PyObject *self, PyObject *args) +{ + GStudyProject *project; /* Version GLib du format */ + PyObject *content_obj; /* Objet pour le contenu */ + int ret; /* Bilan de lecture des args. */ + GLoadedContent *content; /* Instance GLib correspondante*/ + + project = G_STUDY_PROJECT(pygobject_get(self)); + assert(project != NULL); + + ret = PyArg_ParseTuple(args, "O!", get_python_loaded_content_type(), &content_obj); + if (!ret) return NULL; + + content = G_LOADED_CONTENT(pygobject_get(content_obj)); + + g_study_project_attach_content(project, content); + + Py_RETURN_NONE; + +} + + +/****************************************************************************** +* * * Paramètres : - * * * * Description : Fournit un accès à une définition de type à diffuser. * @@ -98,6 +181,11 @@ PyTypeObject *get_python_study_project_type(void) METH_VARARGS, "save($self, filename, /)\n--\n\nSave the project into a given file." }, + { + "attach", py_study_project_attach_content, + METH_VARARGS, + "attach($self, loaded, /)\n--\n\nAdd a loaded content to the project." + }, { NULL } }; @@ -116,7 +204,8 @@ PyTypeObject *get_python_study_project_type(void) .tp_doc = "PyChrysalide study project", .tp_methods = py_study_project_methods, - .tp_getset = py_study_project_getseters + .tp_getset = py_study_project_getseters, + .tp_new = py_study_project_new }; |