tqt: try even harder not to crash whole app on first start - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 363dd12a2a6d52addf4bb099c2ef20fd36abb6ed
 (DIR) parent dd848304e6772a7736614c62579a14a1aa791d82
 (HTM) Author: SomberNight <somber.night@protonmail.com>
       Date:   Tue, 11 Dec 2018 21:29:23 +0100
       
       qt: try even harder not to crash whole app on first start
       
       Diffstat:
         M electrum/gui/qt/__init__.py         |       6 +++++-
         M electrum/gui/qt/main_window.py      |      11 +++--------
         M electrum/util.py                    |      11 +++++++++++
       
       3 files changed, 19 insertions(+), 9 deletions(-)
       ---
 (DIR) diff --git a/electrum/gui/qt/__init__.py b/electrum/gui/qt/__init__.py
       t@@ -44,7 +44,7 @@ from electrum.plugin import run_hook
        from electrum.storage import WalletStorage
        from electrum.base_wizard import GoBack
        from electrum.util import (UserCancelled, PrintError, profiler,
       -                           WalletFileException, BitcoinException)
       +                           WalletFileException, BitcoinException, get_new_wallet_name)
        
        from .installwizard import InstallWizard
        
       t@@ -263,6 +263,10 @@ class ElectrumGui(PrintError):
                    d = QMessageBox(QMessageBox.Warning, _('Error'),
                                    _('Cannot create window for wallet') + ':\n' + str(e))
                    d.exec_()
       +            if app_is_starting:
       +                wallet_dir = os.path.dirname(path)
       +                path = os.path.join(wallet_dir, get_new_wallet_name(wallet_dir))
       +                self.start_new_window(path, uri)
                    return
                if uri:
                    w.pay_to_URI(uri)
 (DIR) diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
       t@@ -55,7 +55,8 @@ from electrum.util import (format_time, format_satoshis, format_fee_satoshis,
                                   export_meta, import_meta, bh2u, bfh, InvalidPassword,
                                   base_units, base_units_list, base_unit_name_to_decimal_point,
                                   decimal_point_to_base_unit_name, quantize_feerate,
       -                           UnknownBaseUnit, DECIMAL_POINT_DEFAULT, UserFacingException)
       +                           UnknownBaseUnit, DECIMAL_POINT_DEFAULT, UserFacingException,
       +                           get_new_wallet_name)
        from electrum.transaction import Transaction, TxOutput
        from electrum.address_synchronizer import AddTransactionException
        from electrum.wallet import (Multisig_Wallet, CannotBumpFee, Abstract_Wallet,
       t@@ -487,13 +488,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                except FileNotFoundError as e:
                    self.show_error(str(e))
                    return
       -        i = 1
       -        while True:
       -            filename = "wallet_%d" % i
       -            if filename in os.listdir(wallet_folder):
       -                i += 1
       -            else:
       -                break
       +        filename = get_new_wallet_name(wallet_folder)
                full_path = os.path.join(wallet_folder, filename)
                self.gui_object.start_new_window(full_path, None)
        
 (DIR) diff --git a/electrum/util.py b/electrum/util.py
       t@@ -413,6 +413,17 @@ def assert_file_in_datadir_available(path, config_path):
                    'Should be at {}'.format(path))
        
        
       +def get_new_wallet_name(wallet_folder: str) -> str:
       +    i = 1
       +    while True:
       +        filename = "wallet_%d" % i
       +        if filename in os.listdir(wallet_folder):
       +            i += 1
       +        else:
       +            break
       +    return filename
       +
       +
        def assert_bytes(*args):
            """
            porting helper, assert args type