From cdd10d5b72da3126c0484d0cefc3f83ff0b9255b Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 12 Jun 2014 00:04:44 +0100 Subject: [PATCH] Added autocompleters to python API --- src/plugins/python_api.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/plugins/python_api.c b/src/plugins/python_api.c index 8c45d348..7dd222f5 100644 --- a/src/plugins/python_api.c +++ b/src/plugins/python_api.c @@ -28,6 +28,7 @@ #include "plugins/python_api.h" #include "plugins/python_plugins.h" #include "plugins/callbacks.h" +#include "plugins/autocompleters.h" static PyObject* python_api_cons_alert(PyObject *self, PyObject *args) @@ -88,6 +89,30 @@ python_api_register_timed(PyObject *self, PyObject *args) return Py_BuildValue(""); } +static PyObject * +python_api_register_ac(PyObject *self, PyObject *args) +{ + const char *key = NULL; + PyObject *items = NULL; + + if (!PyArg_ParseTuple(args, "sO", &key, &items)) { + return Py_BuildValue(""); + } + + Py_ssize_t len = PyList_Size(items); + char *c_items[len]; + + Py_ssize_t i = 0; + for (i = 0; i < len; i++) { + PyObject *item = PyList_GetItem(items, i); + char *c_item = PyString_AsString(item); + c_items[i] = c_item; + } + + autocompleters_add(key, c_items); + return Py_BuildValue(""); +} + static PyObject* python_api_notify(PyObject *self, PyObject *args) { @@ -359,6 +384,7 @@ static PyMethodDef apiMethods[] = { { "cons_show", python_api_cons_show, METH_VARARGS, "Print a line to the console." }, { "register_command", python_api_register_command, METH_VARARGS, "Register a command." }, { "register_timed", python_api_register_timed, METH_VARARGS, "Register a timed function." }, + { "register_ac", python_api_register_ac, METH_VARARGS, "Register an autocompleter." }, { "send_line", python_api_send_line, METH_VARARGS, "Send a line of input." }, { "notify", python_api_notify, METH_VARARGS, "Send desktop notification." }, { "get_current_recipient", python_api_get_current_recipient, METH_VARARGS, "Return the jid of the recipient of the current window." },