tqt console: expose more refs, and fix auto-complete for >2 depth - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit 5e0179dac46a8c03f9795742171ba9bcf0407716 (DIR) parent 9037f25da13873c751a1a333b43bae29296b0c13 (HTM) Author: SomberNight <somber.night@protonmail.com> Date: Mon, 29 Oct 2018 00:20:45 +0100 qt console: expose more refs, and fix auto-complete for >2 depth Diffstat: M electrum/gui/qt/console.py | 25 ++++++++++++++----------- M electrum/gui/qt/main_window.py | 19 +++++++++++++------ 2 files changed, 27 insertions(+), 17 deletions(-) --- (DIR) diff --git a/electrum/gui/qt/console.py b/electrum/gui/qt/console.py t@@ -309,31 +309,34 @@ class Console(QtWidgets.QPlainTextEdit): super(Console, self).keyPressEvent(event) - - def completions(self): cmd = self.getCommand() lastword = re.split(' |\(|\)',cmd)[-1] beginning = cmd[0:-len(lastword)] path = lastword.split('.') + prefix = '.'.join(path[:-1]) + prefix = (prefix + '.') if prefix else prefix ns = self.namespace.keys() if len(path) == 1: ns = ns - prefix = '' else: + assert len(path) > 1 obj = self.namespace.get(path[0]) - prefix = path[0] + '.' - ns = dir(obj) - + try: + for attr in path[1:-1]: + obj = getattr(obj, attr) + except AttributeError: + ns = [] + else: + ns = dir(obj) completions = [] - for x in ns: - if x[0] == '_':continue - xx = prefix + x - if xx.startswith(lastword): - completions.append(xx) + for name in ns: + if name[0] == '_':continue + if name.startswith(path[-1]): + completions.append(prefix+name) completions.sort() if not completions: (DIR) diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py t@@ -42,6 +42,7 @@ from PyQt5.QtCore import * import PyQt5.QtCore as QtCore from PyQt5.QtWidgets import * +import electrum from electrum import (keystore, simple_config, ecc, constants, util, bitcoin, commands, coinchooser, paymentrequest) from electrum.bitcoin import COIN, is_address, TYPE_ADDRESS t@@ -1950,18 +1951,24 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): console.history = self.config.get("console-history",[]) console.history_index = len(console.history) - console.updateNamespace({'wallet' : self.wallet, - 'network' : self.network, - 'plugins' : self.gui_object.plugins, - 'window': self}) - console.updateNamespace({'util' : util, 'bitcoin':bitcoin}) + console.updateNamespace({ + 'wallet': self.wallet, + 'network': self.network, + 'plugins': self.gui_object.plugins, + 'window': self, + 'config': self.config, + 'electrum': electrum, + 'daemon': self.gui_object.daemon, + 'util': util, + 'bitcoin': bitcoin, + }) c = commands.Commands(self.config, self.wallet, self.network, lambda: self.console.set_json(True)) methods = {} def mkfunc(f, method): return lambda *args: f(method, args, self.password_dialog) for m in dir(c): - if m[0]=='_' or m in ['network','wallet']: continue + if m[0]=='_' or m in ['network','wallet','config']: continue methods[m] = mkfunc(c._run, m) console.updateNamespace(methods)