def run_userscript(self, cmd, *args: {'nargs': '*'}): """Run an userscript given as argument. Args: cmd: The userscript to run. args: Arguments to pass to the userscript. """ cmd = os.path.expanduser(cmd) env = { 'QUTE_MODE': 'command', } idx = self._current_index() tabbed_browser = self._tabbed_browser() if idx != -1: env['QUTE_TITLE'] = tabbed_browser.page_title(idx) webview = tabbed_browser.currentWidget() if webview is None: mainframe = None else: if webview.hasSelection(): env['QUTE_SELECTED_TEXT'] = webview.selectedText() env['QUTE_SELECTED_HTML'] = webview.selectedHtml() mainframe = webview.page().mainFrame() try: url = tabbed_browser.current_url() except qtutils.QtValueError: pass else: env['QUTE_URL'] = url.toString(QUrl.FullyEncoded) env.update(userscripts.store_source(mainframe)) userscripts.run(cmd, *args, win_id=self._win_id, env=env)
def _call_userscript(self, elem, context): """Call a userscript from a hint. Args: elem: The QWebElement to use in the userscript. context: The HintContext to use. """ cmd = context.args[0] args = context.args[1:] frame = context.mainframe env = {"QUTE_MODE": "hints", "QUTE_SELECTED_TEXT": str(elem), "QUTE_SELECTED_HTML": elem.toOuterXml()} url = self._resolve_url(elem, context.baseurl) if url is not None: env["QUTE_URL"] = url.toString(QUrl.FullyEncoded) env.update(userscripts.store_source(frame)) userscripts.run(cmd, *args, win_id=self._win_id, env=env)
def _call_userscript(self, elem, context): """Call a userscript from a hint. Args: elem: The QWebElement to use in the userscript. context: The HintContext to use. """ cmd = context.args[0] args = context.args[1:] frame = context.mainframe env = { 'QUTE_MODE': 'hints', 'QUTE_SELECTED_TEXT': str(elem), 'QUTE_SELECTED_HTML': elem.toOuterXml(), } url = self._resolve_url(elem, context.baseurl) if url is not None: env['QUTE_URL'] = url.toString(QUrl.FullyEncoded) env.update(userscripts.store_source(frame)) userscripts.run(cmd, *args, win_id=self._win_id, env=env)
def test_store_source(stubs): expected_text = 'This is text' expected_html = 'This is HTML' frame = stubs.FakeWebFrame(plaintext=expected_text, html=expected_html) env = userscripts.store_source(frame) with open(env['QUTE_TEXT'], 'r', encoding='utf-8') as f: text = f.read() with open(env['QUTE_HTML'], 'r', encoding='utf-8') as f: html = f.read() os.remove(env['QUTE_TEXT']) os.remove(env['QUTE_HTML']) assert set(env.keys()) == {'QUTE_TEXT', 'QUTE_HTML'} assert text == expected_text assert html == expected_html assert env['QUTE_TEXT'].endswith('.txt') assert env['QUTE_HTML'].endswith('.html')
def test_store_source_none(): assert userscripts.store_source(None) == {}