summaryrefslogtreecommitdiff
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
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.
-rw-r--r--ChangeLog10
-rw-r--r--gtk/gtk.override108
-rw-r--r--gtk/gtkobject-support.c27
-rw-r--r--gtk/pygtk-private.h1
4 files changed, 146 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 05ae207d..e29da9ba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;