Exemple #1
0
def shell_send(self, close=False, prefix='', quiet=False):
    ''' Executes program with current selection as stdin (may be none)'''
    maybeshell = '' if close else ' ; $SHELL'

    def _question_callback(program):
        def _selection_callback(text):
            if not text and not quiet:
                message.info("Nothing selected")

            def inthread():
                with tempfile.NamedTemporaryFile(mode='wt',
                                                 encoding='utf-8') as infile:
                    infile.write(text)
                    infile.flush()

                    tempname = '"' + infile.name + '"'
                    cmd = f"x-terminal-emulator-exe {prefix} 'cat {tempname} | {program} {maybeshell}'"
                    p = subprocess.Popen(['sh', '-c', cmd])
                    p.wait()

                    if p.returncode != 0 and not quiet:
                        message.error(
                            f'shell-send process "{cmd}" failed with: {p.returncode}'
                        )

            threading.Thread(target=inthread).start()

        caret = self._current_widget().caret
        caret.selection(callback=_selection_callback)

    message.ask_async("Shell send:",
                      usertypes.PromptMode.text,
                      _question_callback,
                      text="program: ")
Exemple #2
0
def prompt_save(url):
    """Prompt for a new quickmark name to be added and add it.

    Args:
        url: The quickmark url as a QUrl.
    """
    qtutils.ensure_valid(url)
    urlstr = url.toString(QUrl.RemovePassword | QUrl.FullyEncoded)
    message.ask_async("Add quickmark:", usertypes.PromptMode.text,
                      functools.partial(quickmark_add, urlstr))
Exemple #3
0
    def prompt_save(self, win_id, url):
        """Prompt for a new quickmark name to be added and add it.

        Args:
            win_id: The current window ID.
            url: The quickmark url as a QUrl.
        """
        if not url.isValid():
            urlutils.invalid_url_error(win_id, url, "save quickmark")
            return
        urlstr = url.toString(QUrl.RemovePassword | QUrl.FullyEncoded)
        message.ask_async(
            win_id, "Add quickmark:", usertypes.PromptMode.text,
            functools.partial(self.quickmark_add, win_id, urlstr))
Exemple #4
0
    def prompt_save(self, win_id, url):
        """Prompt for a new quickmark name to be added and add it.

        Args:
            win_id: The current window ID.
            url: The quickmark url as a QUrl.
        """
        if not url.isValid():
            urlutils.invalid_url_error(win_id, url, "save quickmark")
            return
        urlstr = url.toString(QUrl.RemovePassword | QUrl.FullyEncoded)
        message.ask_async(
            win_id, "Add quickmark:", usertypes.PromptMode.text,
            functools.partial(self.quickmark_add, win_id, urlstr))
Exemple #5
0
    def prompt_save(self, url):
        """Prompt for a new quickmark name to be added and add it.

        Args:
            url: The quickmark url as a QUrl.
        """
        if not url.isValid():
            urlutils.invalid_url_error(url, "save quickmark")
            return
        urlstr = url.toString(QUrl.RemovePassword | QUrl.FullyEncoded)
        message.ask_async(
            "Add quickmark:", usertypes.PromptMode.text,
            functools.partial(self.quickmark_add, urlstr),
            text="Please enter a quickmark name for<br/><b>{}</b>".format(
                html.escape(url.toDisplayString())), url=urlstr)
Exemple #6
0
 def add(self, text):
     message.ask_async("test message",
                       usertypes.PromptMode.text,
                       self.handler,
                       text="Enter blaat")