diff options
author | John Finlay <finlay@src.gnome.org> | 2006-06-13 08:13:31 +0000 |
---|---|---|
committer | John Finlay <finlay@src.gnome.org> | 2006-06-13 08:13:31 +0000 |
commit | 2283f4cf3387b554b9bc8623735fa19e54e33f07 (patch) | |
tree | 7d3eb9f5f8a7b41faa343fbc6795a0e6c6a18b89 | |
parent | afc5c664ae45dead4cdaa6ce79b454e1c9e3cd35 (diff) | |
download | pygtk-2283f4cf3387b554b9bc8623735fa19e54e33f07.tar.gz |
Add. pygdk_atom_vector_from_sequence
* gtk/pygtk-private.h: Add. pygdk_atom_vector_from_sequence
* gtk/gtkobject-support.c (pygdk_atom_vector_from_sequence): Add.
* gtk/gtk.override (_wrap_gtk_targets_include_rich_text)
(_wrap_gtk_targets_include_uri, _wrap_gtk_targets_include_text)
(_wrap_gtk_targets_include_image): Add.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | gtk/gtk.override | 108 | ||||
-rw-r--r-- | gtk/gtkobject-support.c | 27 | ||||
-rw-r--r-- | gtk/pygtk-private.h | 1 |
4 files changed, 146 insertions, 0 deletions
@@ -1,3 +1,13 @@ +2006-06-13 John Finlay <finlay@moeraki.com> + + * gtk/pygtk-private.h: Add. pygdk_atom_vector_from_sequence + + * gtk/gtkobject-support.c (pygdk_atom_vector_from_sequence): Add. + + * gtk/gtk.override (_wrap_gtk_targets_include_rich_text) + (_wrap_gtk_targets_include_uri, _wrap_gtk_targets_include_text) + (_wrap_gtk_targets_include_image): Add. + 2006-06-12 John Finlay <finlay@moeraki.com> * gtk/gtkstyle.override (_wrap_gtk_style_lookup_color): Add. diff --git a/gtk/gtk.override b/gtk/gtk.override index 38d464a2..0f57cb81 100644 --- a/gtk/gtk.override +++ b/gtk/gtk.override @@ -7896,3 +7896,111 @@ _wrap_gtk_status_icon_position_menu(PyGObject *self, PyObject *args) (gpointer)icon->obj); return Py_BuildValue("(iii)", x, y, push_in); } +%% +override gtk_targets_include_image kwargs +static PyObject * +_wrap_gtk_targets_include_image(PyGObject *self, PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "targets", "writable", NULL }; + GdkAtom *targets; + gint n_targets; + gboolean writable; + PyObject *py_targets, *py_ret; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "Oi:gtk.targets_include_image", + kwlist, &py_targets, &writable)) + return NULL; + + if (!(targets = pygdk_atom_vector_from_sequence(py_targets, &n_targets))) + return NULL; + + if (gtk_targets_include_image(targets, n_targets, writable)) + py_ret = Py_True; + else + py_ret = Py_False; + g_free(targets); + return py_ret; +} +%% +override gtk_targets_include_text kwargs +static PyObject * +_wrap_gtk_targets_include_text(PyGObject *self, PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "targets", NULL }; + GdkAtom *targets; + gint n_targets; + PyObject *py_targets, *py_ret; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O:gtk.targets_include_text", + kwlist, &py_targets)) + return NULL; + + if (!(targets = pygdk_atom_vector_from_sequence(py_targets, &n_targets))) + return NULL; + + if (gtk_targets_include_text(targets, n_targets)) + py_ret = Py_True; + else + py_ret = Py_False; + g_free(targets); + return py_ret; +} +%% +override gtk_targets_include_uri kwargs +static PyObject * +_wrap_gtk_targets_include_uri(PyGObject *self, PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "targets", NULL }; + GdkAtom *targets; + gint n_targets; + PyObject *py_targets, *py_ret; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O:gtk.targets_include_uri", + kwlist, &py_targets)) + return NULL; + + if (!(targets = pygdk_atom_vector_from_sequence(py_targets, &n_targets))) + return NULL; + + if (gtk_targets_include_uri(targets, n_targets)) + py_ret = Py_True; + else + py_ret = Py_False; + g_free(targets); + return py_ret; +} +%% +override gtk_targets_include_rich_text kwargs +static PyObject * +_wrap_gtk_targets_include_rich_text(PyGObject *self, PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "targets", "buffer", NULL }; + GdkAtom *targets; + PyGObject *buffer; + gint n_targets; + PyObject *py_targets, *py_ret; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "OO!:gtk.targets_include_rich_text", + kwlist, &py_targets, + &PyGtkTextBuffer_Type, &buffer)) + return NULL; + + if (!(targets = pygdk_atom_vector_from_sequence(py_targets, &n_targets))) + return NULL; + + if (gtk_targets_include_rich_text(targets, n_targets, + GTK_TEXT_BUFFER(buffer->obj))) + py_ret = Py_True; + else + py_ret = Py_False; + g_free(targets); + return py_ret; +} diff --git a/gtk/gtkobject-support.c b/gtk/gtkobject-support.c index 9ae3869f..d5e181fc 100644 --- a/gtk/gtkobject-support.c +++ b/gtk/gtkobject-support.c @@ -42,3 +42,30 @@ pygtk_custom_destroy_notify(gpointer user_data) g_free(cunote); } +GdkAtom* +pygdk_atom_vector_from_sequence(PyObject *py_targets, gint *n_targets) +{ + gint i; + GdkAtom *targets; + + if (!(py_targets = PySequence_Fast(py_targets, + "targets must be a sequence"))) + return NULL; + + *n_targets = PySequence_Fast_GET_SIZE(py_targets); + targets = g_new(GdkAtom, *n_targets); + for (i = 0; i < *n_targets; i++) { + PyObject *trgt = PySequence_Fast_GET_ITEM(py_targets, i); + targets[i] = pygdk_atom_from_pyobject(trgt); + if (PyErr_Occurred()) { + PyErr_Clear(); + PyErr_SetString(PyExc_TypeError, + "each 'targets' item must be a GdkAtom or string"); + g_free(targets); + Py_DECREF(py_targets); + return NULL; + } + } + Py_DECREF(py_targets); + return targets; +} diff --git a/gtk/pygtk-private.h b/gtk/pygtk-private.h index 681d7219..21d10dd2 100644 --- a/gtk/pygtk-private.h +++ b/gtk/pygtk-private.h @@ -32,6 +32,7 @@ gboolean pygdk_rectangle_from_pyobject(PyObject *object, GdkRectangle *rectangle); GdkAtom pygdk_atom_from_pyobject(PyObject *object); +GdkAtom *pygdk_atom_vector_from_sequence(PyObject *sequence, gint *num); typedef struct { PyObject *func, *data; |