WebBrowser/Tools/Scripts.py

branch
QtWebEngine
changeset 4725
b19ff70ba509
child 4726
c26e2a2dc0cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WebBrowser/Tools/Scripts.py	Sat Feb 06 17:43:59 2016 +0100
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2016 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module containing function to generate JavaScript code.
+"""
+
+from __future__ import unicode_literals
+
+from .WebBrowserTools import readAllFileContents
+
+
+def setupWebChannel():
+    """
+    Function generating  a script to setup the web channel.
+    
+    @return script to setup the web channel
+    @rtype str
+    """
+    source = """
+        (function() {{
+            {0}
+            
+            function registerExternal(e) {{
+                window.external = e;
+                if (window.external) {{
+                    var event = document.createEvent('Event');
+                    event.initEvent('_eric_external_created', true, true);
+                    document.dispatchEvent(event);
+                }}
+            }}
+            
+            if (self !== top) {{
+                if (top.external)
+                    registerExternal(top.external);
+                else
+                    top.document.addEventListener(
+                        '_eric_external_created', function() {{
+                            registerExternal(top.external);
+                    }});
+                return;
+            }}
+
+            new QWebChannel(qt.webChannelTransport, function(channel) {{
+               registerExternal(channel.objects.eric_object);
+            }});
+
+            }})()"""
+    
+    return source.format(readAllFileContents(":/javascript/qwebchannel.js"))
+
+
+def setStyleSheet(css):
+    """
+    Function generating a script to set a user style sheet.
+    
+    @return script to set a user style sheet
+    @rtype str
+    """
+    source = """
+        (function() {{
+            var css = document.createElement('style');
+            css.setAttribute('type', 'text/css');
+            css.appendChild(document.createTextNode('{0}'));
+            document.getElementsByTagName('head')[0].appendChild(css);
+        }})()"""
+    
+    style = css.replace("'", "\\'").replace("\n", "\\n")
+    return source.format(style)

eric ide

mercurial