Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/sugar/_sugarext.override
diff options
context:
space:
mode:
authorBenjamin Berg <benjamin@sipsolutions.net>2008-08-24 12:31:46 (GMT)
committer Benjamin Berg <benjamin@sipsolutions.net>2008-08-24 12:31:46 (GMT)
commit3d3e453157ec8c1b107fac2bca5c46681c6cb0ad (patch)
tree8dd8b4b410dbf0253846a6fbd3f83b90b20a66c4 /src/sugar/_sugarext.override
parenta73cbc351d15afbf44a9f9c6c44e981b36805082 (diff)
Change the API of the keygrabber so only one gdk_sync is neccessary. (ticket #7999)
Diffstat (limited to 'src/sugar/_sugarext.override')
-rw-r--r--src/sugar/_sugarext.override45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/sugar/_sugarext.override b/src/sugar/_sugarext.override
index dc54de0..b993600 100644
--- a/src/sugar/_sugarext.override
+++ b/src/sugar/_sugarext.override
@@ -33,3 +33,48 @@ ignore-glob
*_get_type
_*
%%
+override sugar_key_grabber_grab_keys kwargs
+static PyObject *
+_wrap_sugar_key_grabber_grab_keys(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = { "key", NULL };
+ PyObject *py_keys;
+ char **keys;
+ int i, len;
+
+ if (!PyArg_ParseTupleAndKeywords(args,kwargs,
+ "O:SugarKeyGrabber.grab_keys",
+ kwlist, &py_keys))
+ return NULL;
+
+ if (!PySequence_Check(py_keys) || (len = PySequence_Size(py_keys)) < 0) {
+ PyErr_SetString(PyExc_ValueError,
+ "keys should be a sequence of strings");
+ return NULL;
+ }
+
+ keys = g_new(char*, len + 1);
+ for (i = 0; i < len; i++) {
+ PyObject *item = PySequence_GetItem(py_keys, i);
+ if (!item) {
+ g_free(keys);
+ return NULL;
+ }
+ if (!PyString_Check(item)) {
+ PyErr_SetString(PyExc_TypeError, "key must be a string");
+ g_free(keys);
+ Py_DECREF(item);
+ return NULL;
+ }
+ keys[i] = PyString_AsString(item);
+ Py_DECREF(item);
+ }
+ keys[len] = NULL;
+
+ sugar_key_grabber_grab_keys (SUGAR_KEY_GRABBER(self->obj), (const char**) keys);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+%%