Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@localhost.localdomain>2007-12-22 15:21:26 (GMT)
committer Marco Pesenti Gritti <marco@localhost.localdomain>2007-12-22 15:23:17 (GMT)
commitce5a5eab999ff5ef4a44b35fe1b731262036bcb2 (patch)
tree8605e0623debf48d539be20ff501a789afd4fe97
parent27718d6f70fc36a33253d05d13d10e9ead12445b (diff)
Add support for XUL dialogs. Fix #5487
-rw-r--r--browser.py37
1 files changed, 34 insertions, 3 deletions
diff --git a/browser.py b/browser.py
index ab972e7..7de97af 100644
--- a/browser.py
+++ b/browser.py
@@ -15,12 +15,13 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+import os
+import time
import logging
from gettext import gettext as _
import gobject
-import os
-import time
+import gtk
import xpcom
from xpcom.nsError import *
from xpcom import components
@@ -65,7 +66,7 @@ class GetSourceListener(gobject.GObject):
def onSecurityChange(self, progress, request, state):
pass
-
+
class Browser(WebView):
AGENT_SHEET = os.path.join(activity.get_bundle_path(), 'agent-stylesheet.css')
@@ -167,3 +168,33 @@ class Browser(WebView):
if contentViewer is not None:
markupDocumentViewer = contentViewer.queryInterface(interfaces.nsIMarkupDocumentViewer)
markupDocumentViewer.fullZoom -= _ZOOM_AMOUNT
+
+class XULDialog(gtk.Window):
+ def __init__(self):
+ gtk.Window.__init__(self)
+
+ self.view = WebView()
+ self.add(self.view)
+
+ self.connect('realize', self.__realize_cb)
+
+ def __realize_cb(self, window):
+ self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
+
+class WindowCreator:
+ _com_interfaces_ = interfaces.nsIWindowCreator
+
+ def createChromeWindow(self, parent, chrome_flags):
+ dialog = XULDialog()
+ browser = dialog.view.browser
+
+ dialog.view.is_chrome = True
+ item = browser.queryInterface(interfaces.nsIDocShellTreeItem)
+ item.itemType = interfaces.nsIDocShellTreeItem.typeChromeWrapper
+
+ return browser.containerWindow
+
+window_creator = WindowCreator()
+cls = components.classes['@mozilla.org/embedcomp/window-watcher;1']
+window_watcher = cls.getService(interfaces.nsIWindowWatcher)
+window_watcher.setWindowCreator(window_creator)