URI: 
       tPut open_wallet back as class method. - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 4c9b224d4c08f8c3fd140bddc1bff53f7e6c4e8e
   DIR parent cb8bc4ec73548bdb5dbd2dac710ac5adb97943e8
  HTML Author: Neil Booth <kyuupichan@gmail.com>
       Date:   Wed, 13 Jan 2016 20:55:51 +0900
       
       Put open_wallet back as class method.
       
       Diffstat:
         M gui/qt/installwizard.py             |       4 ++--
         M lib/daemon.py                       |      55 ++-----------------------------
         M lib/wizard.py                       |      75 ++++++++++++++++++++++++++-----
       
       3 files changed, 69 insertions(+), 65 deletions(-)
       ---
   DIR diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py
       t@@ -141,15 +141,15 @@ class InstallWizard(WindowModalDialog, WizardBase):
                self.app.processEvents()
                self.app.processEvents()
        
       +    @classmethod
            def open_wallet(self, *args):
                '''Wrap the base wizard implementation with try/except blocks
                to give a sensible error message to the user.'''
                wallet = None
                try:
       -            wallet = super(InstallWizard, self).open_wallet(*args)
       +            wallet = InstallWizard.open_wallet(self, *args)
                except UserCancelled:
                    self.print_error("wallet creation cancelled by user")
       -            self.accept()
                return wallet
        
            def remove_from_recently_open(self, filename):
   DIR diff --git a/lib/daemon.py b/lib/daemon.py
       t@@ -23,6 +23,7 @@ from jsonrpclib.SimpleJSONRPCServer import SimpleJSONRPCServer, SimpleJSONRPCReq
        
        from util import json_decode, DaemonThread
        from wallet import WalletStorage, Wallet
       +from wizard import WizardBase
        from commands import known_commands, Commands
        from simple_config import SimpleConfig
        
       t@@ -125,7 +126,8 @@ class Daemon(DaemonThread):
                    wallet = self.wallets[path]
                else:
                    if get_wizard:
       -                wallet = self.open_wallet_with_wizard(self.network, path, get_wizard)
       +                wallet = WizardBase.open_wallet(self.network, path,
       +                                                self.config, get_wizard)
                    else:
                        storage = WalletStorage(path)
                        wallet = Wallet(storage)
       t@@ -134,57 +136,6 @@ class Daemon(DaemonThread):
                        self.wallets[path] = wallet
                return wallet
        
       -    def open_wallet_with_wizard(self, network, filename, get_wizard):
       -        '''Instantiate wizard only if needed'''
       -        storage = WalletStorage(filename)
       -        need_sync = False
       -        is_restore = False
       -        self.wizard = None
       -
       -        def wizard():
       -            if self.wizard is None:
       -                self.wizard = get_wizard()
       -            return self.wizard
       -
       -        if storage.file_exists:
       -            wallet = Wallet(storage)
       -            #self.update_wallet_format(wallet)
       -        else:
       -            cr, wallet = wizard().create_or_restore(storage)
       -            if not wallet:
       -                return
       -            need_sync = True
       -            is_restore = (cr == 'restore')
       -
       -        while True:
       -            action = wallet.get_action()
       -            if not action:
       -                break
       -            need_sync = True
       -            wizard().run_wallet_action(wallet, action)
       -            # Save the wallet after each action
       -            wallet.storage.write()
       -
       -        if network:
       -            # Show network dialog if config does not exist
       -            if self.config.get('server') is None:
       -                wizard().choose_server(network)
       -        else:
       -            wizard().show_warning(_('You are offline'))
       -
       -        if need_sync:
       -            wizard().create_addresses(wallet)
       -
       -        # start wallet threads
       -        if network:
       -            wallet.start_threads(network)
       -
       -        if is_restore:
       -            wizard().show_restore(wallet, network)
       -
       -        return wallet
       -
       -
            def run_cmdline(self, config_options):
                config = SimpleConfig(config_options)
                cmdname = config.get('cmd')
   DIR diff --git a/lib/wizard.py b/lib/wizard.py
       t@@ -119,7 +119,61 @@ class WizardBase(PrintError):
                """Show restore result"""
                pass
        
       +    @classmethod
       +    def open_wallet(self, network, filename, config, create_wizard):
       +        '''The main entry point of the wizard.  Open a wallet from the given
       +        filename.  If the file doesn't exist launch the GUI-specific
       +        install wizard proper, created by calling create_wizard().'''
       +        storage = WalletStorage(filename)
       +        need_sync = False
       +        is_restore = False
       +        self.my_wizard = None
       +
       +        def wizard():
       +            if self.my_wizard is None:
       +                self.my_wizard = create_wizard()
       +            return self.my_wizard
       +
       +        if storage.file_exists:
       +            wallet = Wallet(storage)
       +            if wallet.imported_keys:
       +                wizard().update_wallet_format(wallet)
       +        else:
       +            cr, wallet = wizard().create_or_restore(storage)
       +            if not wallet:
       +                return
       +            need_sync = True
       +            is_restore = (cr == 'restore')
       +
       +        while True:
       +            action = wallet.get_action()
       +            if not action:
       +                break
       +            need_sync = True
       +            wizard().run_wallet_action(wallet, action)
       +            # Save the wallet after each action
       +            wallet.storage.write()
       +
       +        if network:
       +            # Show network dialog if config does not exist
       +            if config.get('server') is None:
       +                wizard().choose_server(network)
       +        else:
       +            wizard().show_warning(_('You are offline'))
       +
       +        if need_sync:
       +            wizard().create_addresses(wallet)
       +
       +        # start wallet threads
       +        if network:
       +            wallet.start_threads(network)
       +
       +        if is_restore:
       +            wizard().show_restore(wallet, network)
        
       +        self.my_wizard = None
       +
       +        return wallet
        
            def run_wallet_action(self, wallet, action):
                self.print_error("action %s on %s" % (action, wallet.basename()))
       t@@ -233,18 +287,17 @@ class WizardBase(PrintError):
        
            def update_wallet_format(self, wallet):
                # Backwards compatibility: convert old-format imported keys
       -        if wallet.imported_keys:
       -            msg = _("Please enter your password in order to update "
       -                    "imported keys")
       -            if wallet.use_encryption:
       -                password = self.request_password(msg)
       -            else:
       -                password = None
       +        msg = _("Please enter your password in order to update "
       +                "imported keys")
       +        if wallet.use_encryption:
       +            password = self.request_password(msg)
       +        else:
       +            password = None
        
       -            try:
       -                wallet.convert_imported_keys(password)
       -            except Exception as e:
       -                self.show_error(str(e))
       +        try:
       +            wallet.convert_imported_keys(password)
       +        except Exception as e:
       +            self.show_error(str(e))
        
                # Call synchronize to regenerate addresses in case we're offline
                if wallet.get_master_public_keys() and not wallet.addresses():