summaryrefslogtreecommitdiff
path: root/gtk/gtkobject-support.c
diff options
context:
space:
mode:
authorJohn Finlay <finlay@src.gnome.org>2006-06-13 08:13:31 +0000
committerJohn Finlay <finlay@src.gnome.org>2006-06-13 08:13:31 +0000
commit2283f4cf3387b554b9bc8623735fa19e54e33f07 (patch)
tree7d3eb9f5f8a7b41faa343fbc6795a0e6c6a18b89 /gtk/gtkobject-support.c
parentafc5c664ae45dead4cdaa6ce79b454e1c9e3cd35 (diff)
downloadpygtk-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.
Diffstat (limited to 'gtk/gtkobject-support.c')
-rw-r--r--gtk/gtkobject-support.c27
1 files changed, 27 insertions, 0 deletions
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;
+}