From 2a53e85e8d4ecb4bcebecfde1b34826bc4e88578 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Thu, 29 Jun 2017 18:23:10 +0200 Subject: [PATCH] fix #2452 --- gui/qt/installwizard.py | 93 ++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 42 deletions(-) diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py index 7d1d6c687..325d1f1b2 100644 --- a/gui/qt/installwizard.py +++ b/gui/qt/installwizard.py @@ -147,63 +147,73 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard): def run_and_get_wallet(self): - def on_filename(): + vbox = QVBoxLayout() + hbox = QHBoxLayout() + hbox.addWidget(QLabel(_('Wallet') + ':')) + self.name_e = QLineEdit() + hbox.addWidget(self.name_e) + button = QPushButton(_('Choose...')) + hbox.addWidget(button) + vbox.addLayout(hbox) + + self.msg_label = QLabel('') + vbox.addWidget(self.msg_label) + hbox2 = QHBoxLayout() + self.pw_e = QLineEdit('', self) + self.pw_e.setFixedWidth(150) + self.pw_e.setEchoMode(2) + self.pw_label = QLabel(_('Password') + ':') + hbox2.addWidget(self.pw_label) + hbox2.addWidget(self.pw_e) + hbox2.addStretch() + vbox.addLayout(hbox2) + self.set_layout(vbox, title=_('Electrum wallet')) + + def on_choose(): wallet_folder = os.path.dirname(self.storage.path) path = unicode(QFileDialog.getOpenFileName(self, "Select your wallet file", wallet_folder)) if path: self.name_e.setText(path) - self.storage = WalletStorage(path) - update_layout() - def update_layout(): - name = os.path.basename(self.storage.path) - vbox = QVBoxLayout() - hbox = QHBoxLayout() - hbox.addWidget(QLabel(_('Wallet') + ':')) - self.name_e = QLineEdit(text=name) - hbox.addWidget(self.name_e) - button = QPushButton(_('Choose...')) - button.clicked.connect(on_filename) - hbox.addWidget(button) - vbox.addLayout(hbox) - self.pw_e = None - if not self.storage.file_exists(): - msg = _("This file does not exist.") + '\n' \ - + _("Press 'Next' to create this wallet, or chose another file.") - vbox.addWidget(QLabel(msg)) - - elif self.storage.file_exists() and self.storage.is_encrypted(): - msg = _("This file is encrypted.") + '\n' + _('Enter your password or choose another file.') - vbox.addWidget(QLabel(msg)) - hbox2 = QHBoxLayout() - self.pw_e = QLineEdit('', self) - self.pw_e.setFixedWidth(150) - self.pw_e.setEchoMode(2) - hbox2.addWidget(QLabel(_('Password') + ':')) - hbox2.addWidget(self.pw_e) - hbox2.addStretch() - vbox.addLayout(hbox2) + def on_filename(path): + try: + self.storage = WalletStorage(unicode(path)) + except IOError: + self.storage = None + if self.storage: + if not self.storage.file_exists(): + msg =_("This file does not exist.") + '\n' \ + + _("Press 'Next' to create this wallet, or choose another file.") + pw = False + elif self.storage.file_exists() and self.storage.is_encrypted(): + msg = _("This file is encrypted.") + '\n' + _('Enter your password or choose another file.') + pw = True + else: + msg = _("Press 'Next' to open this wallet.") + pw = False else: - msg = _("Press 'Next' to open this wallet.") - vbox.addWidget(QLabel(msg)) - - self.set_layout(vbox, title=_('Electrum wallet')) - if self.pw_e: + msg = _('Cannot read file') + pw = False + self.msg_label.setText(msg) + if pw: + self.pw_label.show() self.pw_e.show() self.pw_e.setFocus() + else: + self.pw_label.hide() + self.pw_e.hide() - while True: - update_layout() + button.clicked.connect(on_choose) + self.name_e.textChanged.connect(on_filename) + self.name_e.setText(os.path.basename(self.storage.path)) + while True: if self.storage.file_exists() and not self.storage.is_encrypted(): break - if not self.loop.exec_(): return - if not self.storage.file_exists(): break - if self.storage.file_exists() and self.storage.is_encrypted(): password = unicode(self.pw_e.text()) try: @@ -217,7 +227,6 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard): QMessageBox.information(None, _('Error'), str(e), _('OK')) return - path = self.storage.path if self.storage.requires_split(): self.hide()