Browse Source

wizard: (qt) add dedicated button to create new wallet

hard-fail-on-bad-server-string
SomberNight 5 years ago
committed by ThomasV
parent
commit
c9ede07462
  1. 20
      electrum/gui/qt/installwizard.py
  2. 4
      electrum/storage.py

20
electrum/gui/qt/installwizard.py

@ -7,6 +7,7 @@ import sys
import threading import threading
import traceback import traceback
from typing import Tuple, List, Callable, NamedTuple, Optional, TYPE_CHECKING from typing import Tuple, List, Callable, NamedTuple, Optional, TYPE_CHECKING
from functools import partial
from PyQt5.QtCore import QRect, QEventLoop, Qt, pyqtSignal from PyQt5.QtCore import QRect, QEventLoop, Qt, pyqtSignal
from PyQt5.QtGui import QPalette, QPen, QPainter, QPixmap from PyQt5.QtGui import QPalette, QPen, QPainter, QPixmap
@ -16,7 +17,7 @@ from PyQt5.QtWidgets import (QWidget, QDialog, QLabel, QHBoxLayout, QMessageBox,
from electrum.wallet import Wallet, Abstract_Wallet from electrum.wallet import Wallet, Abstract_Wallet
from electrum.storage import WalletStorage, StorageReadWriteError from electrum.storage import WalletStorage, StorageReadWriteError
from electrum.util import UserCancelled, InvalidPassword, WalletFileException from electrum.util import UserCancelled, InvalidPassword, WalletFileException, get_new_wallet_name
from electrum.base_wizard import BaseWizard, HWD_SETUP_DECRYPT_WALLET, GoBack from electrum.base_wizard import BaseWizard, HWD_SETUP_DECRYPT_WALLET, GoBack
from electrum.i18n import _ from electrum.i18n import _
@ -191,6 +192,18 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
hbox2.addWidget(self.pw_e) hbox2.addWidget(self.pw_e)
hbox2.addStretch() hbox2.addStretch()
vbox.addLayout(hbox2) vbox.addLayout(hbox2)
vbox.addSpacing(50)
vbox_create_new = QVBoxLayout()
vbox_create_new.addWidget(QLabel(_('Alternatively') + ':'), alignment=Qt.AlignLeft)
button_create_new = QPushButton(_('Create New Wallet'))
button_create_new.setMinimumWidth(120)
vbox_create_new.addWidget(button_create_new, alignment=Qt.AlignLeft)
widget_create_new = QWidget()
widget_create_new.setLayout(vbox_create_new)
vbox_create_new.setContentsMargins(0, 0, 0, 0)
vbox.addWidget(widget_create_new)
self.set_layout(vbox, title=_('Electrum wallet')) self.set_layout(vbox, title=_('Electrum wallet'))
temp_storage = None # type: Optional[WalletStorage] temp_storage = None # type: Optional[WalletStorage]
@ -240,6 +253,7 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
if msg is None: if msg is None:
msg = _('Cannot read file') msg = _('Cannot read file')
self.msg_label.setText(msg) self.msg_label.setText(msg)
widget_create_new.setVisible(temp_storage and temp_storage.file_exists())
if user_needs_to_enter_password: if user_needs_to_enter_password:
self.pw_label.show() self.pw_label.show()
self.pw_e.show() self.pw_e.show()
@ -249,6 +263,10 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
self.pw_e.hide() self.pw_e.hide()
button.clicked.connect(on_choose) button.clicked.connect(on_choose)
button_create_new.clicked.connect(
partial(
self.name_e.setText,
get_new_wallet_name(wallet_folder)))
self.name_e.textChanged.connect(on_filename) self.name_e.textChanged.connect(on_filename)
self.name_e.setText(os.path.basename(path)) self.name_e.setText(os.path.basename(path))

4
electrum/storage.py

@ -59,7 +59,7 @@ class WalletStorage(Logger):
Logger.__init__(self) Logger.__init__(self)
self.lock = threading.RLock() self.lock = threading.RLock()
self.path = standardize_path(path) self.path = standardize_path(path)
self._file_exists = self.path and os.path.exists(self.path) self._file_exists = bool(self.path and os.path.exists(self.path))
DB_Class = JsonDB DB_Class = JsonDB
self.logger.info(f"wallet path {self.path}") self.logger.info(f"wallet path {self.path}")
@ -139,7 +139,7 @@ class WalletStorage(Logger):
self.logger.info(f"saved {self.path}") self.logger.info(f"saved {self.path}")
self.db.set_modified(False) self.db.set_modified(False)
def file_exists(self): def file_exists(self) -> bool:
return self._file_exists return self._file_exists
def is_past_initial_decryption(self): def is_past_initial_decryption(self):

Loading…
Cancel
Save