def _init_stylesheet(profile): """Initialize custom stylesheets. Mostly inspired by QupZilla: https://github.com/QupZilla/qupzilla/blob/v2.0/src/lib/app/mainapplication.cpp#L1063-L1101 https://github.com/QupZilla/qupzilla/blob/v2.0/src/lib/tools/scripts.cpp#L119-L132 FIXME:qtwebengine Use QWebEngineStyleSheet once that's available https://codereview.qt-project.org/#/c/148671/ """ old_script = profile.scripts().findScript('_qute_stylesheet') if not old_script.isNull(): profile.scripts().remove(old_script) css = shared.get_user_stylesheet() source = """ (function() {{ var css = document.createElement('style'); css.setAttribute('type', 'text/css'); css.appendChild(document.createTextNode('{}')); document.getElementsByTagName('head')[0].appendChild(css); }})() """.format(javascript.string_escape(css)) script = QWebEngineScript() script.setName('_qute_stylesheet') script.setInjectionPoint(QWebEngineScript.DocumentReady) script.setWorldId(QWebEngineScript.ApplicationWorld) script.setRunsOnSubFrames(True) script.setSourceCode(source) profile.scripts().insert(script)
def _init_stylesheet(profile): """Initialize custom stylesheets. Partially inspired by QupZilla: https://github.com/QupZilla/qupzilla/blob/v2.0/src/lib/app/mainapplication.cpp#L1063-L1101 """ old_script = profile.scripts().findScript('_qute_stylesheet') if not old_script.isNull(): profile.scripts().remove(old_script) css = shared.get_user_stylesheet() source = '\n'.join([ '"use strict";', 'window._qutebrowser = window._qutebrowser || {};', utils.read_file('javascript/stylesheet.js'), javascript.assemble('stylesheet', 'set_css', css), ]) script = QWebEngineScript() script.setName('_qute_stylesheet') script.setInjectionPoint(QWebEngineScript.DocumentCreation) script.setWorldId(QWebEngineScript.ApplicationWorld) script.setRunsOnSubFrames(True) script.setSourceCode(source) profile.scripts().insert(script)
def _update_stylesheet(): """Update the custom stylesheet in existing tabs.""" css = shared.get_user_stylesheet() code = javascript.assemble('stylesheet', 'set_css', css) for win_id, window in objreg.window_registry.items(): # We could be in the middle of destroying a window here if sip.isdeleted(window): continue tab_registry = objreg.get('tab-registry', scope='window', window=win_id) for tab in tab_registry.values(): tab.run_js_async(code)
def _init_stylesheet(self): """Initialize custom stylesheets. Partially inspired by QupZilla: https://github.com/QupZilla/qupzilla/blob/v2.0/src/lib/app/mainapplication.cpp#L1063-L1101 """ self._remove_early_js('stylesheet') css = shared.get_user_stylesheet() js_code = javascript.wrap_global( 'stylesheet', utils.read_file('javascript/stylesheet.js'), javascript.assemble('stylesheet', 'set_css', css), ) self._inject_early_js('stylesheet', js_code, subframes=True)
def _set_user_stylesheet(settings): """Set the generated user-stylesheet.""" stylesheet = shared.get_user_stylesheet().encode('utf-8') url = urlutils.data_url('text/css;charset=utf-8', stylesheet) settings.setUserStyleSheetUrl(url)
def _update_stylesheet(self): """Update the custom stylesheet in existing tabs.""" css = shared.get_user_stylesheet() code = javascript.assemble('stylesheet', 'set_css', css) self.run_js_async(code)