sugar-toolkit-gtk3/src/sugar/_sugarext.override
Simon Schampijer 4018265f6c Replace our custom entry widget with one based on gtk.Entry
Our custom entry widget, which was based on sexyicon, did
support placing an icon in the entry (e.g. the magnifier icon
for the search entry) and displaying progress in the case of
the url entry in Browse. Both is supported since GTK+ 2.16 in the
gtk.Entry.

The patch does keep the old API, that is why we can land it in
0.94 no change in the shell needed only a small change in Browse,
in a second step I would like to use the upstream API e.g.
's/set_icon_from_name/set_icon_from_icon_name'.

Signed-off-by: Simon Schampijer <simon@laptop.org>
Reviewed-by: Benjamin Berg <benzea@sugarlabs.org>
2011-08-12 10:38:11 +02:00

80 lines
1.9 KiB
C

/* -*- Mode: C; c-basic-offset: 4 -*- */
%%
headers
#include <Python.h>
#include "pygobject.h"
#include "sugar-grid.h"
#include "sugar-key-grabber.h"
#include "sugar-menu.h"
#include "gsm-session.h"
#include "gsm-xsmp.h"
#include "acme-volume-alsa.h"
#include "eggsmclient.h"
#include "eggsmclient-private.h"
#include <pygtk/pygtk.h>
#include <glib.h>
%%
modulename sugar._sugarext
%%
import gobject.GObject as PyGObject_Type
import gtk.Widget as PyGtkWidget_Type
import gtk.Entry as PyGtkEntry_Type
import gtk.Menu as PyGtkMenu_Type
import gtk.Container as PyGtkContainer_Type
import gtk.gdk.Window as PyGdkWindow_Type
import gtk.Image as PyGtkImage_Type
%%
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;
}
%%