diff options
author | James Henstridge <james@daa.com.au> | 1999-07-14 15:31:01 +0000 |
---|---|---|
committer | James Henstridge <jamesh@src.gnome.org> | 1999-07-14 15:31:01 +0000 |
commit | d75dbf8eeb6de587adb5e7c5b481d91b7a1eb16c (patch) | |
tree | c033c3b8808dce2e1c650a88ee5ccefb89dcde12 /gtkmodule.c | |
parent | a0172b96c467f1c3e5bdb1ba55f5e6f054fd97a9 (diff) | |
download | pygtk-d75dbf8eeb6de587adb5e7c5b481d91b7a1eb16c.tar.gz |
modified to use the pygdkimlib.h header.
1999-07-14 James Henstridge <james@daa.com.au>
* gdkimlibmodule.c: modified to use the pygdkimlib.h header.
* pygdkimlib.h: new file similar to pygtk.h, but for _gdkimlib module.
* gdkimlibmodule.c: modified to use the pygtk.h header.
* gtkmodule.c: modified file to use the pygtk.h header, and set
up the _gtk._PyGtk_API object correctly.
1999-07-14 James Henstridge <james@daa.com.au>
* pygnome/mkgnome.py: modified so that functions are auto generated
correctly for zvt, gtkxmhtml, applet and capplet modules.
* pygnome/zvtmodule.c, pygnome/gtkxmhtmlmodule.c,
* pygnome/appletmodule.c, pygnome/cappletmodule.c: modified to use
pygtk.h to import the gtk types and functions. Still need to do
gnomeui.
Diffstat (limited to 'gtkmodule.c')
-rw-r--r-- | gtkmodule.c | 170 |
1 files changed, 45 insertions, 125 deletions
diff --git a/gtkmodule.c b/gtkmodule.c index 592208a6..487cc069 100644 --- a/gtkmodule.c +++ b/gtkmodule.c @@ -1,3 +1,4 @@ +/* -*- Mode: C; c-basic-offset: 4 -*- */ /* PyGTK - python bindings for GTK+ * Copyright (C) 1997-1999 James Henstridge <james@daa.com.au> * @@ -21,6 +22,9 @@ #include <sysmodule.h> #include <gtk/gtk.h> +#define _INSIDE_PYGTK_ +#include "pygtk.h" + /* The threading hacks are based on ones supplied by Duncan Grisby * of AT&T Labs Cambridge */ #ifdef WITH_THREAD @@ -49,18 +53,6 @@ static int _blockcount = 1; static void PyGtk_BlockThreads(void) { PyGTK_BLOCK_THREADS } static void PyGtk_UnblockThreads(void) { PyGTK_UNBLOCK_THREADS } -static gboolean PyGtk_FatalExceptions = FALSE; - -typedef struct { - PyObject_HEAD - GtkObject *obj; -} PyGtk_Object; - -staticforward PyTypeObject PyGtk_Type; - -#define PyGtk_Check(v) ((v)->ob_type == &PyGtk_Type) -#define PyGtk_Get(v) (((PyGtk_Object *)(v))->obj) - static PyObject * PyGtk_New(GtkObject *go) { PyGtk_Object *self; @@ -181,114 +173,6 @@ gint PyGtkFlag_get_value(GtkType flag_type, PyObject *obj, int *val) { return 1; } - -typedef struct { - PyObject_HEAD - GtkAccelGroup *obj; -} PyGtkAccelGroup_Object; -staticforward PyTypeObject PyGtkAccelGroup_Type; - -typedef struct { - PyObject_HEAD - GtkStyle *obj; -} PyGtkStyle_Object; -staticforward PyTypeObject PyGtkStyle_Type; - -typedef struct { - PyObject_HEAD - GdkFont *obj; -} PyGdkFont_Object; -staticforward PyTypeObject PyGdkFont_Type; - -typedef struct { - PyObject_HEAD - GdkColor obj; -} PyGdkColor_Object; -staticforward PyTypeObject PyGdkColor_Type; - -typedef struct { - PyObject_HEAD - GdkEvent *obj; - PyObject *attrs; -} PyGdkEvent_Object; -staticforward PyTypeObject PyGdkEvent_Type; - -typedef struct { - PyObject_HEAD - GdkWindow *obj; -} PyGdkWindow_Object; -staticforward PyTypeObject PyGdkWindow_Type; - -typedef struct { - PyObject_HEAD - GdkGC *obj; -} PyGdkGC_Object; -staticforward PyTypeObject PyGdkGC_Type; - -typedef struct { - PyObject_HEAD - GdkColormap *obj; -} PyGdkColormap_Object; -staticforward PyTypeObject PyGdkColormap_Type; - -typedef struct { - PyObject_HEAD - GdkDragContext *obj; -} PyGdkDragContext_Object; -staticforward PyTypeObject PyGdkDragContext_Type; - -typedef struct { - PyObject_HEAD - GtkSelectionData *obj; -} PyGtkSelectionData_Object; -staticforward PyTypeObject PyGtkSelectionData_Type; - -typedef struct { - PyObject_HEAD - gchar *name; - GdkAtom atom; -} PyGdkAtom_Object; -staticforward PyTypeObject PyGdkAtom_Type; - -typedef struct { - PyObject_HEAD - GdkCursor *obj; -} PyGdkCursor_Object; -staticforward PyTypeObject PyGdkCursor_Type; - -typedef struct { - PyObject_HEAD - GtkCTreeNode *node; -} PyGtkCTreeNode_Object; -staticforward PyTypeObject PyGtkCTreeNode_Type; - -#define PyGtkAccelGroup_Check(v) ((v)->ob_type == &PyGtkAccelGroup_Type) -#define PyGtkAccelGroup_Get(v) (((PyGtkAccelGroup_Object *)(v))->obj) -#define PyGtkStyle_Check(v) ((v)->ob_type == &PyGtkStyle_Type) -#define PyGtkStyle_Get(v) (((PyGtkStyle_Object *)(v))->obj) -#define PyGdkFont_Check(v) ((v)->ob_type == &PyGdkFont_Type) -#define PyGdkFont_Get(v) (((PyGdkFont_Object *)(v))->obj) -#define PyGdkColor_Check(v) ((v)->ob_type == &PyGdkColor_Type) -#define PyGdkColor_Get(v) (&((PyGdkColor_Object *)(v))->obj) -#define PyGdkEvent_Check(v) ((v)->ob_type == &PyGdkEvent_Type) -#define PyGdkEvent_Get(v) (((PyGdkEvent_Object *)(v))->obj) -#define PyGdkWindow_Check(v) ((v)->ob_type == &PyGdkWindow_Type) -#define PyGdkWindow_Get(v) (((PyGdkWindow_Object *)(v))->obj) -#define PyGdkGC_Check(v) ((v)->ob_type == &PyGdkGC_Type) -#define PyGdkGC_Get(v) (((PyGdkGC_Object *)(v))->obj) -#define PyGdkColormap_Check(v) ((v)->ob_type == &PyGdkColormap_Type) -#define PyGdkColormap_Get(v) (((PyGdkColormap_Object *)(v))->obj) -#define PyGdkDragContext_Check(v) ((v)->ob_type == &PyGdkDragContext_Type) -#define PyGdkDragContext_Get(v) (((PyGdkDragContext_Object *)(v))->obj) -#define PyGtkSelectionData_Check(v) ((v)->ob_type == &PyGtkSelectionData_Type) -#define PyGtkSelectionData_Get(v) (((PyGtkSelectionData_Object *)(v))->obj) -#define PyGdkAtom_Check(v) ((v)->ob_type == &PyGdkAtom_Type) -#define PyGdkAtom_Get(v) (((PyGdkAtom_Object *)(v))->atom) -#define PyGdkCursor_Check(v) ((v)->ob_type == &PyGdkCursor_Type) -#define PyGdkCursor_Get(v) (((PyGdkCursor_Object *)(v))->obj) -#define PyGtkCTreeNode_Check(v) ((v)->ob_type == &PyGtkCTreeNode_Type) -#define PyGtkCTreeNode_Get(v) (((PyGtkCTreeNode_Object *)(v))->node) - static PyObject * PyGtkAccelGroup_New(GtkAccelGroup *obj) { PyGtkAccelGroup_Object *self; @@ -2213,10 +2097,6 @@ static void PyGtk_DestroyNotify(gpointer data) { Py_DECREF((PyObject *)data); PyGTK_UNBLOCK_THREADS } -static void PyGtk_CallbackMarshal(GtkObject *o, gpointer d, guint nargs, - GtkArg *args); -static PyObject *GtkArgs_AsTuple(int nparams, GtkArg *args); -static int GtkArgs_FromSequence(GtkArg *args, int nparams, PyObject *seq); /* this hash table is used to let these functions know about new boxed * types (eg. maybe some from GNOME). The functions return TRUE on error */ @@ -5722,6 +5602,43 @@ static PyMethodDef _gtkmoduleMethods[] = { { NULL, NULL } }; +static struct _PyGtk_FunctionStruct functions = { + VERSION, + FALSE, + + PyGtk_BlockThreads, + PyGtk_UnblockThreads, + + PyGtk_DestroyNotify, + PyGtk_CallbackMarshal, + GtkArgs_AsTuple, + GtkArgs_FromSequence, + GtkArg_FromPyObject, + GtkArg_AsPyObject, + GtkRet_FromPyObject, + GtkRet_AsPyObject, + PyDict_AsGtkArgs, + PyGtk_RegisterBoxed, + + PyGtkEnum_get_value, + PyGtkFlag_get_value, + + &PyGtk_Type, PyGtk_New, + &PyGtkAccelGroup_Type, PyGtkAccelGroup_New, + &PyGtkStyle_Type, PyGtkStyle_New, + &PyGdkFont_Type, PyGdkFont_New, + &PyGdkColor_Type, PyGdkColor_New, + &PyGdkEvent_Type, PyGdkEvent_New, + &PyGdkWindow_Type, PyGdkWindow_New, + &PyGdkGC_Type, PyGdkGC_New, + &PyGdkColormap_Type, PyGdkColormap_New, + &PyGdkDragContext_Type, PyGdkDragContext_New, + &PyGtkSelectionData_Type, PyGtkSelectionData_New, + &PyGdkAtom_Type, PyGdkAtom_New, + &PyGdkCursor_Type, PyGdkCursor_New, + &PyGtkCTreeNode_Type, PyGtkCTreeNode_New +}; + void init_gtk() { PyObject *m, *d, *private; m = Py_InitModule("_gtk", _gtkmoduleMethods); @@ -5749,6 +5666,9 @@ void init_gtk() { PyDict_SetItemString(d, "GtkCTreeNodeType", (PyObject *)&PyGtkCTreeNode_Type); + PyDict_SetItemString(d, "_PyGtk_API", + PyCObject_FromVoidPtr(&functions, NULL)); + private = PyDict_New(); PyDict_SetItemString(d, "_private", private); Py_DECREF(private); PyDict_SetItemString(private, "PyGtk_New", @@ -5849,7 +5769,7 @@ void init_gtk() { if (d == NULL) PyErr_Clear(); else - PyGtk_FatalExceptions = PyObject_IsTrue(d); + functions.fatalExceptions=PyGtk_FatalExceptions = PyObject_IsTrue(d); #ifdef WITH_THREAD /* it is required that this function be called to enable the thread |