diff options
Diffstat (limited to 'plugins/pychrysalide/glibext')
-rw-r--r-- | plugins/pychrysalide/glibext/buffercache.c | 108 | ||||
-rw-r--r-- | plugins/pychrysalide/glibext/bufferline.c | 92 |
2 files changed, 111 insertions, 89 deletions
diff --git a/plugins/pychrysalide/glibext/buffercache.c b/plugins/pychrysalide/glibext/buffercache.c index 019d981..d3bee45 100644 --- a/plugins/pychrysalide/glibext/buffercache.c +++ b/plugins/pychrysalide/glibext/buffercache.c @@ -73,9 +73,15 @@ static PyObject *py_buffer_cache_extend_with(PyObject *, PyObject *); /* Réduit le tampon à une quantité de lignes précise. */ static PyObject *py_buffer_cache_truncate(PyObject *, PyObject *); +/* Ajoute une propriété particulière à une ligne. */ +static PyObject *py_buffer_cache_add_line_flag(PyObject *, PyObject *); + /* Détermine l'ensemble des propriétés attachées à une ligne. */ static PyObject *py_buffer_cache_get_line_flags(PyObject *, PyObject *); +/* Retire une propriété particulière attachée à une ligne. */ +static PyObject *py_buffer_cache_remove_line_flag(PyObject *, PyObject *); + /* Retrouve une ligne au sein d'un tampon avec un indice. */ static PyObject *py_buffer_cache_find_line_by_index(PyObject *, PyObject *); @@ -568,6 +574,56 @@ static PyObject *py_buffer_cache_truncate(PyObject *self, PyObject *args) /****************************************************************************** * * +* Paramètres : self = tampon de lignes à venir consulter. * +* args = arguments fournis à l'appel. * +* * +* Description : Ajoute une propriété particulière à une ligne. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_buffer_cache_add_line_flag(PyObject *self, PyObject *args) +{ + PyObject *result; /* Trouvailles à retourner */ + size_t index; /* Indice de la ligne visée */ + BufferLineFlags flag; /* Drapeau à considérer */ + int ret; /* Bilan de lecture des args. */ + GBufferCache *cache; /* Tampon natif à consulter */ + +#define BUFFER_CACHE_ADD_LINE_FLAG_METHOD PYTHON_METHOD_DEF \ +( \ + add_line_flag, "$self, index, flag, /", \ + METH_VARARGS, py_buffer_cache, \ + "Add one optional flag to those assigned to a given buffer" \ + " line. The line is located using the *index* argument.\n" \ + "\n" \ + "The *index* has to be a simple integer, and the *flag* a" \ + " pychrysalide.glibext.BufferLine.BufferLineFlags value.\n" \ + "\n" \ + "An access lock has to be held for the cache; see the" \ + " pychrysalide.glibext.BufferCache.lock() function." \ +) + + ret = PyArg_ParseTuple(args, "nO&", &index, convert_to_buffer_line_flags, &flag); + if (!ret) return NULL; + + cache = G_BUFFER_CACHE(pygobject_get(self)); + + g_buffer_cache_add_line_flag(cache, index, flag); + + result = Py_None; + Py_INCREF(result); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : self = classe représentant un tampon de code. * * args = arguments fournis à l'appel. * * * @@ -617,6 +673,56 @@ static PyObject *py_buffer_cache_get_line_flags(PyObject *self, PyObject *args) /****************************************************************************** * * +* Paramètres : self = tampon de lignes à venir consulter. * +* args = arguments fournis à l'appel. * +* * +* Description : Retire une propriété particulière attachée à une ligne. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +static PyObject *py_buffer_cache_remove_line_flag(PyObject *self, PyObject *args) +{ + PyObject *result; /* Trouvailles à retourner */ + size_t index; /* Indice de la ligne visée */ + BufferLineFlags flag; /* Drapeau à considérer */ + int ret; /* Bilan de lecture des args. */ + GBufferCache *cache; /* Tampon natif à consulter */ + +#define BUFFER_CACHE_REMOVE_LINE_FLAG_METHOD PYTHON_METHOD_DEF \ +( \ + remove_line_flag, "$self, index, flag, /", \ + METH_VARARGS, py_buffer_cache, \ + "Remove one optional flag from those assigned to a given buffer" \ + " line. The line is located using the *index* argument.\n" \ + "\n" \ + "The *index* has to be a simple integer, and the *flag* a" \ + " pychrysalide.glibext.BufferLine.BufferLineFlags value.\n" \ + "\n" \ + "An access lock has to be held for the cache; see the" \ + " pychrysalide.glibext.BufferCache.lock() function." \ +) + + ret = PyArg_ParseTuple(args, "nO&", &index, convert_to_buffer_line_flags, &flag); + if (!ret) return NULL; + + cache = G_BUFFER_CACHE(pygobject_get(self)); + + g_buffer_cache_remove_line_flag(cache, index, flag); + + result = Py_None; + Py_INCREF(result); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : self = classe représentant un tampon de code. * * args = arguments fournis à l'appel. * * * @@ -942,7 +1048,9 @@ PyTypeObject *get_python_buffer_cache_type(void) BUFFER_CACHE_APPEND_METHOD, BUFFER_CACHE_EXTEND_WITH_METHOD, BUFFER_CACHE_TRUNCATE_METHOD, + BUFFER_CACHE_ADD_LINE_FLAG_METHOD, BUFFER_CACHE_GET_LINE_FLAGS_METHOD, + BUFFER_CACHE_REMOVE_LINE_FLAG_METHOD, BUFFER_CACHE_FIND_LINE_BY_INDEX_METHOD, BUFFER_CACHE_LOOK_FOR_FLAG_METHOD, { NULL } diff --git a/plugins/pychrysalide/glibext/bufferline.c b/plugins/pychrysalide/glibext/bufferline.c index ea84567..c88fe7f 100644 --- a/plugins/pychrysalide/glibext/bufferline.c +++ b/plugins/pychrysalide/glibext/bufferline.c @@ -51,12 +51,6 @@ static PyObject *py_buffer_line_append_text(PyObject *, PyObject *); /* Reconstruit et fournit le texte présent sur une ligne tampon. */ static PyObject *py_buffer_line_get_text(PyObject *, PyObject *); -/* Ajoute une propriété particulière à une ligne donnée. */ -static PyObject *py_buffer_line_add_flag(PyObject *, PyObject *); - -/* Retire une propriété particulière à une ligne donnée. */ -static PyObject *py_buffer_line_remove_flag(PyObject *, PyObject *); - /* Renseigne sur les propriétés particulières liées à une ligne. */ static PyObject *py_buffer_line_get_flags(PyObject *, void *); @@ -93,7 +87,9 @@ static PyObject *py_buffer_line_new(PyTypeObject *type, PyObject *args, PyObject " BufferLine()" \ "\n" \ "Such objets aim to be created from the Chrysalide core only, and" \ - " then get populated by plugins on demand." + " then get populated on demand. Thus, these lines can be viewed as" \ + " cached lines and their properties have to be set through the" \ + " pychrysalide.glibext.BufferCache instance which contains them." /* Validations diverses */ @@ -235,78 +231,6 @@ static PyObject *py_buffer_line_get_text(PyObject *self, PyObject *args) /****************************************************************************** * * -* Paramètres : self = classe représentant une ligne de tampon. * -* args = arguments fournis à l'appel. * -* * -* Description : Ajoute une propriété particulière à une ligne donnée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static PyObject *py_buffer_line_add_flag(PyObject *self, PyObject *args) -{ - BufferLineFlags flag; /* Drapeau à considérer */ - int ret; /* Bilan de lecture des args. */ - GBufferLine *line; /* Version native */ - - ret = PyArg_ParseTuple(args, "I", &flag); - if (!ret) return NULL; - - if ((flag & ~BLF_ALL) != 0) - { - PyErr_SetString(PyExc_ValueError, _("Invalid flag")); - return NULL; - } - - line = G_BUFFER_LINE(pygobject_get(self)); - g_buffer_line_add_flag(line, flag); - - Py_RETURN_NONE; - -} - - -/****************************************************************************** -* * -* Paramètres : self = classe représentant une ligne de tampon. * -* args = arguments fournis à l'appel. * -* * -* Description : Retire une propriété particulière à une ligne donnée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static PyObject *py_buffer_line_remove_flag(PyObject *self, PyObject *args) -{ - BufferLineFlags flag; /* Drapeau à considérer */ - int ret; /* Bilan de lecture des args. */ - GBufferLine *line; /* Version native */ - - ret = PyArg_ParseTuple(args, "I", &flag); - if (!ret) return NULL; - - if ((flag & ~BLF_ALL) != 0) - { - PyErr_SetString(PyExc_ValueError, _("Invalid flag")); - return NULL; - } - - line = G_BUFFER_LINE(pygobject_get(self)); - g_buffer_line_remove_flag(line, flag); - - Py_RETURN_NONE; - -} - - -/****************************************************************************** -* * * Paramètres : self = objet Python concerné par l'appel. * * closure = non utilisé ici. * * * @@ -355,16 +279,6 @@ PyTypeObject *get_python_buffer_line_type(void) METH_VARARGS, "get_text($self, first_col, last_col, markup, /)\n--\n\nProvide the text of a buffer line." }, - { - "add_flag", py_buffer_line_add_flag, - METH_VARARGS, - "add_flag($self, flag, /)\n--\n\nAdd a flag to the buffer line." - }, - { - "remove_flag", py_buffer_line_remove_flag, - METH_VARARGS, - "remove_flag($self, flag, /)\n--\n\nRemove a flag from the buffer line." - }, { NULL } }; |