diff options
author | Johan Dahlin <zilch@src.gnome.org> | 2003-06-06 00:50:58 +0000 |
---|---|---|
committer | Johan Dahlin <zilch@src.gnome.org> | 2003-06-06 00:50:58 +0000 |
commit | 10c8f3e48f69d65b4bad171a929b98b3e2a9c1c1 (patch) | |
tree | 0bb25d870e8e240833c13a3e1002c43a05beb5f3 /gtk | |
parent | 3c10e815f75627bcea8d85ffa075732018ed0a9c (diff) | |
download | pygtk-10c8f3e48f69d65b4bad171a929b98b3e2a9c1c1.tar.gz |
Added
* gtk/libglade.defs (set_custom_widget_callbacks): Added
* gtk/libglade.override (_wrap_glade_set_custom_widget_callbacks)
(_wrap_glade_set_custom_widget_callbacks): Impl. Patch by Ross
Burton. Fixes #113271
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/libglade.defs | 4 | ||||
-rw-r--r-- | gtk/libglade.override | 38 |
2 files changed, 42 insertions, 0 deletions
diff --git a/gtk/libglade.defs b/gtk/libglade.defs index 03f47386..926fa18e 100644 --- a/gtk/libglade.defs +++ b/gtk/libglade.defs @@ -190,3 +190,7 @@ ) ) +(define-function set_custom_widget_callbacks + (c-name "glade_set_custom_widget_callbacks") + (return-type "none") +) diff --git a/gtk/libglade.override b/gtk/libglade.override index 406ea69b..a45a32c0 100644 --- a/gtk/libglade.override +++ b/gtk/libglade.override @@ -228,4 +228,42 @@ _wrap_glade_textdomain(PyObject *self, PyObject *args, PyObject *kwargs) } return PyString_FromString(ret); } +%% +override glade_set_custom_widget_callbacks kwargs +static GtkWidget * custom_widget_handler (GladeXML *xml, + gchar *func_name, gchar *name, + gchar *string1, gchar *string2, + gint int1, gint int2, gpointer user_data) +{ + PyObject *handler_dict = user_data; + PyObject *tuple; + tuple = PyMapping_GetItemString(handler_dict, (gchar *)func_name); + if (!tuple) { + PyErr_Clear(); + tuple = PyObject_GetAttrString(handler_dict, (gchar *)func_name); + if (!tuple) { + PyErr_Clear(); + return NULL; + } + } + if (PyCallable_Check(tuple)) { + PyObject *ret; + ret = PyObject_CallFunction(tuple, NULL); + return GTK_WIDGET (pygobject_get (ret)); + } + return NULL; +} +static PyObject * +_wrap_glade_set_custom_widget_callbacks(PyObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "dict", NULL }; + PyObject *object; + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O:GladeXML.set_custom_widget_callbacks", kwlist, + &object)) + return NULL; + glade_set_custom_handler((GladeXMLCustomWidgetHandler)custom_widget_handler, object); + Py_INCREF(Py_None); + return Py_None; +} |