diff options
author | Matt Wilson <msw@redhat.com> | 2001-10-23 13:16:31 +0000 |
---|---|---|
committer | Matt Wilson <msw@src.gnome.org> | 2001-10-23 13:16:31 +0000 |
commit | d243b72ed79b0c0d48265fd23f0bf32f5f05d33f (patch) | |
tree | e9391d7a46b0d5a7ca8e9a768703c4696faebd79 /gtk/gtk-types.c | |
parent | ab39d0d22859c074121959a46c44e07e47bc1b41 (diff) | |
download | pygtk-d243b72ed79b0c0d48265fd23f0bf32f5f05d33f.tar.gz |
use new forward search API with flags enum in CVS.
2001-10-23 Matt Wilson <msw@redhat.com>
* gtk/gtk.override (_wrap_gtk_text_iter_forward_search): use new
forward search API with flags enum in CVS.
(_wrap_gtk_text_buffer_create_tag): likewise.
(_wrap_gtk_selection_data_set): likewise.
(_wrap_gtk_selection_add_targets): likewise.
* gtk/pygtk-private.h (pygdk_atom_from_pyobject): added
declaration.
* gtk/gtk.defs (GtkTextIter.forward_search): use new flags enum
(GtkTextIter.backward_search): likewise.
* gtk/gdk.override (_wrap_gdk_gc_new_with_values):
s/GPOINTER_TO_INT/GDK_POINTER_TO_ATOM/
(_wrap_gdk_property_get): use pygdk_atom_from_pyobject
(_wrap_gdk_property_change): likewise.
* codegen/argtypes.py (AtomArg.write_param): use
pygdk_atom_from_pyobject when getting atom args
* gtk/gtk-types.defs (TextSearchFlags): added new enum.
* gtk/gtk-types.c (pygdk_atom_from_pyobject): implemented a
function to get a GdkAtom from a Python object
(PyGdkWindow_PropertyGet): use pygdk_atom_from_pyobject to get
atoms from args, not this two-try ParseTuple.
(PyGdkWindow_PropertyChange): likewise.
(PyGdkWindow_PropertyDelete): likewise.
* gtk/gdk-types.defs (Selection): removed, no longer an enum
(Target): Likewise.
(SelectionType): Likewise.
2001-10-22 Matt Wilson <msw@redhat.com>
* gtk/gtk-types.c (pygdk_atom_number): remove numeric bits,
GdkAtom is now opaque.
* gtk/gtk.defs (GtkTreeModelSort.set_model): removed, is static now.
(GtkTreeModelSort.convert_path): rename to
GtkTreeMOdelSort.convert_path_to_child_path
Diffstat (limited to 'gtk/gtk-types.c')
-rw-r--r-- | gtk/gtk-types.c | 174 |
1 files changed, 53 insertions, 121 deletions
diff --git a/gtk/gtk-types.c b/gtk/gtk-types.c index d82635f3..3a125700 100644 --- a/gtk/gtk-types.c +++ b/gtk/gtk-types.c @@ -585,25 +585,28 @@ PyGdkWindow_SetCursor(PyGdkWindow_Object *self, PyObject *args) static PyObject * PyGdkWindow_PropertyGet(PyGdkWindow_Object *self, PyObject *args) { - GdkAtom property, type = 0; + PyObject *py_property, py_type = NULL; gint pdelete = FALSE; - GdkAtom atype; + GdkAtom atype, property, type; gint aformat, alength; guchar *data; - if (!PyArg_ParseTuple(args, "i|ii:GdkWindow.property_get", &property, - &type, &pdelete)) { - gchar *propname; - - PyErr_Clear(); - if (!PyArg_ParseTuple(args, "s|ii:GdkWindow.property_get", &propname, - &type, &pdelete)) - return NULL; - property = gdk_atom_intern(propname, FALSE); + if (!PyArg_ParseTuple(args, "O|Oi:GdkWindow.property_get", &py_property, + &py_type, &pdelete)) { + return NULL; } - if (gdk_property_get(self->obj, property, type, 0, 9999, pdelete, - &atype, &aformat, &alength, &data)) { + + property = pygdk_atom_from_pyobject(py_property); + if (Pyerr_Occurred()) + return NULL; + + type = pygdk_atom_from_pyobject(py_type); + if (Pyerr_Occurred()) + return NULL; + + if (gdk_property_get(self->obj, property, type, 0, 9999, + pdelete, &atype, &aformat, &alength, &data)) { /* success */ PyObject *pdata = NULL; gint i; @@ -643,6 +646,7 @@ PyGdkWindow_PropertyGet(PyGdkWindow_Object *self, PyObject *args) static PyObject * PyGdkWindow_PropertyChange(PyGdkWindow_Object *self, PyObject *args) { + PyObject *py_property, *py_type; GdkAtom property, type; gint format; PyObject *py_mode, *pdata; @@ -650,16 +654,19 @@ PyGdkWindow_PropertyChange(PyGdkWindow_Object *self, PyObject *args) guchar *data = NULL; gint nelements; - if (!PyArg_ParseTuple(args, "iiiOO:GdkWindow.property_change", &property, - &type, &format, &py_mode, &pdata)) { - gchar *propname; - - PyErr_Clear(); - if (!PyArg_ParseTuple(args, "siiOO:GdkWindow.property_change", - &propname, &type, &format, &py_mode, &pdata)) - return NULL; - property = gdk_atom_intern(propname, FALSE); + if (!PyArg_ParseTuple(args, "OOiOO:GdkWindow.property_change", + &py_property, &py_type, &format, &py_mode, &pdata)) { + return NULL; } + + property = pygdk_atom_from_pyobject(py_property); + if (Pyerr_Occurred()) + return NULL; + + type = pygdk_atom_from_pyobject(py_type); + if (Pyerr_Occurred()) + return NULL; + if (pygtk_enum_get_value(GDK_TYPE_PROP_MODE, py_mode, (gint *)&mode)) return NULL; switch (format) { @@ -732,8 +739,8 @@ PyGdkWindow_PropertyChange(PyGdkWindow_Object *self, PyObject *args) return NULL; break; } - gdk_property_change(self->obj, property, type, format, mode, - data, nelements); + gdk_property_change(self->obj, property, type, format, mode, data, + nelements); if (format != 8) g_free(data); Py_INCREF(Py_None); @@ -743,16 +750,17 @@ PyGdkWindow_PropertyChange(PyGdkWindow_Object *self, PyObject *args) static PyObject * PyGdkWindow_PropertyDelete(PyGdkWindow_Object *self, PyObject *args) { + PyObject py_property; GdkAtom property; - if (!PyArg_ParseTuple(args, "i:GdkWindow.property_delete", &property)) { - gchar *propname; - - PyErr_Clear(); - if (!PyArg_ParseTuple(args, "s:GdkWindow.property_delete", &propname)) - return NULL; - property = gdk_atom_intern(propname, FALSE); + if (!PyArg_ParseTuple(args, "O:GdkWindow.property_delete", &property)) { + return NULL; } + + property = pygdk_atom_from_pyobject(py_property); + if (Pyerr_Occurred()) + return NULL; + gdk_property_delete(self->obj, property); Py_INCREF(Py_None); return Py_None; @@ -1223,6 +1231,19 @@ PyTypeObject PyGdkColormap_Type = { }; #endif +GdkAtom +pygdk_atom_from_pyobject(PyObject *object) +{ + if (object == NULL) + return NULL; + if (PyString_Check(object)) + return gdk_atom_intern(PyString_AsString(object), FALSE); + if (PyGdkAtom_Check(object)) + return PyGdkAtom_Get(object); + PyErr_SetString(PyExc_TypeError, "unable to convert argument to GdkAtom"); + return NULL; +} + static void pygdk_atom_dealloc(PyGdkAtom_Object *self) { @@ -1254,69 +1275,6 @@ pygdk_atom_repr(PyGdkAtom_Object *self) return PyString_FromString(buf); } -static int -pygdk_atom_coerce(PyObject **self, PyObject **other) -{ - PyGdkAtom_Object *old = (PyGdkAtom_Object *)*self; - if (PyInt_Check(*other)) { - *self = PyInt_FromLong(old->atom); - Py_INCREF(*other); - return 0; - } else if (PyFloat_Check(*other)) { - *self = PyFloat_FromDouble((double)old->atom); - Py_INCREF(*other); - return 0; - } else if (PyLong_Check(*other)) { - *self = PyLong_FromUnsignedLong(old->atom); - Py_INCREF(*other); - return 0; - } else if (PyString_Check(*other)) { - if (!old->name) - old->name = gdk_atom_name(old->atom); - if (old->name) { - *self = PyString_FromString(old->name); - Py_INCREF(*other); - return 0; - } - } - return 1; /* don't know how to convert */ -} - -static PyObject * -pygdk_atom_int(PyGdkAtom_Object *self) -{ - return PyInt_FromLong(self->atom); -} - -static PyObject * -pygdk_atom_long(PyGdkAtom_Object *self) -{ - return PyLong_FromUnsignedLong(self->atom); -} - -static PyObject * -pygdk_atom_float(PyGdkAtom_Object *self) -{ - return PyFloat_FromDouble(self->atom); -} - -static PyObject * -pygdk_atom_oct(PyGdkAtom_Object *self) -{ - char buf[100]; - if (self->atom == 0) return PyString_FromString("0"); - g_snprintf(buf, 100, "0%lo", self->atom); - return PyString_FromString(buf); -} - -static PyObject * -pygdk_atom_hex(PyGdkAtom_Object *self) -{ - char buf[100]; - g_snprintf(buf, 100, "0x%lx", self->atom); - return PyString_FromString(buf); -} - static PyObject * pygdk_atom_str(PyGdkAtom_Object *self) { @@ -1326,32 +1284,6 @@ pygdk_atom_str(PyGdkAtom_Object *self) return pygdk_atom_repr(self); } -static PyNumberMethods pygdk_atom_number = { - (binaryfunc)0, - (binaryfunc)0, - (binaryfunc)0, - (binaryfunc)0, - (binaryfunc)0, - (binaryfunc)0, - (ternaryfunc)0, - (unaryfunc)0, - (unaryfunc)0, - (unaryfunc)0, - (inquiry)0, - (unaryfunc)0, - (binaryfunc)0, - (binaryfunc)0, - (binaryfunc)0, - (binaryfunc)0, - (binaryfunc)0, - (coercion)pygdk_atom_coerce, - (unaryfunc)pygdk_atom_int, - (unaryfunc)pygdk_atom_long, - (unaryfunc)pygdk_atom_float, - (unaryfunc)pygdk_atom_oct, - (unaryfunc)pygdk_atom_hex -}; - PyTypeObject PyGdkAtom_Type = { PyObject_HEAD_INIT(NULL) 0, @@ -1364,7 +1296,7 @@ PyTypeObject PyGdkAtom_Type = { (setattrfunc)0, (cmpfunc)pygdk_atom_compare, (reprfunc)pygdk_atom_repr, - &pygdk_atom_number, + 0, 0, 0, (hashfunc)pygdk_atom_hash, |