Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib/python
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2006-10-12 10:47:17 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2006-10-12 10:47:17 (GMT)
commit62a46ff92b234d07437f9f36efea576996eb84e2 (patch)
tree8bcb898523a5c907e38eb4fc006a2e31d814cef8 /lib/python
parent5cc6ee3235b6b1301f14f7aae9d1a36abef45557 (diff)
Create a private sugar lib and put our extensions there.
Diffstat (limited to 'lib/python')
-rw-r--r--lib/python/Makefile.am33
-rw-r--r--lib/python/_sugar.c365
-rw-r--r--lib/python/_sugar.defs66
-rw-r--r--lib/python/_sugar.override19
-rw-r--r--lib/python/_sugarmodule.c27
5 files changed, 510 insertions, 0 deletions
diff --git a/lib/python/Makefile.am b/lib/python/Makefile.am
new file mode 100644
index 0000000..eb6b85c
--- /dev/null
+++ b/lib/python/Makefile.am
@@ -0,0 +1,33 @@
+INCLUDES = \
+ $(PYTHON_INCLUDES) \
+ $(PYGTK_CFLAGS) \
+ $(LIB_CFLAGS) \
+ -I $(top_srcdir)/lib/src
+
+pkgpyexecdir = $(pythondir)
+
+pkgpyexec_LTLIBRARIES = _sugar.la
+
+_sugar_la_LDFLAGS = -module -avoid-version -R$(MOZILLA_HOME)
+_sugar_la_LIBADD = \
+ $(LIB_LIBS) \
+ $(top_builddir)/lib/src/libsugarprivate.la
+
+_sugar_la_SOURCES = \
+ _sugarmodule.c
+
+nodist__sugar_la_SOURCES = _sugar.c
+
+_sugar.c: _sugar.defs _sugar.override
+
+CLEANFILES = _sugar.c
+EXTRA_DIST = _sugar.override _sugar.defs
+
+.defs.c:
+ (cd $(srcdir)\
+ && $(PYGTK_CODEGEN) \
+ --register $(GNOMEPYTHONEXTRAS_DEFSDIR)/gtkmozembed.defs \
+ --override $*.override \
+ --prefix py$* $*.defs) > gen-$*.c \
+ && cp gen-$*.c $*.c \
+ && rm -f gen-$*.c
diff --git a/lib/python/_sugar.c b/lib/python/_sugar.c
new file mode 100644
index 0000000..1938322
--- /dev/null
+++ b/lib/python/_sugar.c
@@ -0,0 +1,365 @@
+/* -- THIS FILE IS GENERATED - DO NOT EDIT *//* -*- Mode: C; c-basic-offset: 4 -*- */
+
+#include <Python.h>
+
+
+
+#line 4 "_sugar.override"
+#include <Python.h>
+
+#include "pygobject.h"
+#include "gecko-browser.h"
+#include "sugar-key-grabber.h"
+
+#line 15 "_sugar.c"
+
+
+/* ---------- types from other modules ---------- */
+static PyTypeObject *_PyGObject_Type;
+#define PyGObject_Type (*_PyGObject_Type)
+static PyTypeObject *_PyGtkMozEmbed_Type;
+#define PyGtkMozEmbed_Type (*_PyGtkMozEmbed_Type)
+
+
+/* ---------- forward type declarations ---------- */
+PyTypeObject G_GNUC_INTERNAL PyGeckoBrowser_Type;
+PyTypeObject G_GNUC_INTERNAL PySugarKeyGrabber_Type;
+
+#line 29 "_sugar.c"
+
+
+
+/* ----------- GeckoBrowser ----------- */
+
+static int
+_wrap_gecko_browser_new(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char* kwlist[] = { NULL };
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+ ":gecko.Browser.__init__",
+ kwlist))
+ return -1;
+
+ pygobject_constructv(self, 0, NULL);
+ if (!self->obj) {
+ PyErr_SetString(
+ PyExc_RuntimeError,
+ "could not create gecko.Browser object");
+ return -1;
+ }
+ return 0;
+}
+
+static PyObject *
+_wrap_gecko_browser_create_window(PyGObject *self)
+{
+ GeckoBrowser *ret;
+
+
+ ret = gecko_browser_create_window(GECKO_BROWSER(self->obj));
+
+ /* pygobject_new handles NULL checking */
+ return pygobject_new((GObject *)ret);
+}
+
+static PyObject *
+_wrap_GeckoBrowser__do_create_window(PyObject *cls, PyObject *args, PyObject *kwargs)
+{
+ gpointer klass;
+ static char *kwlist[] = { "self", NULL };
+ PyGObject *self;
+ GeckoBrowser *ret;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:GeckoBrowser.create_window", kwlist, &PyGeckoBrowser_Type, &self))
+ return NULL;
+ klass = g_type_class_ref(pyg_type_from_object(cls));
+ if (GECKO_BROWSER_CLASS(klass)->create_window)
+ ret = GECKO_BROWSER_CLASS(klass)->create_window(GECKO_BROWSER(self->obj));
+ else {
+ PyErr_SetString(PyExc_NotImplementedError, "virtual method GeckoBrowser.create_window not implemented");
+ g_type_class_unref(klass);
+ return NULL;
+ }
+ g_type_class_unref(klass);
+ /* pygobject_new handles NULL checking */
+ return pygobject_new((GObject *)ret);
+}
+
+static const PyMethodDef _PyGeckoBrowser_methods[] = {
+ { "create_window", (PyCFunction)_wrap_gecko_browser_create_window, METH_NOARGS,
+ NULL },
+ { "do_create_window", (PyCFunction)_wrap_GeckoBrowser__do_create_window, METH_VARARGS|METH_KEYWORDS|METH_CLASS,
+ NULL },
+ { NULL, NULL, 0, NULL }
+};
+
+PyTypeObject G_GNUC_INTERNAL PyGeckoBrowser_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
+ "gecko.Browser", /* tp_name */
+ sizeof(PyGObject), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor)0, /* tp_dealloc */
+ (printfunc)0, /* tp_print */
+ (getattrfunc)0, /* tp_getattr */
+ (setattrfunc)0, /* tp_setattr */
+ (cmpfunc)0, /* tp_compare */
+ (reprfunc)0, /* tp_repr */
+ (PyNumberMethods*)0, /* tp_as_number */
+ (PySequenceMethods*)0, /* tp_as_sequence */
+ (PyMappingMethods*)0, /* tp_as_mapping */
+ (hashfunc)0, /* tp_hash */
+ (ternaryfunc)0, /* tp_call */
+ (reprfunc)0, /* tp_str */
+ (getattrofunc)0, /* tp_getattro */
+ (setattrofunc)0, /* tp_setattro */
+ (PyBufferProcs*)0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
+ NULL, /* Documentation string */
+ (traverseproc)0, /* tp_traverse */
+ (inquiry)0, /* tp_clear */
+ (richcmpfunc)0, /* tp_richcompare */
+ offsetof(PyGObject, weakreflist), /* tp_weaklistoffset */
+ (getiterfunc)0, /* tp_iter */
+ (iternextfunc)0, /* tp_iternext */
+ (struct PyMethodDef*)_PyGeckoBrowser_methods, /* tp_methods */
+ (struct PyMemberDef*)0, /* tp_members */
+ (struct PyGetSetDef*)0, /* tp_getset */
+ NULL, /* tp_base */
+ NULL, /* tp_dict */
+ (descrgetfunc)0, /* tp_descr_get */
+ (descrsetfunc)0, /* tp_descr_set */
+ offsetof(PyGObject, inst_dict), /* tp_dictoffset */
+ (initproc)_wrap_gecko_browser_new, /* tp_init */
+ (allocfunc)0, /* tp_alloc */
+ (newfunc)0, /* tp_new */
+ (freefunc)0, /* tp_free */
+ (inquiry)0 /* tp_is_gc */
+};
+
+static GeckoBrowser*
+_wrap_GeckoBrowser__proxy_do_create_window(GeckoBrowser *self)
+{
+ PyGILState_STATE __py_state;
+ PyObject *py_self;
+ GeckoBrowser* retval;
+ PyObject *py_retval;
+ PyObject *py_method;
+
+ __py_state = pyg_gil_state_ensure();
+ py_self = pygobject_new((GObject *) self);
+ if (!py_self) {
+ if (PyErr_Occurred())
+ PyErr_Print();
+ pyg_gil_state_release(__py_state);
+ return NULL;
+ }
+
+
+ py_method = PyObject_GetAttrString(py_self, "do_create_window");
+ if (!py_method) {
+ if (PyErr_Occurred())
+ PyErr_Print();
+ Py_DECREF(py_self);
+ pyg_gil_state_release(__py_state);
+ return NULL;
+ }
+ py_retval = PyObject_CallObject(py_method, NULL);
+ if (!py_retval) {
+ if (PyErr_Occurred())
+ PyErr_Print();
+ Py_DECREF(py_method);
+ Py_DECREF(py_self);
+ pyg_gil_state_release(__py_state);
+ return NULL;
+ }
+ if (!PyObject_TypeCheck(py_retval, &PyGObject_Type)) {
+ PyErr_SetString(PyExc_TypeError, "retval should be a GObject");
+ PyErr_Print();
+ Py_DECREF(py_retval);
+ Py_DECREF(py_method);
+ Py_DECREF(py_self);
+ pyg_gil_state_release(__py_state);
+ return NULL;
+ }
+ retval = (GeckoBrowser*) pygobject_get(py_retval);
+ g_object_ref((GObject *) retval);
+
+
+ Py_DECREF(py_retval);
+ Py_DECREF(py_method);
+ Py_DECREF(py_self);
+ pyg_gil_state_release(__py_state);
+
+ return retval;
+}
+
+static int
+__GeckoBrowser_class_init(gpointer gclass, PyTypeObject *pyclass)
+{
+ PyObject *o;
+ GeckoBrowserClass *klass = GECKO_BROWSER_CLASS(gclass);
+ PyObject *gsignals = PyDict_GetItemString(pyclass->tp_dict, "__gsignals__");
+
+ o = PyObject_GetAttrString((PyObject *) pyclass, "do_create_window");
+ if (o == NULL)
+ PyErr_Clear();
+ else {
+ if (!PyObject_TypeCheck(o, &PyCFunction_Type)
+ && !(gsignals && PyDict_GetItemString(gsignals, "create_window")))
+ klass->create_window = _wrap_GeckoBrowser__proxy_do_create_window;
+ Py_DECREF(o);
+ }
+ return 0;
+}
+
+
+/* ----------- SugarKeyGrabber ----------- */
+
+static int
+_wrap_sugar_key_grabber_new(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char* kwlist[] = { NULL };
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+ ":gecko.KeyGrabber.__init__",
+ kwlist))
+ return -1;
+
+ pygobject_constructv(self, 0, NULL);
+ if (!self->obj) {
+ PyErr_SetString(
+ PyExc_RuntimeError,
+ "could not create gecko.KeyGrabber object");
+ return -1;
+ }
+ return 0;
+}
+
+static PyObject *
+_wrap_sugar_key_grabber_grab(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = { "address", NULL };
+ char *address;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,"s:SugarKeyGrabber.grab", kwlist, &address))
+ return NULL;
+
+ sugar_key_grabber_grab(SUGAR_KEY_GRABBER(self->obj), address);
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static const PyMethodDef _PySugarKeyGrabber_methods[] = {
+ { "grab", (PyCFunction)_wrap_sugar_key_grabber_grab, METH_VARARGS|METH_KEYWORDS,
+ NULL },
+ { NULL, NULL, 0, NULL }
+};
+
+PyTypeObject G_GNUC_INTERNAL PySugarKeyGrabber_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
+ "gecko.KeyGrabber", /* tp_name */
+ sizeof(PyGObject), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ /* methods */
+ (destructor)0, /* tp_dealloc */
+ (printfunc)0, /* tp_print */
+ (getattrfunc)0, /* tp_getattr */
+ (setattrfunc)0, /* tp_setattr */
+ (cmpfunc)0, /* tp_compare */
+ (reprfunc)0, /* tp_repr */
+ (PyNumberMethods*)0, /* tp_as_number */
+ (PySequenceMethods*)0, /* tp_as_sequence */
+ (PyMappingMethods*)0, /* tp_as_mapping */
+ (hashfunc)0, /* tp_hash */
+ (ternaryfunc)0, /* tp_call */
+ (reprfunc)0, /* tp_str */
+ (getattrofunc)0, /* tp_getattro */
+ (setattrofunc)0, /* tp_setattro */
+ (PyBufferProcs*)0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
+ NULL, /* Documentation string */
+ (traverseproc)0, /* tp_traverse */
+ (inquiry)0, /* tp_clear */
+ (richcmpfunc)0, /* tp_richcompare */
+ offsetof(PyGObject, weakreflist), /* tp_weaklistoffset */
+ (getiterfunc)0, /* tp_iter */
+ (iternextfunc)0, /* tp_iternext */
+ (struct PyMethodDef*)_PySugarKeyGrabber_methods, /* tp_methods */
+ (struct PyMemberDef*)0, /* tp_members */
+ (struct PyGetSetDef*)0, /* tp_getset */
+ NULL, /* tp_base */
+ NULL, /* tp_dict */
+ (descrgetfunc)0, /* tp_descr_get */
+ (descrsetfunc)0, /* tp_descr_set */
+ offsetof(PyGObject, inst_dict), /* tp_dictoffset */
+ (initproc)_wrap_sugar_key_grabber_new, /* tp_init */
+ (allocfunc)0, /* tp_alloc */
+ (newfunc)0, /* tp_new */
+ (freefunc)0, /* tp_free */
+ (inquiry)0 /* tp_is_gc */
+};
+
+
+
+/* ----------- functions ----------- */
+
+static PyObject *
+_wrap_gecko_browser_startup(PyObject *self)
+{
+
+ gecko_browser_startup();
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+const PyMethodDef py_sugar_functions[] = {
+ { "startup_browser", (PyCFunction)_wrap_gecko_browser_startup, METH_NOARGS,
+ NULL },
+ { NULL, NULL, 0, NULL }
+};
+
+/* initialise stuff extension classes */
+void
+py_sugar_register_classes(PyObject *d)
+{
+ PyObject *module;
+
+ if ((module = PyImport_ImportModule("gobject")) != NULL) {
+ _PyGObject_Type = (PyTypeObject *)PyObject_GetAttrString(module, "GObject");
+ if (_PyGObject_Type == NULL) {
+ PyErr_SetString(PyExc_ImportError,
+ "cannot import name GObject from gobject");
+ return ;
+ }
+ } else {
+ PyErr_SetString(PyExc_ImportError,
+ "could not import gobject");
+ return ;
+ }
+ if ((module = PyImport_ImportModule("gtkmozembed")) != NULL) {
+ _PyGtkMozEmbed_Type = (PyTypeObject *)PyObject_GetAttrString(module, "MozEmbed");
+ if (_PyGtkMozEmbed_Type == NULL) {
+ PyErr_SetString(PyExc_ImportError,
+ "cannot import name MozEmbed from gtkmozembed");
+ return ;
+ }
+ } else {
+ PyErr_SetString(PyExc_ImportError,
+ "could not import gtkmozembed");
+ return ;
+ }
+
+
+#line 360 "_sugar.c"
+ pygobject_register_class(d, "GeckoBrowser", GECKO_TYPE_BROWSER, &PyGeckoBrowser_Type, Py_BuildValue("(O)", &PyGtkMozEmbed_Type));
+ pyg_set_object_has_new_constructor(GECKO_TYPE_BROWSER);
+ pyg_register_class_init(GECKO_TYPE_BROWSER, __GeckoBrowser_class_init);
+ pygobject_register_class(d, "SugarKeyGrabber", SUGAR_TYPE_KEY_GRABBER, &PySugarKeyGrabber_Type, Py_BuildValue("(O)", &PyGObject_Type));
+ pyg_set_object_has_new_constructor(SUGAR_TYPE_KEY_GRABBER);
+}
diff --git a/lib/python/_sugar.defs b/lib/python/_sugar.defs
new file mode 100644
index 0000000..011bf71
--- /dev/null
+++ b/lib/python/_sugar.defs
@@ -0,0 +1,66 @@
+;; -*- scheme -*-
+; object definitions ...
+(define-object Browser
+ (in-module "Gecko")
+ (parent "GtkMozEmbed")
+ (c-name "GeckoBrowser")
+ (gtype-id "GECKO_TYPE_BROWSER")
+)
+
+;; Enumerations and flags ...
+
+
+;; From gecko-browser.h
+
+(define-function get_type
+ (c-name "gecko_browser_get_type")
+ (return-type "GType")
+)
+
+(define-function startup_browser
+ (c-name "gecko_browser_startup")
+ (return-type "none")
+)
+
+(define-function new
+ (c-name "gecko_browser_new")
+ (is-constructor-of "GeckoBrowser")
+ (return-type "GeckoBrowser*")
+)
+
+(define-method create_window
+ (of-object "GeckoBrowser")
+ (c-name "gecko_browser_create_window")
+ (return-type "GeckoBrowser*")
+)
+
+(define-virtual create_window
+ (of-object "GeckoBrowser")
+ (return-type "GeckoBrowser*")
+)
+(define-object KeyGrabber
+ (in-module "globalkeys")
+ (parent "GObject")
+ (c-name "SugarKeyGrabber")
+ (gtype-id "SUGAR_TYPE_KEY_GRABBER")
+)
+
+(define-function sugar_key_grabber_get_type
+ (c-name "sugar_key_grabber_get_type")
+ (return-type "GType")
+)
+
+(define-function sugar_key_grabber_new
+ (c-name "sugar_key_grabber_new")
+ (is-constructor-of "SugarKeyGrabber")
+ (return-type "GObject*")
+)
+
+(define-method grab
+ (of-object "SugarKeyGrabber")
+ (c-name "sugar_key_grabber_grab")
+ (return-type "none")
+ (parameters
+ '("const-char*" "address")
+ )
+)
diff --git a/lib/python/_sugar.override b/lib/python/_sugar.override
new file mode 100644
index 0000000..e439186
--- /dev/null
+++ b/lib/python/_sugar.override
@@ -0,0 +1,19 @@
+/* -*- Mode: C; c-basic-offset: 4 -*- */
+%%
+headers
+#include <Python.h>
+
+#include "pygobject.h"
+#include "gecko-browser.h"
+#include "sugar-key-grabber.h"
+
+%%
+modulename gecko
+%%
+import gobject.GObject as PyGObject_Type
+import gtkmozembed.MozEmbed as PyGtkMozEmbed_Type
+%%
+ignore-glob
+ *_get_type
+ _*
+%%
diff --git a/lib/python/_sugarmodule.c b/lib/python/_sugarmodule.c
new file mode 100644
index 0000000..4d8511b
--- /dev/null
+++ b/lib/python/_sugarmodule.c
@@ -0,0 +1,27 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* include this first, before NO_IMPORT_PYGOBJECT is defined */
+#include <pygobject.h>
+
+void py_sugar_register_classes (PyObject *d);
+
+extern PyMethodDef py_sugar_functions[];
+
+DL_EXPORT(void)
+init_sugar(void)
+{
+ PyObject *m, *d;
+
+ init_pygobject ();
+
+ m = Py_InitModule ("_sugar", py_sugar_functions);
+ d = PyModule_GetDict (m);
+
+ py_sugar_register_classes (d);
+
+ if (PyErr_Occurred ()) {
+ Py_FatalError ("can't initialise module globalkeys");
+ }
+}