diff options
Diffstat (limited to 'plugins/pychrysalide/helpers.c')
-rw-r--r-- | plugins/pychrysalide/helpers.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/plugins/pychrysalide/helpers.c b/plugins/pychrysalide/helpers.c index 51c2f31..3a67e2b 100644 --- a/plugins/pychrysalide/helpers.c +++ b/plugins/pychrysalide/helpers.c @@ -458,6 +458,11 @@ bool _register_class_for_pygobject(PyObject *dict, GType gtype, PyTypeObject *ty PyObject *static_bases; /* Base(s) de l'objet */ va_list ap; /* Parcours des arguments */ PyTypeObject *static_base; /* Base à rajouter à la liste */ + PyObject *features; /* Module à recompléter */ + PyObject *features_dict; /* Dictionnaire à compléter */ + char *name; /* Désignation de la classe */ + PyObject *item; /* Nouvel élément à exporter */ + int ret; /* Bilan d'une insertion */ /** * pygobject_register_class() définit type->tp_base à partir des arguments fournis, @@ -531,6 +536,31 @@ bool _register_class_for_pygobject(PyObject *dict, GType gtype, PyTypeObject *ty assert(PyErr_Occurred() == NULL); + /** + * Création d'un dictionnaire complet pour la simulation d'un "import *". + */ + + if (result) + { + features = get_access_to_python_module("pychrysalide.features"); + + features_dict = PyModule_GetDict(features); + + name = strrchr(type->tp_name, '.'); + assert(name != NULL); + + name++; + + item = PyDict_GetItemString(dict, name); + assert(item != NULL); + + ret = PyDict_SetItemString(features_dict, name, item); + assert(ret == 0); + + result = (ret == 0); + + } + return result; } |