Blob Blame History Raw
%%
headers
#include <Python.h>
#include "pygobject.h"
#include "vncdisplay.h"
#include "vncdisplayenums.h"
%%
modulename gtkvnc
%%
import gtk.DrawingArea as PyGtkDrawingArea_Type
%%
ignore-glob
  *_get_type
  vnc_display_send_keys_ex
%%
override vnc_display_send_keys kwargs
static PyObject*
_wrap_vnc_display_send_keys(PyGObject *self,
                            PyObject *args, PyObject *kwargs)
{
    static char *kwlist[] = {"keys", "kind", NULL};
    PyObject *keyList;
    int kind = VNC_DISPLAY_KEY_EVENT_CLICK;
    int ret, i, len;
    guint *keys;

    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
                                     "O|I:VncDisplay.send_keys", kwlist,
                                     &keyList, &kind))
	return NULL;

    if (!PyList_Check(keyList))
	return NULL;

    len = PyList_Size(keyList);
    keys = g_new0(uint, 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);
    }

    vnc_display_send_keys_ex(VNC_DISPLAY(self->obj), keys, len, kind);
    g_free(keys);

    Py_INCREF(Py_None);
    return Py_None;
}
%%
override vnc_display_get_grab_keys kwargs
static PyObject*
_wrap_vnc_display_get_grab_keys(PyGObject *self,
                            PyObject *args, PyObject *kwargs)
{
    VncGrabSequence *seq;
    PyObject *keyList;
    int i;

    seq = vnc_display_get_grab_keys(VNC_DISPLAY(self->obj));

    keyList = PyList_New(0);
    for (i = 0 ; i < seq->nkeysyms ; i++)
       PyList_Append(keyList, PyInt_FromLong(seq->keysyms[i]));

    return keyList;
}
%%
override vnc_display_set_grab_keys kwargs
static PyObject*
_wrap_vnc_display_set_grab_keys(PyGObject *self,
                            PyObject *args, PyObject *kwargs)
{
    static char *kwlist[] = {"keys", NULL};
    PyObject *keyList;
    int i;
    guint nkeysyms;
    guint *keysyms;
    VncGrabSequence *seq;

    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
                                     "O|I:VncDisplay.set_grab_keys", kwlist,
                                     &keyList))
        return NULL;

    if (!PyList_Check(keyList))
        return NULL;

    nkeysyms = PyList_Size(keyList);
    keysyms = g_new0(guint, nkeysyms);

    for (i = 0 ; i < nkeysyms ; i++) {
        PyObject *val = PyList_GetItem(keyList, i);
        keysyms[i] = (guint)PyInt_AsLong(val);
    }

    seq = vnc_grab_sequence_new(nkeysyms, keysyms);
    g_free(keysyms);

    vnc_display_set_grab_keys(VNC_DISPLAY(self->obj), seq);

    vnc_grab_sequence_free(seq);

    Py_INCREF(Py_None);
    return Py_None;
}