From 5215582b83a7709ca6baadd1e1c5fd5fd1e449e9 Mon Sep 17 00:00:00 2001
From: SomberNight <somber.night@protonmail.com>
Date: Fri, 28 Aug 2020 18:22:26 +0200
Subject: [PATCH] qt wallet>info: show derivation path prefix for keystore

closes #4700
---
 electrum/gui/qt/main_window.py | 32 ++++++++++++++++++++++----------
 1 file changed, 22 insertions(+), 10 deletions(-)

diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
index 1be0eb25b..d56e4f0d4 100644
--- a/electrum/gui/qt/main_window.py
+++ b/electrum/gui/qt/main_window.py
@@ -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():
@@ -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}'
@@ -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)