master privae keys dialog

This commit is contained in:
ThomasV 2013-10-01 17:33:39 +02:00
parent a8ad85de68
commit 5136e59e14
3 changed files with 47 additions and 22 deletions

View File

@ -259,7 +259,7 @@ class ElectrumWindow(QMainWindow):
self.wallet = wallet self.wallet = wallet
title = 'Electrum ' + self.wallet.electrum_version + ' - ' + self.wallet.storage.path title = 'Electrum ' + self.wallet.electrum_version + ' - ' + self.wallet.storage.path
if not self.wallet.seed: title += ' [%s]' % (_('seedless')) if self.wallet.is_watching_only(): title += ' [%s]' % (_('watching only'))
self.setWindowTitle( title ) self.setWindowTitle( title )
self.update_wallet() self.update_wallet()
# Once GUI has been initialized check if we want to announce something since the callback has been called before the GUI was initialized # Once GUI has been initialized check if we want to announce something since the callback has been called before the GUI was initialized
@ -376,7 +376,6 @@ class ElectrumWindow(QMainWindow):
wallet_menu.addSeparator() wallet_menu.addSeparator()
#if self.wallet.seed:
show_seed = wallet_menu.addAction(_("&Seed")) show_seed = wallet_menu.addAction(_("&Seed"))
show_seed.triggered.connect(self.show_seed_dialog) show_seed.triggered.connect(self.show_seed_dialog)
@ -1347,7 +1346,7 @@ class ElectrumWindow(QMainWindow):
def update_buttons_on_seed(self): def update_buttons_on_seed(self):
if self.wallet.seed: if not self.wallet.is_watching_only():
self.seed_button.show() self.seed_button.show()
self.password_button.show() self.password_button.show()
self.send_button.setText(_("Send")) self.send_button.setText(_("Send"))
@ -1487,18 +1486,29 @@ class ElectrumWindow(QMainWindow):
@protected @protected
def show_seed_dialog(self, password): def show_seed_dialog(self, password):
if not self.wallet.seed: if self.wallet.is_watching_only():
QMessageBox.information(self, _('Message'), _('No seed'), _('OK')) QMessageBox.information(self, _('Message'), _('This is a watching-only wallet'), _('OK'))
return return
if self.wallet.seed:
try: try:
seed = self.wallet.decode_seed(password) seed = self.wallet.decode_seed(password)
except: except:
QMessageBox.warning(self, _('Error'), _('Incorrect Password'), _('OK')) QMessageBox.warning(self, _('Error'), _('Incorrect Password'), _('OK'))
return return
from seed_dialog import SeedDialog from seed_dialog import SeedDialog
d = SeedDialog(self) d = SeedDialog(self)
d.show_seed(seed, self.wallet.imported_keys) d.show_seed(seed, self.wallet.imported_keys)
else:
l = {}
for k in self.wallet.master_private_keys.keys():
pk = self.wallet.get_master_private_key(k, password)
l[k] = pk
from seed_dialog import PrivateKeysDialog
d = PrivateKeysDialog(self,l)
d.exec_()

View File

@ -22,6 +22,7 @@ import PyQt4.QtCore as QtCore
from electrum.i18n import _ from electrum.i18n import _
from electrum import mnemonic from electrum import mnemonic
from qrcodewidget import QRCodeWidget from qrcodewidget import QRCodeWidget
from util import close_button
class SeedDialog(QDialog): class SeedDialog(QDialog):
def __init__(self, parent): def __init__(self, parent):
@ -35,6 +36,24 @@ class SeedDialog(QDialog):
self.exec_() self.exec_()
class PrivateKeysDialog(QDialog):
def __init__(self, parent, private_keys):
QDialog.__init__(self, parent)
self.setModal(1)
self.setWindowTitle('Electrum' + ' - ' + _('Master Private Keys'))
self.parent = parent
vbox = QVBoxLayout(self)
vbox.addWidget(QLabel(_("The seed has been removed from the wallet. It contains the following master private keys")+ ":"))
for k,v in sorted(private_keys.items()):
vbox.addWidget(QLabel(k))
vbox.addWidget(QLineEdit(v))
vbox.addLayout(close_button(self))
def make_seed_dialog(self, seed, imported_keys): def make_seed_dialog(self, seed, imported_keys):
brainwallet = ' '.join(mnemonic.mn_encode(seed)) brainwallet = ' '.join(mnemonic.mn_encode(seed))
@ -60,12 +79,7 @@ def make_seed_dialog(self, seed, imported_keys):
qrw = QRCodeWidget(seed) qrw = QRCodeWidget(seed)
ok_button = QPushButton(_("OK"))
ok_button.setDefault(True)
ok_button.clicked.connect(self.accept)
grid = QGridLayout() grid = QGridLayout()
#main_layout.addWidget(logo, 0, 0)
grid.addWidget(logo, 0, 0) grid.addWidget(logo, 0, 0)
grid.addWidget(label1, 0, 1) grid.addWidget(label1, 0, 1)
@ -78,9 +92,6 @@ def make_seed_dialog(self, seed, imported_keys):
vbox.addLayout(grid) vbox.addLayout(grid)
vbox.addWidget(label2) vbox.addWidget(label2)
hbox = QHBoxLayout() vbox.addLayout(close_button(self))
hbox.addStretch(1)
hbox.addWidget(ok_button)
vbox.addLayout(hbox)
self.setLayout(vbox) self.setLayout(vbox)

View File

@ -333,6 +333,10 @@ class Wallet:
self.master_private_keys.pop(k) self.master_private_keys.pop(k)
self.storage.put('master_private_keys', self.master_private_keys, True) self.storage.put('master_private_keys', self.master_private_keys, True)
def is_watching_only(self):
return (self.seed == '') and (self.master_private_keys == {})
def account_id(self, account_type, i): def account_id(self, account_type, i):
if account_type == '1': if account_type == '1':