diff options
| author | James Henstridge <james@daa.com.au> | 2001-06-30 07:51:06 +0000 |
|---|---|---|
| committer | James Henstridge <jamesh@src.gnome.org> | 2001-06-30 07:51:06 +0000 |
| commit | e6cbc7e6c0f077e7b10a9cde7c505ab31ec56c13 (patch) | |
| tree | dc2d0e76c5ca71cafd5896012ae845dae5439dfe | |
| parent | 12580df967e44849f6a8cf1de81ff988a2f8f03a (diff) | |
| download | pygtk-e6cbc7e6c0f077e7b10a9cde7c505ab31ec56c13.tar.gz | |
remove uses of GtkSelectionData.
2001-06-30 James Henstridge <james@daa.com.au>
* gtk/gtk-types.c: remove uses of GtkSelectionData.
* gtk/gtk.override (GtkSelectionData.data): override the data
attribute for GtkSelectionData types.
(_wrap_gtk_selection_data_set): override method.
* gtk/gtk.defs (SelectionData): add GtkSelectionData boxed type
here.
| -rw-r--r-- | ChangeLog | 11 | ||||
| -rw-r--r-- | codegen/argtypes.py | 5 | ||||
| -rw-r--r-- | codegen/codegen.py | 16 | ||||
| -rw-r--r-- | gtk/gtk-types.c | 121 | ||||
| -rw-r--r-- | gtk/gtk.defs | 14 | ||||
| -rw-r--r-- | gtk/gtk.override | 31 | ||||
| -rw-r--r-- | gtk/gtkmodule.c | 1 | ||||
| -rw-r--r-- | gtk/pygtk-private.h | 3 | ||||
| -rw-r--r-- | gtk/pygtk.h | 12 |
9 files changed, 63 insertions, 151 deletions
@@ -1,3 +1,14 @@ +2001-06-30 James Henstridge <james@daa.com.au> + + * gtk/gtk-types.c: remove uses of GtkSelectionData. + + * gtk/gtk.override (GtkSelectionData.data): override the data + attribute for GtkSelectionData types. + (_wrap_gtk_selection_data_set): override method. + + * gtk/gtk.defs (SelectionData): add GtkSelectionData boxed type + here. + 2001-06-29 James Henstridge <james@daa.com.au> * codegen/codegen.py (write_getattr): add code to allow overriding diff --git a/codegen/argtypes.py b/codegen/argtypes.py index d1eb3f72..30b18004 100644 --- a/codegen/argtypes.py +++ b/codegen/argtypes.py @@ -587,11 +587,6 @@ matcher.register('FILE*', arg) matcher.register_custom_boxed('GdkEvent', 'PyGdkEvent_Type', 'PyGdkEvent_Get', 'PyGdkEvent_New') -matcher.register_custom_boxed('GtkSelectionData', 'PyGtkSelectionData_Type', - 'PyGtkSelectionData_Get', - 'PyGtkSelectionData_New') -matcher.register_custom_boxed('GdkCursor', 'PyGdkCursor_Type', - 'PyGdkCursor_Get', 'PyGdkCursor_New') matcher.register_custom_boxed('GtkCTreeNode', 'PyGtkCTreeNode_Type', 'PyGtkCTreeNode_Get', 'PyGtkCTreeNode_New') matcher.register_custom_boxed('GdkDevice', 'PyGdkDevice_Type', diff --git a/codegen/codegen.py b/codegen/codegen.py index bbc765c9..e85abfa6 100644 --- a/codegen/codegen.py +++ b/codegen/codegen.py @@ -330,6 +330,9 @@ def write_getattr(parser, objobj, overrides, fp=sys.stdout): fp.write('\n\n') return funcname + # no overrides for the whole function. If no fields, don't write a func + if not objobj.fields: + return '0' attrchecks = '' for ftype, fname in objobj.fields: attrname = objobj.c_name + '.' + fname @@ -428,10 +431,7 @@ def write_class(parser, objobj, overrides, fp=sys.stdout): # write the type template dict = { 'class': objobj.c_name } - if objobj.fields: - dict['getattr'] = write_getattr(parser, objobj, overrides, fp) - else: - dict['getattr'] = '0' + dict['getattr'] = write_getattr(parser, objobj, overrides, fp) dict['methods'] = 'METHOD_CHAIN(_Py' + dict['class'] + '_methods)' fp.write(typetmpl % dict) @@ -558,6 +558,9 @@ def write_boxed_getattr(parser, boxedobj, overrides, fp=sys.stdout): fp.write('\n\n') return funcname + # no overrides for the whole function. If no fields, don't write a func + if not boxedobj.fields: + return '0' attrchecks = '' for ftype, fname in boxedobj.fields: attrname = boxedobj.c_name + '.' + fname @@ -640,10 +643,7 @@ def write_boxed(parser, boxedobj, overrides, fp=sys.stdout): # write the type template dict = { 'typename': boxedobj.c_name } - if boxedobj.fields: - dict['getattr'] = write_boxed_getattr(parser, boxedobj, overrides, fp) - else: - dict['getattr'] = '0' + dict['getattr'] = write_boxed_getattr(parser, boxedobj, overrides, fp) dict['methods'] = 'METHOD_CHAIN(_Py' + dict['typename'] + '_methods)' fp.write(boxedtmpl % dict) diff --git a/gtk/gtk-types.c b/gtk/gtk-types.c index 0f32e314..d439b84b 100644 --- a/gtk/gtk-types.c +++ b/gtk/gtk-types.c @@ -84,19 +84,6 @@ PyGdkDragContext_New(GdkDragContext *ctx) #endif PyObject * -PyGtkSelectionData_New(GtkSelectionData *data) -{ - PyGtkSelectionData_Object *self; - - self = (PyGtkSelectionData_Object *)PyObject_NEW(PyGtkSelectionData_Object, - &PyGtkSelectionData_Type); - if (self == NULL) - return NULL; - self->obj = data; - return (PyObject *)self; -} - -PyObject * PyGdkAtom_New(GdkAtom atom) { PyGdkAtom_Object *self; @@ -1770,99 +1757,6 @@ PyTypeObject PyGdkDragContext_Type = { #endif static void -pygtk_selection_data_dealloc(PyGtkSelectionData_Object *self) -{ - PyMem_DEL(self); -} - -static int -pygtk_selection_data_compare(PyGtkSelectionData_Object *self, - PyGtkSelectionData_Object *v) -{ - if (self->obj == v->obj) return 0; - if (self->obj > v->obj) return -1; - return 1; -} - -static long -pygtk_selection_data_hash(PyGtkSelectionData_Object *self) -{ - return (long)self->obj; -} - -static PyObject * -pygtk_selection_data_set(PyGtkSelectionData_Object *self, PyObject *args) -{ - GdkAtom type; - int format, length; - guchar *data; - - if (!PyArg_ParseTuple(args, "iis#:GtkSelectionData.set", &type, &format, - &data, &length)) - return NULL; - gtk_selection_data_set(self->obj, type, format, data, length); - Py_INCREF(Py_None); - return Py_None; -} - -static PyMethodDef pygtk_selection_data_methods[] = { - {"set", (PyCFunction)pygtk_selection_data_set, METH_VARARGS, NULL}, - {NULL, 0, 0, NULL} -}; - -static PyObject * -pygtk_selection_data_getattr(PyGtkSelectionData_Object *self, char *key) -{ - if (!strcmp(key, "__members__")) - return Py_BuildValue("[sssss]", "data", "format", "selection", - "target", "type", "length"); - - if (!strcmp(key, "selection")) - return PyGdkAtom_New(self->obj->selection); - else if (!strcmp(key, "target")) - return PyGdkAtom_New(self->obj->target); - else if (!strcmp(key, "type")) - return PyGdkAtom_New(self->obj->type); - else if (!strcmp(key, "format")) - return PyInt_FromLong(self->obj->format); - else if (!strcmp(key, "length")) - return PyInt_FromLong(self->obj->length); - else if (!strcmp(key, "data")) { - if (self->obj->length > -1) { - return PyString_FromStringAndSize(self->obj->data, self->obj->length); - } - else { - Py_INCREF (Py_None); - return Py_None; - } - } - - return Py_FindMethod(pygtk_selection_data_methods, (PyObject *)self, key); -} - -PyTypeObject PyGtkSelectionData_Type = { - PyObject_HEAD_INIT(NULL) - 0, - "GtkSelectionData", - sizeof(PyGtkSelectionData_Object), - 0, - (destructor)pygtk_selection_data_dealloc, - (printfunc)0, - (getattrfunc)pygtk_selection_data_getattr, - (setattrfunc)0, - (cmpfunc)pygtk_selection_data_compare, - (reprfunc)0, - 0, - 0, - 0, - (hashfunc)pygtk_selection_data_hash, - (ternaryfunc)0, - (reprfunc)0, - 0L,0L,0L,0L, - NULL -}; - -static void pygdk_atom_dealloc(PyGdkAtom_Object *self) { if (self->name) g_free(self->name); @@ -2396,20 +2290,6 @@ PyGdkEvent_to_value(GValue *value, PyObject *object) return -1; } static PyObject * -PyGtkSelectionData_from_value(const GValue *value) -{ - return PyGtkSelectionData_New(g_value_get_boxed(value)); -} -static int -PyGtkSelectionData_to_value(GValue *value, PyObject *object) -{ - if (PyGtkSelectionData_Check(object)) { - g_value_set_boxed(value, PyGtkSelectionData_Get(object)); - return 0; - } - return -1; -} -static PyObject * PyGtkTreePath_from_value(const GValue *value) { GtkTreePath *path = (GtkTreePath *)g_value_get_boxed(value); @@ -2453,7 +2333,6 @@ _pygtk_register_boxed_types(PyObject *moddict) register_tp(GdkColormap); register_tp(GdkDragContext); #endif - register_tp2(GtkSelectionData, GTK_TYPE_SELECTION_DATA); register_tp(GdkAtom); register_tp(GtkCTreeNode); register_tp(GdkDevice); diff --git a/gtk/gtk.defs b/gtk/gtk.defs index 161d2685..d8b3e333 100644 --- a/gtk/gtk.defs +++ b/gtk/gtk.defs @@ -780,6 +780,18 @@ (release-func gtk_tree_iter_free) ) +(boxed SelectionData + (in-module Gtk) + (c-name GtkSelectionData) + (copy-func gtk_selection_data_copy) + (release-func gtk_selection_data_free) + (field (type-and-name GdkAtom selection)) + (field (type-and-name GdkAtom target)) + (field (type-and-name GdkAtom type)) + (field (type-and-name gint format)) + (field (type-and-name guchar* data)) +) + ;; Enumerations and flags ... @@ -8771,7 +8783,7 @@ (method copy (of-object SelectionData (Gtk)) (c-name gtk_selection_data_copy) - (return-type GtkSelectioData*) + (return-type GtkSelectionData*) ) (method free diff --git a/gtk/gtk.override b/gtk/gtk.override index 6095631d..2eceff10 100644 --- a/gtk/gtk.override +++ b/gtk/gtk.override @@ -557,6 +557,37 @@ _wrap_gdk_cursor_new(PyGBoxed *self, PyObject *args, PyObject *kwargs) return Py_None; } %% +ignore gtk_selection_data_copy gtk_selection_data_free +%% +override_attr GtkSelectionData.data +if (pyg_boxed_get(self, GtkSelectionData)->length >= 0) { + return PyString_FromStringAndSize( + pyg_boxed_get(self, GtkSelectionData)->data, + pyg_boxed_get(self, GtkSelectionData)->length); +} else { + Py_INCREF(Py_None); + return Py_None; +} +%% +override gtk_selection_data_set kwargs +static PyObject * +_wrap_gtk_selection_data_set(PyGBoxed *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "type", "format", "data", NULL }; + GdkAtom type; + int format, length; + guchar *data; + + if (!PyArg_ParseTupleAndKeywords(args, kwlist, + "iis#:GtkSelectionData.set", kwlist, + &type, &format, &data, &length)) + return NULL; + gtk_selection_data_set(pyg_boxed_get(self, GtkSelectionData), + type, format, data, length); + Py_INCREF(Py_None); + return Py_None; +} +%% override gtk_widget_draw kwargs static PyObject * _wrap_gtk_widget_draw(PyGObject *self, PyObject *args, PyObject *kwargs) diff --git a/gtk/gtkmodule.c b/gtk/gtkmodule.c index a39fbeb2..54fbde6f 100644 --- a/gtk/gtkmodule.c +++ b/gtk/gtkmodule.c @@ -22,7 +22,6 @@ static struct _PyGtk_FunctionStruct functions = { pygtk_destroy_notify, &PyGdkEvent_Type, PyGdkEvent_New, - &PyGtkSelectionData_Type, PyGtkSelectionData_New, &PyGdkAtom_Type, PyGdkAtom_New, &PyGtkCTreeNode_Type, PyGtkCTreeNode_New, &PyGdkDevice_Type, PyGdkDevice_New, diff --git a/gtk/pygtk-private.h b/gtk/pygtk-private.h index 4678f659..d2f4c9d0 100644 --- a/gtk/pygtk-private.h +++ b/gtk/pygtk-private.h @@ -15,21 +15,18 @@ /* type objects */ extern PyTypeObject PyGdkEvent_Type; -extern PyTypeObject PyGtkSelectionData_Type; extern PyTypeObject PyGdkAtom_Type; extern PyTypeObject PyGtkCTreeNode_Type; extern PyTypeObject PyGdkDevice_Type; /* check the type of a PyObject */ #define PyGdkEvent_Check(v) ((v)->ob_type == &PyGdkEvent_Type) -#define PyGtkSelectionData_Check(v) ((v)->ob_type == &PyGtkSelectionData_Type) #define PyGdkAtom_Check(v) ((v)->ob_type == &PyGdkAtom_Type) #define PyGtkCTreeNode_Check(v) ((v)->ob_type == &PyGtkCTreeNode_Type) #define PyGdkDevice_Check(v) ((v)->ob_type == &PyGdkDevice_Type) /* constructors for PyObject wrappers ... */ PyObject *PyGdkEvent_New(GdkEvent *event); -PyObject *PyGtkSelectionData_New(GtkSelectionData *data); PyObject *PyGdkAtom_New(GdkAtom atom); PyObject *PyGtkCTreeNode_New(GtkCTreeNode *node); PyObject *PyGdkDevice_New(GdkDevice *device); diff --git a/gtk/pygtk.h b/gtk/pygtk.h index 62bd1601..e613af35 100644 --- a/gtk/pygtk.h +++ b/gtk/pygtk.h @@ -20,9 +20,6 @@ struct _PyGtk_FunctionStruct { PyTypeObject *gdkEvent_type; PyObject *(* gdkEvent_new)(GdkEvent *event); - PyTypeObject *gtkSelectionData_type; - PyObject *(* gtkSelectionData_new)(GtkSelectionData *data); - PyTypeObject *gdkAtom_type; PyObject *(* gdkAtom_new)(GdkAtom atom); @@ -42,11 +39,6 @@ typedef struct { typedef struct { PyObject_HEAD - GtkSelectionData *obj; -} PyGtkSelectionData_Object; - -typedef struct { - PyObject_HEAD gchar *name; GdkAtom atom; } PyGdkAtom_Object; @@ -63,7 +55,6 @@ typedef struct { /* routines to get the C object value out of the PyObject wrapper */ #define PyGdkEvent_Get(v) (((PyGdkEvent_Object *)(v))->obj) -#define PyGtkSelectionData_Get(v) (((PyGtkSelectionData_Object *)(v))->obj) #define PyGdkAtom_Get(v) (((PyGdkAtom_Object *)(v))->atom) #define PyGtkCTreeNode_Get(v) (((PyGtkCTreeNode_Object *)(v))->node) #define PyGdkDevice_Get(v) (((PyGdkDevice_Object *)(v))->obj) @@ -83,21 +74,18 @@ struct _PyGtk_FunctionStruct *_PyGtk_API; /* type objects */ #define PyGdkEvent_Type *(_PyGtk_API->gdkEvent_type) -#define PyGtkSelectionData_Type *(_PyGtk_API->gtkSelectionData_type) #define PyGdkAtom_Type *(_PyGtk_API->gdkAtom_type) #define PyGtkCTreeNode_Type *(_PyGtk_API->gtkCTreeNode_type) #define PyGdkDevice_Type *(_PyGtk_API->gdkDevice_type) /* type checking routines */ #define PyGdkEvent_Check(v) ((v)->ob_type == _PyGtk_API->gdkEvent_type) -#define PyGtkSelectionData_Check(v) ((v)->ob_type == _PyGtk_API->gtkSelectionData_type) #define PyGdkAtom_Check(v) ((v)->ob_type == _PyGtk_API->gdkAtom_type) #define PyGtkCTreeNode_Check(v) ((v)->ob_type == _PyGtk_API->gtkCTreeNode_type) #define PyGdkDevice_Check(v) ((v)->ob_type == _PyGtk_API->gdkDevice_type) /* type objects */ #define PyGdkEvent_New (_PyGtk_API->gdkEvent_new) -#define PyGtkSelectionData_New (_PyGtk_API->gtkSelectionData_new) #define PyGdkAtom_New (_PyGtk_API->gdkAtom_new) #define PyGtkCTreeNode_New (_PyGtk_API->gtkCTreeNode_new) #define PyGdkDevice_New (_PyGtk_API->gdkDevice_new) |
