diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2010-11-14 20:53:18 +0100 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@gmail.com> | 2010-11-24 02:34:55 +0100 |
commit | 1272206528e7a1e90c22ee92d347ed7dbe0560e6 (patch) | |
tree | f7e97b150db940bd547e98eabd36c5b32c15692c /gtk/spice-client-gtk.override | |
parent | 946b686e90cf0674c44fae2284235fcb089caf73 (diff) | |
download | spice-gtk-1272206528e7a1e90c22ee92d347ed7dbe0560e6.tar.gz spice-gtk-1272206528e7a1e90c22ee92d347ed7dbe0560e6.tar.xz spice-gtk-1272206528e7a1e90c22ee92d347ed7dbe0560e6.zip |
gtk: add display_send_keys() again, adapted from gtk-vnc..
Diffstat (limited to 'gtk/spice-client-gtk.override')
-rw-r--r-- | gtk/spice-client-gtk.override | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/gtk/spice-client-gtk.override b/gtk/spice-client-gtk.override index 265e1af..08f1d7b 100644 --- a/gtk/spice-client-gtk.override +++ b/gtk/spice-client-gtk.override @@ -3,7 +3,6 @@ headers #include <Python.h> #include "pygobject.h" #include "spice-widget.h" -#include "spice-channel-enums.h" %% modulename spice_client_gtk %% @@ -15,6 +14,46 @@ ignore-glob *_get_type %% %% +override spice_display_send_keys kwargs +static PyObject* +_wrap_spice_display_send_keys(PyGObject *self, + PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = {"keys", "kind", NULL}; + PyObject *keyList; + int kind = SPICE_DISPLAY_KEY_EVENT_CLICK; + int ret, i, len; + guint *keys; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O|I:SpiceDisplay.send_keys", kwlist, + &keyList, &kind)) + return NULL; + + if (!PyList_Check(keyList)) + return NULL; + + len = PyList_Size(keyList); + keys = malloc(sizeof(guint)*len); + for (i = 0 ; i < len ; i++) { + PyObject *val; + char *sym; + val = PyList_GetItem(keyList, i); + sym = PyString_AsString(val); + if (!sym) { + free(keys); + return NULL; + } + keys[i] = gdk_keyval_from_name(sym); + } + + spice_display_send_keys(SPICE_DISPLAY(self->obj), keys, len, kind); + free(keys); + + Py_INCREF(Py_None); + return Py_None; +} +%% override spice_display_get_grab_keys kwargs static PyObject* _wrap_spice_display_get_grab_keys(PyGObject *self, @@ -71,3 +110,29 @@ _wrap_spice_display_set_grab_keys(PyGObject *self, Py_INCREF(Py_None); return Py_None; } +%% +override spice_session_get_channels +static PyObject* +_wrap_spice_session_get_channels(PyGObject *self, + PyObject *args, PyObject *kwargs) +{ + PyObject *py_list; + GList *list, *tmp; + PyObject *chann; + + list = spice_session_get_channels(SPICE_SESSION(self->obj)); + + if ((py_list = PyList_New(0)) == NULL) { + return NULL; + } + for (tmp = list; tmp != NULL; tmp = tmp->next) { + chann = pygobject_new(G_OBJECT(tmp->data)); + if (chann == NULL) { + Py_DECREF(py_list); + return NULL; + } + PyList_Append(py_list, chann); + Py_DECREF(chann); + } + return py_list; +} |