commit 7ea91dde2eeb2b31980d909ba66cca7741eab20c
parent bab15a245bb2256222d9fb2b16035cf06aae3666
Author: ThomasV <thomasv@electrum.org>
Date: Fri, 14 Oct 2016 14:05:24 +0200
do not expose network to wizard. update message in issue #1972
Diffstat:
6 files changed, 34 insertions(+), 29 deletions(-)
diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py
@@ -410,6 +410,7 @@ class ElectrumWindow(App):
def on_wizard_complete(self, instance, wallet):
if wallet:
+ wallet.start_threads(self.daemon.network)
self.daemon.add_wallet(wallet)
self.load_wallet(wallet)
self.on_resume()
@@ -425,7 +426,7 @@ class ElectrumWindow(App):
self.on_resume()
else:
Logger.debug('Electrum: Wallet not found. Launching install wizard')
- wizard = Factory.InstallWizard(self.electrum_config, self.network, path)
+ wizard = Factory.InstallWizard(self.electrum_config, path)
wizard.bind(on_wizard_complete=self.on_wizard_complete)
action = wizard.storage.get_action()
wizard.run(action)
diff --git a/gui/kivy/uix/dialogs/installwizard.py b/gui/kivy/uix/dialogs/installwizard.py
@@ -759,7 +759,6 @@ class InstallWizard(BaseWizard, Widget):
t.start()
def terminate(self, **kwargs):
- self.wallet.start_threads(self.network)
self.dispatch('on_wizard_complete', self.wallet)
def choice_dialog(self, **kwargs):
diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py
@@ -161,12 +161,11 @@ class ElectrumGui:
else:
wallet = self.daemon.load_wallet(path)
if not wallet:
- wizard = InstallWizard(self.config, self.app, self.plugins, self.daemon.network, path)
+ wizard = InstallWizard(self.config, self.app, self.plugins, path)
wallet = wizard.run_and_get_wallet()
if not wallet:
return
- #if wallet.get_action():
- # return
+ wallet.start_threads(self.daemon.network)
self.daemon.add_wallet(wallet)
w = self.create_window_for_wallet(wallet)
if uri:
@@ -181,23 +180,31 @@ class ElectrumGui:
self.config.save_last_wallet(window.wallet)
run_hook('on_close_window', window)
+ def init_network(self):
+ # Show network dialog if config does not exist
+ if self.daemon.network:
+ if self.config.get('auto_connect') is None:
+ wizard = InstallWizard(self.config, self.app, self.plugins, None)
+ wizard.init_network(self.daemon.network)
+ wizard.terminate()
+
def main(self):
+ try:
+ self.init_network()
+ except:
+ traceback.print_exc(file=sys.stdout)
+ return
self.timer.start()
self.config.open_last_wallet()
path = self.config.get_wallet_path()
if not self.start_new_window(path, self.config.get('url')):
return
-
signal.signal(signal.SIGINT, lambda *args: self.app.quit())
-
# main loop
self.app.exec_()
-
# Shut down the timer cleanly
self.timer.stop()
-
# clipboard persistence. see http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg17328.html
event = QtCore.QEvent(QtCore.QEvent.Clipboard)
self.app.sendEvent(self.app.clipboard(), event)
-
self.tray.hide()
diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py
@@ -95,9 +95,9 @@ def wizard_dialog(func):
# WindowModalDialog must come first as it overrides show_error
class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
- def __init__(self, config, app, plugins, network, storage):
+ def __init__(self, config, app, plugins, storage):
- BaseWizard.__init__(self, config, network, storage)
+ BaseWizard.__init__(self, config, storage)
QDialog.__init__(self, None)
self.setWindowTitle('Electrum - ' + _('Install Wizard'))
@@ -146,10 +146,6 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
self.refresh_gui() # Need for QT on MacOSX. Lame.
def run_and_get_wallet(self):
- # Show network dialog if config does not exist
- if self.network:
- if self.config.get('auto_connect') is None:
- self.choose_server(self.network)
path = self.storage.path
if self.storage.requires_split():
@@ -337,7 +333,6 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
self.run(action)
def terminate(self):
- self.wallet.start_threads(self.network)
self.emit(QtCore.SIGNAL('accept'))
def waiting_dialog(self, task, msg):
@@ -391,25 +386,29 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
self.set_main_layout(vbox, _('Master Public Key'))
return None
- def choose_server(self, network):
- title = _("Electrum communicates with remote servers to get "
+ def init_network(self, network):
+ message = _("Electrum communicates with remote servers to get "
"information about your transactions and addresses. The "
"servers all fulfil the same purpose only differing in "
"hardware. In most cases you simply want to let Electrum "
"pick one at random. However if you prefer feel free to "
"select a server manually.")
choices = [_("Auto connect"), _("Select server manually")]
- choices_title = _("How do you want to connect to a server? ")
- clayout = ChoicesLayout(choices_title, choices)
+ title = _("How do you want to connect to a server? ")
+ clayout = ChoicesLayout(message, choices)
self.set_main_layout(clayout.layout(), title)
- auto_connect = True
- if clayout.selected_index() == 1:
+ r = clayout.selected_index()
+ if r == 0:
+ auto_connect = True
+ elif r == 1:
+ auto_connect = True
nlayout = NetworkChoiceLayout(network, self.config, wizard=True)
- if self.set_main_layout(nlayout.layout(), raise_on_cancel=False):
- nlayout.accept()
+ if self.set_main_layout(nlayout.layout()):
auto_connect = False
- self.config.set_key('auto_connect', auto_connect, True)
+ else:
+ auto_connect = True
network.auto_connect = auto_connect
+ self.config.set_key('auto_connect', auto_connect, True)
@wizard_dialog
def multisig_dialog(self, run_next):
diff --git a/gui/qt/network_dialog.py b/gui/qt/network_dialog.py
@@ -73,7 +73,7 @@ class NetworkChoiceLayout(object):
else:
status += "\n" + _("Disconnected from server")
else:
- status = _("Please choose a server.") + "\n" + _("Select 'Cancel' if you are offline.")
+ status = _("Please choose a server.") + "\n" + _("Press 'Next' if you are offline.")
vbox = QVBoxLayout()
hbox = QHBoxLayout()
diff --git a/lib/base_wizard.py b/lib/base_wizard.py
@@ -32,10 +32,9 @@ from plugins import run_hook
class BaseWizard(object):
- def __init__(self, config, network, path):
+ def __init__(self, config, path):
super(BaseWizard, self).__init__()
self.config = config
- self.network = network
self.storage = WalletStorage(path)
self.wallet = None
self.stack = []