示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
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')
示例#6
0
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')
示例#7
0
def test_store_source_none():
    assert userscripts.store_source(None) == {}
示例#8
0
def test_store_source_none():
    assert userscripts.store_source(None) == {}