tqt wallet>info: show derivation path prefix for keystore - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 5215582b83a7709ca6baadd1e1c5fd5fd1e449e9 DIR parent 64a94e95225bdd62fd5aa8a6dec5ac27e03b9dae HTML Author: SomberNight <somber.night@protonmail.com> Date: Fri, 28 Aug 2020 18:22:26 +0200 qt wallet>info: show derivation path prefix for keystore closes #4700 Diffstat: M electrum/gui/qt/main_window.py | 32 +++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) --- DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py t@@ -2308,7 +2308,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): def show_wallet_info(self): dialog = WindowModalDialog(self, _("Wallet Information")) dialog.setMinimumSize(500, 100) - mpk_list = self.wallet.get_master_public_keys() vbox = QVBoxLayout() wallet_type = self.wallet.db.get('wallet_type', '') if self.wallet.is_watching_only(): t@@ -2353,17 +2352,30 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): labels_clayout = None if self.wallet.is_deterministic(): + keystores = self.wallet.get_keystores() + mpk_text = ShowQRTextEdit() mpk_text.setMaximumHeight(150) mpk_text.addCopyButton(self.app) - def show_mpk(index): - mpk_text.setText(mpk_list[index]) + der_path_hbox = QHBoxLayout() + der_path_hbox.setContentsMargins(0, 0, 0, 0) + + der_path_hbox.addWidget(QLabel(_("Derivation path") + ':')) + der_path_text = QLabel() + der_path_text.setTextInteractionFlags(Qt.TextSelectableByMouse) + der_path_hbox.addWidget(der_path_text) + der_path_hbox.addStretch() + + def select_ks(index): + ks = keystores[index] + mpk_text.setText(ks.get_master_public_key()) mpk_text.repaint() # macOS hack for #4777 + der_path_text.setText(ks.get_derivation_prefix() or _("unknown")) + der_path_text.repaint() # macOS hack for #4777 # only show the combobox in case multiple accounts are available - if len(mpk_list) > 1: - # only show the combobox if multiple master keys are defined + if len(keystores) > 1: def label(idx, ks): if isinstance(self.wallet, Multisig_Wallet) and hasattr(ks, 'label'): return _("cosigner") + f' {idx+1}: {ks.get_type_text()} {ks.label}' t@@ -2372,15 +2384,15 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): labels = [label(idx, ks) for idx, ks in enumerate(self.wallet.get_keystores())] - on_click = lambda clayout: show_mpk(clayout.selected_index()) - labels_clayout = ChoicesLayout(_("Master Public Keys"), labels, on_click) + on_click = lambda clayout: select_ks(clayout.selected_index()) + labels_clayout = ChoicesLayout(_("Select keystore"), labels, on_click) vbox.addLayout(labels_clayout.layout()) labels_clayout.selected_index() - else: - vbox.addWidget(QLabel(_("Master Public Key"))) - show_mpk(0) + select_ks(0) + vbox.addWidget(QLabel(_("Master Public Key"))) vbox.addWidget(mpk_text) + vbox.addLayout(der_path_hbox) vbox.addStretch(1) btn_export_info = run_hook('wallet_info_buttons', self, dialog)