Make browser a modules inside sugar library
This commit is contained in:
parent
4828870afd
commit
5343752c35
@ -1,4 +1,4 @@
|
||||
SUBDIRS = bin data lib po shell sugar services
|
||||
SUBDIRS = bin browser data po shell sugar services
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
libsugarprivate_la_CPPFLAGS = \
|
||||
libsugarbrowser_la_CPPFLAGS = \
|
||||
$(WARN_CFLAGS) \
|
||||
$(LIB_CFLAGS) \
|
||||
$(GECKO_CFLAGS) \
|
||||
@ -18,13 +18,13 @@ libsugarprivate_la_CPPFLAGS = \
|
||||
-DPLUGIN_DIR=\"$(libdir)/mozilla/plugins\" \
|
||||
-DSHARE_DIR=\"$(pkgdatadir)\"
|
||||
|
||||
noinst_LTLIBRARIES = libsugarprivate.la
|
||||
noinst_LTLIBRARIES = libsugarbrowser.la
|
||||
|
||||
libsugarprivate_la_LIBADD = \
|
||||
libsugarbrowser_la_LIBADD = \
|
||||
$(LIB_LIBS) \
|
||||
$(GECKO_LIBS)
|
||||
|
||||
libsugarprivate_la_SOURCES = \
|
||||
libsugarbrowser_la_SOURCES = \
|
||||
$(BUILT_SOURCES) \
|
||||
GeckoContentHandler.h \
|
||||
GeckoContentHandler.cpp \
|
@ -120,9 +120,7 @@ AC_OUTPUT([
|
||||
Makefile
|
||||
bin/Makefile
|
||||
data/Makefile
|
||||
lib/Makefile
|
||||
lib/src/Makefile
|
||||
lib/python/Makefile
|
||||
browser/Makefile
|
||||
services/Makefile
|
||||
services/presence/Makefile
|
||||
services/presence2/Makefile
|
||||
@ -155,6 +153,7 @@ services/console/interface/logviewer/Makefile
|
||||
services/console/interface/terminal/Makefile
|
||||
sugar/Makefile
|
||||
sugar/activity/Makefile
|
||||
sugar/browser/Makefile
|
||||
sugar/clipboard/Makefile
|
||||
sugar/graphics/Makefile
|
||||
sugar/p2p/Makefile
|
||||
|
@ -1 +0,0 @@
|
||||
SUBDIRS = src python
|
@ -1,43 +0,0 @@
|
||||
INCLUDES = \
|
||||
$(PYTHON_INCLUDES) \
|
||||
$(PYGTK_CFLAGS) \
|
||||
$(PYCAIRO_CFLAGS) \
|
||||
$(LIB_CFLAGS) \
|
||||
$(GECKO_CFLAGS) \
|
||||
$(NSPR_CFLAGS) \
|
||||
-I$(MOZILLA_INCLUDE_DIR)/gtkembedmoz \
|
||||
-I$(top_srcdir)/lib/src
|
||||
|
||||
pkgpyexecdir = $(pythondir)
|
||||
|
||||
pkgpyexec_LTLIBRARIES = _sugar.la
|
||||
|
||||
_sugar_la_LDFLAGS = -module -avoid-version $(GECKO_LDFLAGS)
|
||||
_sugar_la_LIBADD = \
|
||||
$(LIB_LIBS) \
|
||||
$(PYCAIRO_LIBS) \
|
||||
$(GECKO_LIBS) \
|
||||
$(XPCOMGLUE_LIBS) \
|
||||
$(top_builddir)/lib/src/libsugarprivate.la
|
||||
|
||||
_sugar_la_SOURCES = \
|
||||
_sugarmodule.c \
|
||||
xulrunner.cpp \
|
||||
xulrunner.h
|
||||
|
||||
nodist__sugar_la_SOURCES = _sugar.c
|
||||
|
||||
_sugar.c: _sugar.defs gtkmozembed.defs _sugar.override gtkmozembed.override
|
||||
|
||||
CLEANFILES = _sugar.c
|
||||
EXTRA_DIST = _sugar.override _sugar.defs gtkmozembed.defs gtkmozembed.override
|
||||
|
||||
.defs.c:
|
||||
(cd $(srcdir)\
|
||||
&& $(PYGTK_CODEGEN) \
|
||||
--register $(PYGTK_DEFSDIR)/gdk-types.defs \
|
||||
--register $(PYGTK_DEFSDIR)/gtk-types.defs \
|
||||
--override $*.override \
|
||||
--prefix py$* $*.defs) > gen-$*.c \
|
||||
&& cp gen-$*.c $*.c \
|
||||
&& rm -f gen-$*.c
|
@ -1,228 +0,0 @@
|
||||
/* -*- Mode: C; c-basic-offset: 4 -*- */
|
||||
%%
|
||||
headers
|
||||
#include <Python.h>
|
||||
|
||||
#include "pygobject.h"
|
||||
#include "sugar-browser.h"
|
||||
#include "sugar-address-entry.h"
|
||||
#include "sugar-download-manager.h"
|
||||
#include "sugar-download.h"
|
||||
|
||||
#include "pycairo.h"
|
||||
#include <pygtk/pygtk.h>
|
||||
#include <glib.h>
|
||||
|
||||
extern Pycairo_CAPI_t *Pycairo_CAPI;
|
||||
|
||||
%%
|
||||
modulename gecko
|
||||
%%
|
||||
import gobject.GObject as PyGObject_Type
|
||||
import gtk.Entry as PyGtkEntry_Type
|
||||
import gtk.gdk.Screen as PyGdkScreen_Type
|
||||
import gtk.gdk.Pixbuf as PyGdkPixbuf_Type
|
||||
import hippo.CanvasImage as HippoCanvasImage_Type
|
||||
%%
|
||||
ignore-glob
|
||||
*_get_type
|
||||
_*
|
||||
%%
|
||||
include
|
||||
gtkmozembed.override
|
||||
%%
|
||||
override sugar_hippo_canvas_image_set_image_from_gdk_pixbuf kwargs
|
||||
static cairo_surface_t *
|
||||
_cairo_surface_from_pixbuf (GdkPixbuf *pixbuf)
|
||||
{
|
||||
/* Ripped from GooCanvas */
|
||||
gint width = gdk_pixbuf_get_width (pixbuf);
|
||||
gint height = gdk_pixbuf_get_height (pixbuf);
|
||||
guchar *gdk_pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
int gdk_rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
int n_channels = gdk_pixbuf_get_n_channels (pixbuf);
|
||||
guchar *cairo_pixels;
|
||||
cairo_format_t format;
|
||||
cairo_surface_t *surface;
|
||||
static const cairo_user_data_key_t key;
|
||||
int j;
|
||||
|
||||
if (n_channels == 3)
|
||||
format = CAIRO_FORMAT_RGB24;
|
||||
else
|
||||
format = CAIRO_FORMAT_ARGB32;
|
||||
|
||||
cairo_pixels = g_malloc (4 * width * height);
|
||||
surface = cairo_image_surface_create_for_data ((unsigned char *)cairo_pixels,
|
||||
format,
|
||||
width, height, 4 * width);
|
||||
cairo_surface_set_user_data (surface, &key,
|
||||
cairo_pixels, (cairo_destroy_func_t)g_free);
|
||||
|
||||
for (j = height; j; j--)
|
||||
{
|
||||
guchar *p = gdk_pixels;
|
||||
guchar *q = cairo_pixels;
|
||||
|
||||
if (n_channels == 3)
|
||||
{
|
||||
guchar *end = p + 3 * width;
|
||||
|
||||
while (p < end)
|
||||
{
|
||||
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
||||
q[0] = p[2];
|
||||
q[1] = p[1];
|
||||
q[2] = p[0];
|
||||
#else
|
||||
q[1] = p[0];
|
||||
q[2] = p[1];
|
||||
q[3] = p[2];
|
||||
#endif
|
||||
p += 3;
|
||||
q += 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
guchar *end = p + 4 * width;
|
||||
guint t1,t2,t3;
|
||||
|
||||
#define MULT(d,c,a,t) G_STMT_START { t = c * a; d = ((t >> 8) + t) >> 8; } G_STMT_END
|
||||
|
||||
while (p < end)
|
||||
{
|
||||
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
||||
MULT(q[0], p[2], p[3], t1);
|
||||
MULT(q[1], p[1], p[3], t2);
|
||||
MULT(q[2], p[0], p[3], t3);
|
||||
q[3] = p[3];
|
||||
#else
|
||||
q[0] = p[3];
|
||||
MULT(q[1], p[0], p[3], t1);
|
||||
MULT(q[2], p[1], p[3], t2);
|
||||
MULT(q[3], p[2], p[3], t3);
|
||||
#endif
|
||||
|
||||
p += 4;
|
||||
q += 4;
|
||||
}
|
||||
|
||||
#undef MULT
|
||||
}
|
||||
|
||||
gdk_pixels += gdk_rowstride;
|
||||
cairo_pixels += 4 * width;
|
||||
}
|
||||
|
||||
return surface;
|
||||
}
|
||||
static PyObject*
|
||||
_wrap_sugar_hippo_canvas_image_set_image_from_gdk_pixbuf(PyGObject *self, PyObject *args, PyObject *kwargs)
|
||||
{
|
||||
static char *kwlist[] = { "image", "pixbuf", NULL };
|
||||
PyGObject *py_pixbuf;
|
||||
PyGObject *py_image;
|
||||
cairo_surface_t *surface;
|
||||
GObject *image;
|
||||
GValue val = {0,};
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs,
|
||||
"O!O!:_sugar.hippo_canvas_image_set_image_from_gdk_pixbuf",
|
||||
kwlist, &HippoCanvasImage_Type, &py_image, &PyGdkPixbuf_Type, &py_pixbuf)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
surface = _cairo_surface_from_pixbuf(GDK_PIXBUF (py_pixbuf->obj));
|
||||
if (surface == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "pixbuf could not be converted");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* FIXME: This has to be a GObject (and not a real HippoCanvasImage object)
|
||||
* for now until the HippoCanvas includes situation gets sorted out.
|
||||
*/
|
||||
image = G_OBJECT (py_image->obj);
|
||||
if (image == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "invalid HippoCanvasImage object");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
g_value_init (&val, G_TYPE_POINTER);
|
||||
g_value_set_pointer (&val, surface);
|
||||
g_object_set_property (image, "image", &val);
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
%%
|
||||
override sugar_cairo_surface_from_gdk_pixbuf kwargs
|
||||
static PyObject*
|
||||
_wrap_sugar_cairo_surface_from_gdk_pixbuf(PyGObject *self, PyObject *args, PyObject *kwargs)
|
||||
{
|
||||
static char *kwlist[] = { "pixbuf", NULL };
|
||||
PyGObject *child;
|
||||
cairo_surface_t *surface;
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O!:sugar.cairo_surface_from_gdk_pixbuf", kwlist, &PyGdkPixbuf_Type, &child))
|
||||
return NULL;
|
||||
|
||||
surface = _cairo_surface_from_pixbuf(GDK_PIXBUF (child->obj));
|
||||
if (surface == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError, "pixbuf could not be converted");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return PycairoSurface_FromSurface(surface, NULL);
|
||||
}
|
||||
%%
|
||||
override-slot SugarBrowserMetadata.tp_getattr
|
||||
static PyObject *
|
||||
_wrap_sugar_browser_metadata_tp_getattr(PyObject *self, char *attr)
|
||||
{
|
||||
SugarBrowserMetadata *metadata = pyg_boxed_get(self, SugarBrowserMetadata);
|
||||
|
||||
if (!strcmp(attr, "__members__"))
|
||||
return Py_BuildValue("[s]", "filename");
|
||||
else if (!strcmp(attr, "filename")) {
|
||||
if (metadata->filename) {
|
||||
return PyString_FromString(metadata->filename);
|
||||
} else {
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
%%
|
||||
override-slot SugarBrowserEvent.tp_getattr
|
||||
static PyObject *
|
||||
_wrap_sugar_browser_event_tp_getattr(PyObject *self, char *attr)
|
||||
{
|
||||
SugarBrowserEvent *event = pyg_boxed_get(self, SugarBrowserEvent);
|
||||
|
||||
if (!strcmp(attr, "__members__"))
|
||||
return Py_BuildValue("[sss]", "image_uri", "button", "image_name");
|
||||
else if (!strcmp(attr, "image_uri")) {
|
||||
if (event->image_uri) {
|
||||
return PyString_FromString(event->image_uri);
|
||||
} else {
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(attr, "image_name")) {
|
||||
if (event->image_name) {
|
||||
return PyString_FromString(event->image_name);
|
||||
} else {
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(attr, "button"))
|
||||
return PyInt_FromLong(event->button);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
%%
|
@ -1,37 +0,0 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "xulrunner.h"
|
||||
|
||||
/* include this first, before NO_IMPORT_PYGOBJECT is defined */
|
||||
#include <pygobject.h>
|
||||
|
||||
#include <pycairo.h>
|
||||
Pycairo_CAPI_t *Pycairo_CAPI;
|
||||
|
||||
void py_sugar_register_classes (PyObject *d);
|
||||
|
||||
extern PyMethodDef py_sugar_functions[];
|
||||
|
||||
DL_EXPORT(void)
|
||||
init_sugar(void)
|
||||
{
|
||||
PyObject *m, *d;
|
||||
|
||||
xulrunner_startup();
|
||||
|
||||
init_pygobject ();
|
||||
|
||||
Pycairo_IMPORT;
|
||||
|
||||
m = Py_InitModule ("_sugar", py_sugar_functions);
|
||||
d = PyModule_GetDict (m);
|
||||
|
||||
py_sugar_register_classes (d);
|
||||
py_sugar_add_constants(m, "GTK_MOZ_EMBED_");
|
||||
|
||||
if (PyErr_Occurred ()) {
|
||||
Py_FatalError ("can't initialise module _sugar");
|
||||
}
|
||||
}
|
@ -23,7 +23,6 @@ from sugar.graphics.menu import Menu, MenuItem
|
||||
from sugar.graphics.canvasicon import CanvasIcon
|
||||
from sugar.graphics import units
|
||||
from sugar.presence import PresenceService
|
||||
import _sugar
|
||||
|
||||
class BuddyMenu(Menu):
|
||||
ACTION_MAKE_FRIEND = 0
|
||||
@ -49,7 +48,7 @@ class BuddyMenu(Menu):
|
||||
# FIXME: have to set the image _after_ adding the HippoCanvasImage
|
||||
# to it's parent item, because that sets the HippoCanvasImage's context,
|
||||
# which resets the object's 'image' property. Grr.
|
||||
_sugar.hippo_canvas_image_set_image_from_gdk_pixbuf(icon_item, scaled_pixbuf)
|
||||
#_sugar.hippo_canvas_image_set_image_from_gdk_pixbuf(icon_item, scaled_pixbuf)
|
||||
|
||||
self._buddy.connect('icon-changed', self.__buddy_icon_changed_cb)
|
||||
|
||||
|
@ -26,7 +26,6 @@ import gtk
|
||||
import gobject
|
||||
|
||||
from sugar import env
|
||||
import _sugar
|
||||
|
||||
def _get_display_number():
|
||||
"""Find a free display number trying to connect to 6000+ ports"""
|
||||
|
@ -1,4 +1,4 @@
|
||||
SUBDIRS = activity clipboard graphics p2p presence datastore
|
||||
SUBDIRS = activity browser clipboard graphics p2p presence datastore
|
||||
|
||||
sugardir = $(pythondir)/sugar
|
||||
sugar_PYTHON = \
|
||||
|
@ -21,7 +21,6 @@ import os
|
||||
import gtk
|
||||
import hippo
|
||||
|
||||
import _sugar
|
||||
from sugar.presence import PresenceService
|
||||
from sugar.activity.activityservice import ActivityService
|
||||
from sugar.graphics.window import Window
|
||||
|
47
sugar/browser/Makefile.am
Normal file
47
sugar/browser/Makefile.am
Normal file
@ -0,0 +1,47 @@
|
||||
sugardir = $(pythondir)/sugar/browser
|
||||
sugar_PYTHON = \
|
||||
__init__.py
|
||||
|
||||
INCLUDES = \
|
||||
$(PYTHON_INCLUDES) \
|
||||
$(PYGTK_CFLAGS) \
|
||||
$(PYCAIRO_CFLAGS) \
|
||||
$(LIB_CFLAGS) \
|
||||
$(GECKO_CFLAGS) \
|
||||
$(NSPR_CFLAGS) \
|
||||
-I$(MOZILLA_INCLUDE_DIR)/gtkembedmoz \
|
||||
-I$(top_srcdir)/browser
|
||||
|
||||
pkgpyexecdir = $(pythondir)/sugar/browser
|
||||
|
||||
pkgpyexec_LTLIBRARIES = _sugarbrowser.la
|
||||
|
||||
_sugarbrowser_la_LDFLAGS = -module -avoid-version $(GECKO_LDFLAGS)
|
||||
_sugarbrowser_la_LIBADD = \
|
||||
$(LIB_LIBS) \
|
||||
$(PYCAIRO_LIBS) \
|
||||
$(GECKO_LIBS) \
|
||||
$(XPCOMGLUE_LIBS) \
|
||||
$(top_builddir)/browser/libsugarbrowser.la
|
||||
|
||||
_sugarbrowser_la_SOURCES = \
|
||||
_sugarbrowsermodule.c \
|
||||
xulrunner.cpp \
|
||||
xulrunner.h
|
||||
|
||||
nodist__sugarbrowser_la_SOURCES = _sugarbrowser.c
|
||||
|
||||
_sugar.c: _sugarbrowser.defs gtkmozembed.defs _sugarbrowser.override gtkmozembed.override
|
||||
|
||||
CLEANFILES = _sugar.c
|
||||
EXTRA_DIST = _sugarbrowser.override _sugarbrowser.defs gtkmozembed.defs gtkmozembed.override
|
||||
|
||||
.defs.c:
|
||||
(cd $(srcdir)\
|
||||
&& $(PYGTK_CODEGEN) \
|
||||
--register $(PYGTK_DEFSDIR)/gdk-types.defs \
|
||||
--register $(PYGTK_DEFSDIR)/gtk-types.defs \
|
||||
--override $*.override \
|
||||
--prefix py$* $*.defs) > gen-$*.c \
|
||||
&& cp gen-$*.c $*.c \
|
||||
&& rm -f gen-$*.c
|
@ -62,7 +62,7 @@
|
||||
(return-type "GType")
|
||||
)
|
||||
|
||||
(define-function browser_startup
|
||||
(define-function startup
|
||||
(c-name "sugar_browser_startup")
|
||||
(parameters
|
||||
'("const-char*" "profile_path")
|
||||
@ -71,7 +71,7 @@
|
||||
(return-type "gboolean")
|
||||
)
|
||||
|
||||
(define-function browser_shutdown
|
||||
(define-function shutdown
|
||||
(c-name "sugar_browser_shutdown")
|
||||
(return-type "none")
|
||||
)
|
||||
@ -182,21 +182,4 @@
|
||||
(return-type "gint")
|
||||
)
|
||||
|
||||
(define-function hippo_canvas_image_set_image_from_gdk_pixbuf
|
||||
(c-name "sugar_hippo_canvas_image_set_image_from_gdk_pixbuf")
|
||||
(return-type "none")
|
||||
(parameters
|
||||
'("GObject*" "image")
|
||||
'("GdkPixbuf*" "pixbuf")
|
||||
)
|
||||
)
|
||||
|
||||
(define-function cairo_surface_from_gdk_pixbuf
|
||||
(c-name "sugar_cairo_surface_from_gdk_pixbuf")
|
||||
(return-type "cairo_surface_t*")
|
||||
(parameters
|
||||
'("GdkPixbuf*" "pixbuf")
|
||||
)
|
||||
)
|
||||
|
||||
(include "gtkmozembed.defs")
|
80
sugar/browser/_sugarbrowser.override
Normal file
80
sugar/browser/_sugarbrowser.override
Normal file
@ -0,0 +1,80 @@
|
||||
/* -*- Mode: C; c-basic-offset: 4 -*- */
|
||||
%%
|
||||
headers
|
||||
#include <Python.h>
|
||||
|
||||
#include "pygobject.h"
|
||||
#include "sugar-browser.h"
|
||||
#include "sugar-address-entry.h"
|
||||
#include "sugar-download-manager.h"
|
||||
#include "sugar-download.h"
|
||||
|
||||
#include <pygtk/pygtk.h>
|
||||
#include <glib.h>
|
||||
|
||||
%%
|
||||
modulename _sugarbrowser
|
||||
%%
|
||||
import gobject.GObject as PyGObject_Type
|
||||
import gtk.Entry as PyGtkEntry_Type
|
||||
import gtk.gdk.Screen as PyGdkScreen_Type
|
||||
import gtk.gdk.Pixbuf as PyGdkPixbuf_Type
|
||||
import hippo.CanvasImage as HippoCanvasImage_Type
|
||||
%%
|
||||
ignore-glob
|
||||
*_get_type
|
||||
_*
|
||||
%%
|
||||
include
|
||||
gtkmozembed.override
|
||||
%%
|
||||
override-slot SugarBrowserMetadata.tp_getattr
|
||||
static PyObject *
|
||||
_wrap_sugar_browser_metadata_tp_getattr(PyObject *self, char *attr)
|
||||
{
|
||||
SugarBrowserMetadata *metadata = pyg_boxed_get(self, SugarBrowserMetadata);
|
||||
|
||||
if (!strcmp(attr, "__members__"))
|
||||
return Py_BuildValue("[s]", "filename");
|
||||
else if (!strcmp(attr, "filename")) {
|
||||
if (metadata->filename) {
|
||||
return PyString_FromString(metadata->filename);
|
||||
} else {
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
%%
|
||||
override-slot SugarBrowserEvent.tp_getattr
|
||||
static PyObject *
|
||||
_wrap_sugar_browser_event_tp_getattr(PyObject *self, char *attr)
|
||||
{
|
||||
SugarBrowserEvent *event = pyg_boxed_get(self, SugarBrowserEvent);
|
||||
|
||||
if (!strcmp(attr, "__members__"))
|
||||
return Py_BuildValue("[sss]", "image_uri", "button", "image_name");
|
||||
else if (!strcmp(attr, "image_uri")) {
|
||||
if (event->image_uri) {
|
||||
return PyString_FromString(event->image_uri);
|
||||
} else {
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(attr, "image_name")) {
|
||||
if (event->image_name) {
|
||||
return PyString_FromString(event->image_name);
|
||||
} else {
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(attr, "button"))
|
||||
return PyInt_FromLong(event->button);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
%%
|
32
sugar/browser/_sugarbrowsermodule.c
Normal file
32
sugar/browser/_sugarbrowsermodule.c
Normal file
@ -0,0 +1,32 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "xulrunner.h"
|
||||
|
||||
/* include this first, before NO_IMPORT_PYGOBJECT is defined */
|
||||
#include <pygobject.h>
|
||||
|
||||
void py_sugarbrowser_register_classes (PyObject *d);
|
||||
|
||||
extern PyMethodDef py_sugarbrowser_functions[];
|
||||
|
||||
DL_EXPORT(void)
|
||||
init_sugarbrowser(void)
|
||||
{
|
||||
PyObject *m, *d;
|
||||
|
||||
xulrunner_startup();
|
||||
|
||||
init_pygobject ();
|
||||
|
||||
m = Py_InitModule ("_sugarbrowser", py_sugarbrowser_functions);
|
||||
d = PyModule_GetDict (m);
|
||||
|
||||
py_sugarbrowser_register_classes (d);
|
||||
py_sugarbrowser_add_constants(m, "GTK_MOZ_EMBED_");
|
||||
|
||||
if (PyErr_Occurred ()) {
|
||||
Py_FatalError ("can't initialise module _sugarbrowser");
|
||||
}
|
||||
}
|
@ -22,15 +22,15 @@ import pygtk
|
||||
pygtk.require('2.0')
|
||||
import gtk
|
||||
|
||||
import _sugar
|
||||
import sugar.browser
|
||||
|
||||
# Main window
|
||||
window = gtk.Window()
|
||||
window.connect("destroy", lambda w: gtk.main_quit())
|
||||
|
||||
_sugar.browser_startup(os.path.expanduser('~/.sugar-browser-test'), 'test')
|
||||
sugar.browser.startup(os.path.expanduser('~/.sugar-browser-test'), 'test')
|
||||
|
||||
browser = _sugar.Browser()
|
||||
browser = sugar.browser.Browser()
|
||||
window.add(browser)
|
||||
browser.show()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user