diff options
Diffstat (limited to 'plugins/pychrysa/gtkext/blockview.c')
-rw-r--r-- | plugins/pychrysa/gtkext/blockview.c | 109 |
1 files changed, 35 insertions, 74 deletions
diff --git a/plugins/pychrysa/gtkext/blockview.c b/plugins/pychrysa/gtkext/blockview.c index e076e3c..973538b 100644 --- a/plugins/pychrysa/gtkext/blockview.c +++ b/plugins/pychrysa/gtkext/blockview.c @@ -31,66 +31,51 @@ #include <gtkext/gtkblockview.h> -#include "../quirks.h" - - - -/* Crée un nouvel objet Python de type 'ViewPanel'. */ -static PyObject *py_block_view_new(PyTypeObject *, PyObject *, PyObject *); +#include "bufferview.h" /****************************************************************************** * * -* Paramètres : type = type de l'objet à instancier. * -* args = arguments fournis à l'appel. * -* kwds = arguments de type key=val fournis. * +* Paramètres : - * * * -* Description : Crée un nouvel objet Python de type 'ViewPanel'. * +* Description : Fournit un accès à une définition de type à diffuser. * * * -* Retour : Instance Python mise en place. * +* Retour : Définition d'objet pour Python. * * * * Remarques : - * * * ******************************************************************************/ -static PyObject *py_block_view_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +PyTypeObject *get_python_block_view_type(void) { -#if 0 - PyObject *result; /* Instance à retourner */ - const char *name; /* Désignation humaine */ - const char *lname; /* Nom version longue */ - PyGObject *widget; /* Composant visuel du panneau */ - const char *path; /* Placement à l'affichage */ - int ret; /* Bilan de lecture des args. */ - GEditorItem *item; /* Version GLib du format */ - - ret = PyArg_ParseTuple(args, "ssOs", &name, &lname, &widget, &path); - if (!ret) Py_RETURN_NONE; - - item = g_block_view_new(get_internal_ref(), name, lname, - GTK_WIDGET(pygobject_get(widget)), path); - - result = py_block_view_from_c(G_BLOCK_VIEW(item)); - g_object_unref(item); - - return (PyObject *)result; -#endif - - /* FIXME */ - + static PyMethodDef py_block_view_methods[] = { + { NULL } + }; - Py_RETURN_NONE; + static PyGetSetDef py_block_view_getseters[] = { + { NULL } + }; -} + static PyTypeObject py_block_view_type = { + PyVarObject_HEAD_INIT(NULL, 0) + .tp_name = "pychrysalide.gtkext.BlockView", + .tp_basicsize = sizeof(PyGObject), + .tp_flags = Py_TPFLAGS_DEFAULT, + .tp_doc = "PyChrysalide block view.", + .tp_methods = py_block_view_methods, + .tp_getset = py_block_view_getseters + }; + return &py_block_view_type; +} /****************************************************************************** @@ -107,50 +92,26 @@ static PyObject *py_block_view_new(PyTypeObject *type, PyObject *args, PyObject bool register_python_block_view(PyObject *module) { - PyObject *parent_mod; /* Module Python-EditorItem */ + PyTypeObject *py_block_view_type; /* Type Python 'BlockView' */ int ret; /* Bilan d'un appel */ + PyObject *dict; /* Dictionnaire du module */ - static PyMethodDef py_block_view_methods[] = { - { NULL } - }; - - static PyGetSetDef py_block_view_getseters[] = { - { NULL } - }; - - static PyTypeObject py_block_view_type = { - - PyObject_HEAD_INIT(NULL) - - .tp_name = "pychrysalide.gtkext.BlockView", - .tp_basicsize = sizeof(PyGObject), - - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - - .tp_doc = "PyChrysalide view panel", - - .tp_methods = py_block_view_methods, - .tp_getset = py_block_view_getseters, - .tp_new = (newfunc)py_block_view_new, - .tp_init = (initproc)pychrysalide_allow_args_for_gobjects - - }; - - parent_mod = PyImport_ImportModule("pychrysalide.gtkext"); - if (parent_mod == NULL) return false; + py_block_view_type = get_python_block_view_type(); - py_block_view_type.tp_base = (PyTypeObject *)PyObject_GetAttrString(parent_mod, "ViewPanel"); - Py_DECREF(parent_mod); + py_block_view_type->tp_base = get_python_buffer_view_type(); + py_block_view_type->tp_basicsize = py_block_view_type->tp_base->tp_basicsize; - if (PyType_Ready(&py_block_view_type) < 0) + if (PyType_Ready(py_block_view_type) != 0) return false; - Py_INCREF(&py_block_view_type); - ret = PyModule_AddObject(module, "BlockView", (PyObject *)&py_block_view_type); + Py_INCREF(py_block_view_type); + ret = PyModule_AddObject(module, "BlockView", (PyObject *)py_block_view_type); + if (ret != 0) return false; - pygobject_register_class(module, "GtkBlockView", GTK_TYPE_BLOCK_VIEW, &py_block_view_type, - Py_BuildValue("(O)", py_block_view_type.tp_base)); + dict = PyModule_GetDict(module); + pygobject_register_class(dict, "BlockView", GTK_TYPE_BLOCK_VIEW, py_block_view_type, + Py_BuildValue("(O)", py_block_view_type->tp_base)); - return (ret == 0); + return true; } |