summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2001-06-30 07:51:06 +0000
committerJames Henstridge <jamesh@src.gnome.org>2001-06-30 07:51:06 +0000
commite6cbc7e6c0f077e7b10a9cde7c505ab31ec56c13 (patch)
treedc2d0e76c5ca71cafd5896012ae845dae5439dfe
parent12580df967e44849f6a8cf1de81ff988a2f8f03a (diff)
downloadpygtk-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--ChangeLog11
-rw-r--r--codegen/argtypes.py5
-rw-r--r--codegen/codegen.py16
-rw-r--r--gtk/gtk-types.c121
-rw-r--r--gtk/gtk.defs14
-rw-r--r--gtk/gtk.override31
-rw-r--r--gtk/gtkmodule.c1
-rw-r--r--gtk/pygtk-private.h3
-rw-r--r--gtk/pygtk.h12
9 files changed, 63 insertions, 151 deletions
diff --git a/ChangeLog b/ChangeLog
index 9e5b329f..bea78890 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)