diff options
-rw-r--r-- | python/hulahop.defs | 6 | ||||
-rw-r--r-- | python/webview.py | 53 | ||||
-rw-r--r-- | src/hulahop-web-view.cpp | 20 | ||||
-rw-r--r-- | src/hulahop-web-view.h | 1 |
4 files changed, 73 insertions, 7 deletions
diff --git a/python/hulahop.defs b/python/hulahop.defs index 49dff91..7c17625 100644 --- a/python/hulahop.defs +++ b/python/hulahop.defs @@ -5,6 +5,12 @@ (gtype-id "HULAHOP_TYPE_WEB_VIEW") ) +(define-method create_window + (of-object "HulahopWebView") + (c-name "hulahop_web_view_create_window") + (return-type "none") +) + (define-method get_browser (of-object "HulahopWebView") (c-name "hulahop_web_view_get_browser") diff --git a/python/webview.py b/python/webview.py index 81465fe..9c077a9 100644 --- a/python/webview.py +++ b/python/webview.py @@ -17,12 +17,65 @@ from hulahop import _hulahop +import xpcom from xpcom import components from xpcom.components import interfaces +class _Chrome: + _com_interfaces_ = interfaces.nsIWebBrowserChrome, \ + interfaces.nsIEmbeddingSiteWindow + + # nsIWebBrowserChrome + def destroyBrowserWindow(self): + pass + + def exitModalEventLoop(self, status): + pass + + def isWindowModal(self): + return False + + def setStatus(self, statusType, status): + pass + + def showAsModal(self): + pass + + def sizeBrowserTo(self, cx, cy): + pass + + # nsIEmbeddingSiteWindow + def getDimensions(self, flags): + pass + + def setDimensions(self, flags, x, y, cx, cy): + pass + + def setFocus(self): + pass + + def get_title(self): + return '' + + def set_title(self, title): + print title + + def get_visibility(self): + return True + + def set_visibility(self, visibility): + pass + class WebView(_hulahop.WebView): def __init__(self): _hulahop.WebView.__init__(self) + + self._chrome = xpcom.server.WrapObject( + _Chrome(), interfaces.nsIEmbeddingSiteWindow) + weak_ref = xpcom.client.WeakReference(self._chrome) + self.browser.containerWindow = self._chrome + + self.create_window() def get_window_root(self): return _hulahop.WebView.get_window_root(self) diff --git a/src/hulahop-web-view.cpp b/src/hulahop-web-view.cpp index 3fcc3a7..d23bf03 100644 --- a/src/hulahop-web-view.cpp +++ b/src/hulahop-web-view.cpp @@ -219,13 +219,6 @@ hulahop_web_view_init(HulahopWebView *web_view) rv = web_view->base_window->InitWindow(web_view->offscreen_window, nsnull, 0, 0, 100, 100); g_assert(NS_SUCCEEDED(rv)); - - rv = web_view->base_window->Create(); - g_assert(NS_SUCCEEDED(rv)); - - web_view->mozilla_widget = GTK_BIN(web_view->offscreen_window)->child; - - GTK_WIDGET_UNSET_FLAGS(GTK_WIDGET(web_view), GTK_NO_WINDOW); } PyObject * @@ -266,3 +259,16 @@ hulahop_web_view_get_doc_shell(HulahopWebView *web_view) return PyObject_FromNSInterface(docShell, NS_GET_IID(nsIDocShell)); } + +void +hulahop_web_view_create_window(HulahopWebView *web_view) +{ + nsresult rv; + + rv = web_view->base_window->Create(); + g_assert(NS_SUCCEEDED(rv)); + + web_view->mozilla_widget = GTK_BIN(web_view->offscreen_window)->child; + + GTK_WIDGET_UNSET_FLAGS(GTK_WIDGET(web_view), GTK_NO_WINDOW); +} diff --git a/src/hulahop-web-view.h b/src/hulahop-web-view.h index 84db17b..68610b5 100644 --- a/src/hulahop-web-view.h +++ b/src/hulahop-web-view.h @@ -36,6 +36,7 @@ typedef struct _HulahopWebViewClass HulahopWebViewClass; #define HULAHOP_WEB_VIEW_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), HULAHOP_TYPE_WEB_VIEW, HulahopWebViewClass)) GType hulahop_web_view_get_type (void); +void hulahop_web_view_create_window (HulahopWebView *web_view); PyObject *hulahop_web_view_get_browser (HulahopWebView *web_view); PyObject *hulahop_web_view_get_window_root (HulahopWebView *web_view); PyObject *hulahop_web_view_get_doc_shell (HulahopWebView *web_view); |