Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--Makefile.am2
-rw-r--r--activities/browser/BrowserActivity.py8
-rw-r--r--bindings/Makefile.am4
-rw-r--r--bindings/gecko/Makefile.am33
-rw-r--r--bindings/gecko/gecko.defs40
-rw-r--r--bindings/globalkeys/Makefile.am35
-rw-r--r--bindings/globalkeys/__init__.py0
-rw-r--r--bindings/globalkeys/globalkeys.defs26
-rw-r--r--bindings/globalkeys/globalkeys.override17
-rw-r--r--bindings/globalkeys/globalkeysmodule.c27
-rw-r--r--configure.ac14
-rw-r--r--lib/Makefile.am1
-rw-r--r--lib/__init__.py (renamed from bindings/__init__.py)0
-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.override (renamed from bindings/gecko/gecko.override)1
-rw-r--r--lib/python/_sugarmodule.c (renamed from bindings/gecko/geckomodule.c)10
-rw-r--r--lib/src/Makefile.am14
-rw-r--r--lib/src/eggaccelerators.c (renamed from bindings/globalkeys/eggaccelerators.c)0
-rw-r--r--lib/src/eggaccelerators.h (renamed from bindings/globalkeys/eggaccelerators.h)0
-rw-r--r--lib/src/gecko-browser.cpp (renamed from bindings/gecko/gecko-browser.cpp)0
-rw-r--r--lib/src/gecko-browser.h (renamed from bindings/gecko/gecko-browser.h)0
-rw-r--r--lib/src/sugar-key-grabber.c (renamed from bindings/globalkeys/sugar-key-grabber.c)0
-rw-r--r--lib/src/sugar-key-grabber.h (renamed from bindings/globalkeys/sugar-key-grabber.h)0
-rw-r--r--lib/threadframe/GNUmakefile.mingw2 (renamed from bindings/threadframe/GNUmakefile.mingw2)0
-rw-r--r--lib/threadframe/Makefile.am (renamed from bindings/threadframe/Makefile.am)0
-rw-r--r--lib/threadframe/README (renamed from bindings/threadframe/README)0
-rw-r--r--lib/threadframe/sample.txt (renamed from bindings/threadframe/sample.txt)0
-rw-r--r--lib/threadframe/setup.py (renamed from bindings/threadframe/setup.py)0
-rw-r--r--lib/threadframe/test.py (renamed from bindings/threadframe/test.py)0
-rw-r--r--lib/threadframe/threadframe.def (renamed from bindings/threadframe/threadframe.def)0
-rw-r--r--lib/threadframe/threadframemodule.c (renamed from bindings/threadframe/threadframemodule.c)0
-rw-r--r--shell/view/Shell.py2
-rw-r--r--sugar/__installed__.py.in1
-rw-r--r--sugar/__uninstalled__.py.in2
37 files changed, 501 insertions, 203 deletions
diff --git a/.gitignore b/.gitignore
index 08da78c..e2834ee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,5 +46,4 @@ depcomp
libtool
ltmain.sh
m4/intltool.m4
-bindings/globalkeys/globalkeys.c
-bindings/gecko/gecko.c
+lib/src/_sugar.c
diff --git a/Makefile.am b/Makefile.am
index 323f1f4..4d5d49c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = activities bindings po shell sugar services tools
+SUBDIRS = activities lib po shell sugar services tools
ACLOCAL_AMFLAGS = -I m4
diff --git a/activities/browser/BrowserActivity.py b/activities/browser/BrowserActivity.py
index 04e9129..d9e5bbf 100644
--- a/activities/browser/BrowserActivity.py
+++ b/activities/browser/BrowserActivity.py
@@ -9,7 +9,7 @@ from sugar.activity.Activity import Activity
from sugar.presence.PresenceService import PresenceService
from sugar.p2p.model.LocalModel import LocalModel
from sugar.p2p.model.RemoteModel import RemoteModel
-import gecko
+import _sugar
from NotificationBar import NotificationBar
from NavigationToolbar import NavigationToolbar
@@ -68,10 +68,10 @@ class PopupCreator(gobject.GObject):
def get_embed(self):
return self._embed
-class Browser(gecko.Browser):
+class Browser(_sugar.Browser):
__gtype_name__ = "SugarBrowser"
def __init__(self):
- gecko.Browser.__init__(self)
+ _sugar.Browser.__init__(self)
self._popup_creators = []
def do_create_window(self):
@@ -205,4 +205,4 @@ class BrowserActivity(Activity):
def start():
gtkmozembed.set_profile_path(env.get_profile_path(), 'gecko')
gtkmozembed.push_startup()
- gecko.startup()
+ _sugar.startup_browser()
diff --git a/bindings/Makefile.am b/bindings/Makefile.am
deleted file mode 100644
index 076d521..0000000
--- a/bindings/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-SUBDIRS = gecko globalkeys threadframe
-
-bindingsdir = $(pkgdatadir)/bindings
-bindings_PYTHON = __init__.py
diff --git a/bindings/gecko/Makefile.am b/bindings/gecko/Makefile.am
deleted file mode 100644
index 7da2e52..0000000
--- a/bindings/gecko/Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
-INCLUDES = \
- $(PYTHON_INCLUDES) \
- $(PYGTK_CFLAGS) \
- $(GECKO_CFLAGS)
-
-geckodir = $(pkgdatadir)/bindings
-pkgpyexecdir = $(geckodir)
-
-pkgpyexec_LTLIBRARIES = gecko.la
-
-gecko_la_LDFLAGS = -module -avoid-version
-gecko_la_LIBADD = $(GECKO_LIBS)
-
-gecko_la_SOURCES = \
- geckomodule.c \
- gecko-browser.h \
- gecko-browser.cpp
-
-nodist_gecko_la_SOURCES = gecko.c
-
-gecko.c: gecko.defs gecko.override
-
-CLEANFILES = gecko.c
-EXTRA_DIST = gecko.override gecko.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/bindings/gecko/gecko.defs b/bindings/gecko/gecko.defs
deleted file mode 100644
index c7f6c1a..0000000
--- a/bindings/gecko/gecko.defs
+++ /dev/null
@@ -1,40 +0,0 @@
-;; -*- 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
- (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*")
-)
diff --git a/bindings/globalkeys/Makefile.am b/bindings/globalkeys/Makefile.am
deleted file mode 100644
index cd2175b..0000000
--- a/bindings/globalkeys/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-INCLUDES = \
- $(WARN_CFLAGS) \
- $(PYTHON_INCLUDES) \
- $(PYGTK_CFLAGS) \
- $(GLOBALKEYS_CFLAGS)
-
-globalkeysdir = $(pkgdatadir)/bindings
-pkgpyexecdir = $(globalkeysdir)
-
-pkgpyexec_LTLIBRARIES = globalkeys.la
-
-globalkeys_la_LDFLAGS = -module -avoid-version
-globalkeys_la_LIBADD = $(GLOBALKEYS_LIBS)
-
-globalkeys_la_SOURCES = \
- eggaccelerators.c \
- eggaccelerators.h \
- globalkeysmodule.c \
- sugar-key-grabber.h \
- sugar-key-grabber.c
-
-nodist_globalkeys_la_SOURCES = globalkeys.c
-
-globalkeys.c: globalkeys.defs globalkeys.override
-
-CLEANFILES = globalkeys.c
-EXTRA_DIST = globalkeys.override globalkeys.defs
-
-.defs.c:
- (cd $(srcdir)\
- && $(PYGTK_CODEGEN) \
- --override $*.override \
- --prefix py$* $*.defs) > gen-$*.c \
- && cp gen-$*.c $*.c \
- && rm -f gen-$*.c
diff --git a/bindings/globalkeys/__init__.py b/bindings/globalkeys/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/bindings/globalkeys/__init__.py
+++ /dev/null
diff --git a/bindings/globalkeys/globalkeys.defs b/bindings/globalkeys/globalkeys.defs
deleted file mode 100644
index 7861167..0000000
--- a/bindings/globalkeys/globalkeys.defs
+++ /dev/null
@@ -1,26 +0,0 @@
-(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/bindings/globalkeys/globalkeys.override b/bindings/globalkeys/globalkeys.override
deleted file mode 100644
index f54c4ef..0000000
--- a/bindings/globalkeys/globalkeys.override
+++ /dev/null
@@ -1,17 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*- */
-%%
-headers
-#include <Python.h>
-
-#include "pygobject.h"
-#include "sugar-key-grabber.h"
-
-%%
-modulename globalkeys
-%%
-import gobject.GObject as PyGObject_Type
-%%
-ignore-glob
- *_get_type
- _*
-%%
diff --git a/bindings/globalkeys/globalkeysmodule.c b/bindings/globalkeys/globalkeysmodule.c
deleted file mode 100644
index 9034f51..0000000
--- a/bindings/globalkeys/globalkeysmodule.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-/* include this first, before NO_IMPORT_PYGOBJECT is defined */
-#include <pygobject.h>
-
-void pyglobalkeys_register_classes (PyObject *d);
-
-extern PyMethodDef pyglobalkeys_functions[];
-
-DL_EXPORT(void)
-initglobalkeys(void)
-{
- PyObject *m, *d;
-
- init_pygobject ();
-
- m = Py_InitModule ("globalkeys", pyglobalkeys_functions);
- d = PyModule_GetDict (m);
-
- pyglobalkeys_register_classes (d);
-
- if (PyErr_Occurred ()) {
- Py_FatalError ("can't initialise module globalkeys");
- }
-}
diff --git a/configure.ac b/configure.ac
index 46a0c02..5c42d74 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,8 +22,10 @@ AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)])
AC_PATH_PROG(PYGTK_CODEGEN, pygtk-codegen-2.0, no)
PKG_CHECK_MODULES(PYGTK, pygtk-2.0)
-PKG_CHECK_MODULES(GLOBALKEYS, gdk-2.0)
-PKG_CHECK_MODULES(GECKO, gtk+-2.0 xulrunner-gtkmozembed)
+PKG_CHECK_MODULES(LIB, gtk+-2.0 xulrunner-gtkmozembed)
+
+MOZILLA_HOME="`$PKG_CONFIG --variable=libdir xulrunner-gtkmozembed`"
+AC_SUBST(MOZILLA_HOME)
GNOMEPYTHONEXTRAS_DEFSDIR=`$PKG_CONFIG --variable=defsdir pygtk-2.0`
AC_SUBST(GNOMEPYTHONEXTRAS_DEFSDIR)
@@ -46,10 +48,10 @@ activities/browser/Makefile
activities/chat/Makefile
activities/groupchat/Makefile
activities/terminal/Makefile
-bindings/Makefile
-bindings/gecko/Makefile
-bindings/globalkeys/Makefile
-bindings/threadframe/Makefile
+lib/Makefile
+lib/src/Makefile
+lib/python/Makefile
+lib/threadframe/Makefile
services/Makefile
services/presence/Makefile
shell/Makefile
diff --git a/lib/Makefile.am b/lib/Makefile.am
new file mode 100644
index 0000000..055aa29
--- /dev/null
+++ b/lib/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = src python
diff --git a/bindings/__init__.py b/lib/__init__.py
index e69de29..e69de29 100644
--- a/bindings/__init__.py
+++ b/lib/__init__.py
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/bindings/gecko/gecko.override b/lib/python/_sugar.override
index b32caa6..e439186 100644
--- a/bindings/gecko/gecko.override
+++ b/lib/python/_sugar.override
@@ -5,6 +5,7 @@ headers
#include "pygobject.h"
#include "gecko-browser.h"
+#include "sugar-key-grabber.h"
%%
modulename gecko
diff --git a/bindings/gecko/geckomodule.c b/lib/python/_sugarmodule.c
index 8455de8..4d8511b 100644
--- a/bindings/gecko/geckomodule.c
+++ b/lib/python/_sugarmodule.c
@@ -5,21 +5,21 @@
/* include this first, before NO_IMPORT_PYGOBJECT is defined */
#include <pygobject.h>
-void pygecko_register_classes (PyObject *d);
+void py_sugar_register_classes (PyObject *d);
-extern PyMethodDef pygecko_functions[];
+extern PyMethodDef py_sugar_functions[];
DL_EXPORT(void)
-initgecko(void)
+init_sugar(void)
{
PyObject *m, *d;
init_pygobject ();
- m = Py_InitModule ("gecko", pygecko_functions);
+ m = Py_InitModule ("_sugar", py_sugar_functions);
d = PyModule_GetDict (m);
- pygecko_register_classes (d);
+ py_sugar_register_classes (d);
if (PyErr_Occurred ()) {
Py_FatalError ("can't initialise module globalkeys");
diff --git a/lib/src/Makefile.am b/lib/src/Makefile.am
new file mode 100644
index 0000000..57c6a32
--- /dev/null
+++ b/lib/src/Makefile.am
@@ -0,0 +1,14 @@
+INCLUDES = \
+ $(LIB_CFLAGS)
+
+noinst_LTLIBRARIES = libsugarprivate.la
+
+libsugarprivate_la_LIBADD = $(GECKO_LIBS)
+
+libsugarprivate_la_SOURCES = \
+ eggaccelerators.h \
+ eggaccelerators.c \
+ gecko-browser.h \
+ gecko-browser.cpp \
+ sugar-key-grabber.h \
+ sugar-key-grabber.c
diff --git a/bindings/globalkeys/eggaccelerators.c b/lib/src/eggaccelerators.c
index 0a39d51..0a39d51 100644
--- a/bindings/globalkeys/eggaccelerators.c
+++ b/lib/src/eggaccelerators.c
diff --git a/bindings/globalkeys/eggaccelerators.h b/lib/src/eggaccelerators.h
index d2276d2..d2276d2 100644
--- a/bindings/globalkeys/eggaccelerators.h
+++ b/lib/src/eggaccelerators.h
diff --git a/bindings/gecko/gecko-browser.cpp b/lib/src/gecko-browser.cpp
index cab07f8..cab07f8 100644
--- a/bindings/gecko/gecko-browser.cpp
+++ b/lib/src/gecko-browser.cpp
diff --git a/bindings/gecko/gecko-browser.h b/lib/src/gecko-browser.h
index d41d2c5..d41d2c5 100644
--- a/bindings/gecko/gecko-browser.h
+++ b/lib/src/gecko-browser.h
diff --git a/bindings/globalkeys/sugar-key-grabber.c b/lib/src/sugar-key-grabber.c
index f31e012..f31e012 100644
--- a/bindings/globalkeys/sugar-key-grabber.c
+++ b/lib/src/sugar-key-grabber.c
diff --git a/bindings/globalkeys/sugar-key-grabber.h b/lib/src/sugar-key-grabber.h
index 3791e02..3791e02 100644
--- a/bindings/globalkeys/sugar-key-grabber.h
+++ b/lib/src/sugar-key-grabber.h
diff --git a/bindings/threadframe/GNUmakefile.mingw2 b/lib/threadframe/GNUmakefile.mingw2
index f5c0df4..f5c0df4 100644
--- a/bindings/threadframe/GNUmakefile.mingw2
+++ b/lib/threadframe/GNUmakefile.mingw2
diff --git a/bindings/threadframe/Makefile.am b/lib/threadframe/Makefile.am
index 01ce6b1..01ce6b1 100644
--- a/bindings/threadframe/Makefile.am
+++ b/lib/threadframe/Makefile.am
diff --git a/bindings/threadframe/README b/lib/threadframe/README
index ec63fa2..ec63fa2 100644
--- a/bindings/threadframe/README
+++ b/lib/threadframe/README
diff --git a/bindings/threadframe/sample.txt b/lib/threadframe/sample.txt
index f5444d8..f5444d8 100644
--- a/bindings/threadframe/sample.txt
+++ b/lib/threadframe/sample.txt
diff --git a/bindings/threadframe/setup.py b/lib/threadframe/setup.py
index df8f46d..df8f46d 100644
--- a/bindings/threadframe/setup.py
+++ b/lib/threadframe/setup.py
diff --git a/bindings/threadframe/test.py b/lib/threadframe/test.py
index 6f1c82a..6f1c82a 100644
--- a/bindings/threadframe/test.py
+++ b/lib/threadframe/test.py
diff --git a/bindings/threadframe/threadframe.def b/lib/threadframe/threadframe.def
index 713e4b2..713e4b2 100644
--- a/bindings/threadframe/threadframe.def
+++ b/lib/threadframe/threadframe.def
diff --git a/bindings/threadframe/threadframemodule.c b/lib/threadframe/threadframemodule.c
index 2f67a45..2f67a45 100644
--- a/bindings/threadframe/threadframemodule.c
+++ b/lib/threadframe/threadframemodule.c
diff --git a/shell/view/Shell.py b/shell/view/Shell.py
index 38ba9ac..8ee109b 100644
--- a/shell/view/Shell.py
+++ b/shell/view/Shell.py
@@ -10,7 +10,7 @@ from view.ActivityHost import ActivityHost
from sugar.activity import ActivityFactory
from sugar.activity import Activity
from view.frame.Frame import Frame
-from globalkeys import KeyGrabber
+from _sugar import KeyGrabber
import sugar
class Shell(gobject.GObject):
diff --git a/sugar/__installed__.py.in b/sugar/__installed__.py.in
index fd1b855..7a7bc28 100644
--- a/sugar/__installed__.py.in
+++ b/sugar/__installed__.py.in
@@ -5,7 +5,6 @@ sugar_services_dir = '@prefix@/share/sugar/services'
sugar_dbus_config = '@prefix@/share/sugar/dbus-installed.conf'
sugar_python_path = ['@prefix@/share/sugar/shell',
- '@prefix@/share/sugar/bindings',
'@prefix@/share/sugar/activities',
'@prefix@/share/sugar/services']
sugar_bin_path = []
diff --git a/sugar/__uninstalled__.py.in b/sugar/__uninstalled__.py.in
index 02b43f1..d6391a9 100644
--- a/sugar/__uninstalled__.py.in
+++ b/sugar/__uninstalled__.py.in
@@ -10,7 +10,7 @@ sugar_service_dir = __tmpdir
sugar_dbus_config = os.path.join(sugar_source_dir, 'dbus-uninstalled.conf')
-sugar_python_path = ['@prefix@/share/sugar/bindings']
+sugar_python_path = []
sugar_python_path.append(sugar_source_dir)
sugar_python_path.append(os.path.join(sugar_source_dir, 'shell'))
sugar_python_path.append(os.path.join(sugar_source_dir, 'activities'))