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: ")
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))
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))
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)
def add(self, text): message.ask_async("test message", usertypes.PromptMode.text, self.handler, text="Enter blaat")