From bcabfaeccb24fc03a28eab3bb8f5f26d71908da9 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Thu, 31 Dec 2015 12:02:16 +0900 Subject: [PATCH] Move install wizard invocations to one place Fixes bugs whereby install wizard invoked from the GUI was missing various things, such as updating recently used list, setting up timers, etc. --- gui/qt/__init__.py | 54 ++++++++++++++++++++++--------------------- gui/qt/main_window.py | 6 +---- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py index c9d52a1e..7718208d 100644 --- a/gui/qt/__init__.py +++ b/gui/qt/__init__.py @@ -150,45 +150,47 @@ class ElectrumGui(MessageBoxMixin): self.show_warning(str(e)) return action = wallet.get_action() - # run wizard - if action is not None: - wizard = InstallWizard(self.app, self.config, self.network, storage) - wallet = wizard.run(action) - # keep current wallet - if not wallet: - return - else: - wallet.start_threads(self.network) - return wallet + if action is not None: + return self.install_wizard(storage, action) + + wallet.start_threads(self.network) + return self.create_window_for_wallet(wallet) + + def install_wizard(self, storage, action): + wizard = InstallWizard(self.app, self.config, self.network, storage) + wallet = wizard.run(action) + return self.create_window_for_wallet(wallet) def new_window(self, path, uri=None): # Use a signal as can be called from daemon thread self.app.emit(SIGNAL('new_window'), path, uri) + def create_window_for_wallet(self, wallet): + if not wallet: + return + w = ElectrumWindow(self, wallet) + w.connect_slots(self.timer) + w.update_recently_visited(wallet.storage.path) + # initial configuration + if self.config.get('hide_gui') is True and self.tray.isVisible(): + w.hide() + else: + w.show() + self.windows.append(w) + self.build_tray_menu() + run_hook('on_new_window', w) + return w + def start_new_window(self, path, uri): for w in self.windows: if w.wallet.storage.path == path: w.bring_to_top() break else: - wallet = self.load_wallet_file(path) - if not wallet: - return - w = ElectrumWindow(self, wallet) - w.connect_slots(self.timer) - # add to recently visited - w.update_recently_visited(path) - # initial configuration - if self.config.get('hide_gui') is True and self.tray.isVisible(): - w.hide() - else: - w.show() - self.windows.append(w) - self.build_tray_menu() - run_hook('on_new_window', w) + w = self.load_wallet_file(path) - if uri: + if uri and w: w.pay_to_URI(uri) return w diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index 0df87a27..ce4ea41e 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -50,7 +50,6 @@ from network_dialog import NetworkDialog from qrcodewidget import QRCodeWidget, QRDialog from qrtextedit import ShowQRTextEdit from transaction_dialog import show_transaction -from installwizard import InstallWizard @@ -385,10 +384,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): if storage.file_exists: self.show_critical(_("File exists")) return - wizard = InstallWizard(self.app, self.config, self.network, storage) - wallet = wizard.run('new') - if wallet: - self.new_window(full_path) + self.gui_object.install_wizard(storage, 'new') def init_menubar(self): menubar = QMenuBar()