URI: 
       tget_master_public_keys - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit a1daba6afeb67b4688b5e01b37ad2ccd5d35b6ac
   DIR parent a3dd9f700cefc74ea760aa0678f3e03c65dc7b9a
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Fri, 25 Apr 2014 10:16:07 +0200
       
       get_master_public_keys
       
       Diffstat:
         M gui/qt/main_window.py               |      70 ++++++-------------------------
         M lib/commands.py                     |       2 +-
         M lib/wallet.py                       |      23 +++++++++++++++++++----
       
       3 files changed, 32 insertions(+), 63 deletions(-)
       ---
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -353,7 +353,7 @@ class ElectrumWindow(QMainWindow):
        
                wallet_menu.addAction(_("&Password"), self.change_password_dialog)
                wallet_menu.addAction(_("&Seed"), self.show_seed_dialog)
       -        wallet_menu.addAction(_("&Master Public Key"), self.show_master_public_key)
       +        wallet_menu.addAction(_("&Master Public Keys"), self.show_master_public_keys)
        
                wallet_menu.addSeparator()
                labels_menu = wallet_menu.addMenu(_("&Labels"))
       t@@ -1524,70 +1524,24 @@ class ElectrumWindow(QMainWindow):
        
        
        
       -    def show_master_public_key_old(self):
       -        dialog = QDialog(self)
       -        dialog.setModal(1)
       -        dialog.setWindowTitle(_("Master Public Key"))
       -
       -        main_text = QTextEdit()
       -        main_text.setText(self.wallet.get_master_public_key())
       -        main_text.setReadOnly(True)
       -        main_text.setMaximumHeight(170)
       -        qrw = QRCodeWidget(self.wallet.get_master_public_key())
       -
       -        ok_button = QPushButton(_("OK"))
       -        ok_button.setDefault(True)
       -        ok_button.clicked.connect(dialog.accept)
       -
       -        main_layout = QGridLayout()
       -        main_layout.addWidget(QLabel(_('Your Master Public Key is:')), 0, 0, 1, 2)
       -
       -        main_layout.addWidget(main_text, 1, 0)
       -        main_layout.addWidget(qrw, 1, 1 )
       -
       -        vbox = QVBoxLayout()
       -        vbox.addLayout(main_layout)
       -        vbox.addLayout(close_button(dialog))
       -        dialog.setLayout(vbox)
       -        dialog.exec_()
       -
        
       -    def show_master_public_key(self):
       -
       -        if self.wallet.seed_version == 4:
       -            self.show_master_public_key_old()
       -            return
       +    def show_master_public_keys(self):
        
                dialog = QDialog(self)
                dialog.setModal(1)
                dialog.setWindowTitle(_("Master Public Keys"))
        
       -        mpk_text = QTextEdit()
       -        mpk_text.setReadOnly(True)
       -        mpk_text.setMaximumHeight(170)
       -        mpk_qrw = QRCodeWidget()
       -
                main_layout = QGridLayout()
       -
       -        main_layout.addWidget(QLabel(_('Key')), 1, 0)
       -        main_layout.addWidget(mpk_text, 1, 1)
       -        main_layout.addWidget(mpk_qrw, 1, 2)
       -
       -        def update(key):
       -            xpub = self.wallet.master_public_keys[str(key)]
       -            mpk_text.setText(xpub)
       -            mpk_qrw.set_addr(xpub)
       -            mpk_qrw.update_qr()
       -
       -        key_selector = QComboBox()
       -        keys = sorted(self.wallet.master_public_keys.keys())
       -        key_selector.addItems(keys)
       -
       -        main_layout.addWidget(QLabel(_('Derivation:')), 0, 0)
       -        main_layout.addWidget(key_selector, 0, 1)
       -        dialog.connect(key_selector,SIGNAL("activated(QString)"),update)
       -
       -        update(keys[0])
       +        mpk_dict = self.wallet.get_master_public_keys()
       +        i = 0
       +        for key, value in mpk_dict.items():
       +            main_layout.addWidget(QLabel(key), i, 0)
       +            mpk_text = QTextEdit()
       +            mpk_text.setReadOnly(True)
       +            mpk_text.setMaximumHeight(170)
       +            mpk_text.setText(value)
       +            main_layout.addWidget(mpk_text, i + 1, 0)
       +            i += 2
        
                vbox = QVBoxLayout()
                vbox.addLayout(main_layout)
   DIR diff --git a/lib/commands.py b/lib/commands.py
       t@@ -247,7 +247,7 @@ class Commands:
                return electrum.ELECTRUM_VERSION
         
            def getmpk(self):
       -        return self.wallet.get_master_public_key()
       +        return self.wallet.get_master_public_keys()
        
            def getseed(self):
                mnemonic = self.wallet.get_mnemonic(self.password)
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -519,8 +519,13 @@ class NewWallet:
                if s is None: return False
                return s[0] == 1
        
       -    def get_master_public_key(self):
       -        return self.storage.get("master_public_keys")["m/"]
       +    def get_master_public_keys(self):
       +        out = {}
       +        for k, account in self.accounts.items():
       +            name = self.get_account_name(k)
       +            mpk_text = '\n\n'.join( account.get_master_pubkeys() )
       +            out[name] = mpk_text
       +        return out
        
            def get_master_private_key(self, account, password):
                k = self.master_private_keys.get(account)
       t@@ -1497,6 +1502,10 @@ class Wallet_2of2(NewWallet):
                account = BIP32_Account_2of2({'xpub':xpub1, 'xpub2':xpub2})
                self.add_account('m/', account)
        
       +    def get_master_public_keys(self):
       +        xpub1 = self.master_public_keys.get("m/")
       +        xpub2 = self.master_public_keys.get("cold/")
       +        return {'hot':xpub1, 'cold':xpub2}
        
        class Wallet_2of3(Wallet_2of2):
        
       t@@ -1511,6 +1520,11 @@ class Wallet_2of3(Wallet_2of2):
                account = BIP32_Account_2of3({'xpub':xpub1, 'xpub2':xpub2, 'xpub3':xpub3})
                self.add_account('m/', account)
        
       +    def get_master_public_keys(self):
       +        xpub1 = self.master_public_keys.get("m/")
       +        xpub2 = self.master_public_keys.get("cold/")
       +        xpub3 = self.master_public_keys.get("remote/")
       +        return {'hot':xpub1, 'cold':xpub2, 'remote':xpub3}
        
        
        class WalletSynchronizer(threading.Thread):
       t@@ -1720,8 +1734,9 @@ class OldWallet(NewWallet):
                mpk = OldAccount.mpk_from_seed(seed)
                self.storage.put('master_public_key', mpk, True)
        
       -    def get_master_public_key(self):
       -        return self.storage.get("master_public_key")
       +    def get_master_public_keys(self):
       +        mpk = self.storage.get("master_public_key")
       +        return {'Main Account':mpk}
        
            def create_accounts(self, password):
                mpk = self.get_master_public_key()