URI: 
       tkivy: save password after wallet creation - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 3f9d7d8b337ca14a117848fb8127b760bcfc1747
   DIR parent 7ce4727507582ba7efffe0624c849d54046cabde
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Thu,  3 Dec 2020 10:23:01 +0100
       
       kivy: save password after wallet creation
       
       Previously, operations that require password
       would fail until the wallet is reopened
       
       Diffstat:
         M electrum/gui/kivy/main_window.py    |       8 ++++----
         M electrum/gui/kivy/uix/dialogs/inst… |       9 +++++++--
       
       2 files changed, 11 insertions(+), 6 deletions(-)
       ---
   DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py
       t@@ -631,8 +631,9 @@ class ElectrumWindow(App, Logger):
                else:
                    return ''
        
       -    def on_wizard_complete(self, storage, db):
       +    def on_wizard_complete(self, storage, db, password):
                if storage:
       +            self.password = password
                    wallet = Wallet(db, storage, config=self.electrum_config)
                    wallet.start_network(self.daemon.network)
                    self.daemon.add_wallet(wallet)
       t@@ -665,17 +666,16 @@ class ElectrumWindow(App, Logger):
                        d = Question(_('Do you want to launch the wizard again?'), handle_answer)
                        d.open()
        
       -    def on_open_wallet(self, pw, storage):
       +    def on_open_wallet(self, password, storage):
                if not storage.file_exists():
                    wizard = Factory.InstallWizard(self.electrum_config, self.plugins)
                    wizard.path = storage.path
                    wizard.run('new')
                else:
                    assert storage.is_past_initial_decryption()
       -            self.password = pw
                    db = WalletDB(storage.read(), manual_upgrades=False)
                    assert not db.requires_upgrade()
       -            self.on_wizard_complete(storage, db)
       +            self.on_wizard_complete(storage, db, password)
        
            def on_stop(self):
                self.logger.info('on_stop')
   DIR diff --git a/electrum/gui/kivy/uix/dialogs/installwizard.py b/electrum/gui/kivy/uix/dialogs/installwizard.py
       t@@ -1060,9 +1060,14 @@ class InstallWizard(BaseWizard, Widget):
                self.app = App.get_running_app()
        
            def terminate(self, *, storage=None, db=None, aborted=False):
       -        if storage is None and not aborted:
       +        # storage must be None because manual upgrades are disabled on Kivy
       +        assert storage is None
       +        if not aborted:
       +            password = self.pw_args.password
                    storage, db = self.create_storage(self.path)
       -        self.app.on_wizard_complete(storage, db)
       +        else:
       +            password = None
       +        self.app.on_wizard_complete(storage, db, password)
        
            def choice_dialog(self, **kwargs):
                choices = kwargs['choices']