diff --git a/tests/slots/pyqt/windows/test_v1_account_import_wizard.py b/tests/slots/pyqt/windows/test_v1_account_import_wizard.py index 5857f52d37f2820ddcbd0fa2e83fcec1369641e6..7f9e21405ca2cb580d2d8170a9e8b996a7fe5364 100644 --- a/tests/slots/pyqt/windows/test_v1_account_import_wizard.py +++ b/tests/slots/pyqt/windows/test_v1_account_import_wizard.py @@ -26,7 +26,7 @@ from tikka.slots.pyqt.windows.v1_account_import_wizard import ( ) -def test_v1_root_account_import( +def test_v1_import_wizard_with_identity( qtbot: QtBot, application: Application, wallet_mnemonic: str, @@ -46,7 +46,9 @@ def test_v1_root_account_import( name="root account", password=wallet_password, ) + # destination address for //0 derivation destination_account_address = "5GTFXi3akAMpdgpPq1VXEY5sMVH5h5nESebQ1TWtqS6tEzYz" + assert application.accounts.get_by_address(destination_account_address) is None assert account is not None @@ -269,3 +271,251 @@ def test_v1_root_account_import( window.application.accounts.get_by_address(window.destination_account.address) is not None ) + assert window.wizardPage4.isComplete() is True + + destination_account = application.accounts.get_by_address( + destination_account_address + ) + assert destination_account is not None + assert destination_account.balance == 2000 + assert destination_account.identity_index == 10000 + assert destination_account.root == account.address + assert destination_account.path == "//0" + + +def test_v1_import_wizard_without_identity( + qtbot: QtBot, + application: Application, + wallet_mnemonic: str, + wallet_password: str, + monkeypatch, +): # pylint: disable=missing-function-docstring + + secret_id = password_id = "test" + address_v1 = "DCovzCEnQm9GUWe6mr8u42JR1JAuoj3HbQUGdCkfTzSr" + address = "5GAT6CJW8yVKwUuQc7sM5Kk9GZVTpbZYk9PfjNXtvnNgAJZ1" + + # create new V2 root account + password + wallet + account = application.accounts.create_new_account( + mnemonic=wallet_mnemonic, + language_code="en", + derivation="", + name="root account", + password=wallet_password, + ) + # destination address for //2 derivation + destination_account_address = "5D2YjANfzuGvJWc3gykeFokJoboi57WAqbaVdo8VJzduFNsB" + assert application.accounts.get_by_address(destination_account_address) is None + + assert account is not None + + window = V1AccountImportWizardWindow(application, QMutex()) + qtbot.addWidget(window) + + # skip PAGE 1 (explanations) + window.next() + + # PAGE 2 ----------------------------------------------------- + # password display mode on/off + assert window.sourceSecretIDLineEdit.echoMode() == QLineEdit.Password + assert window.sourcePasswordIDLineEdit.echoMode() == QLineEdit.Password + + window.sourceShowButton.click() + + assert window.sourceSecretIDLineEdit.echoMode() == QLineEdit.Normal + assert window.sourcePasswordIDLineEdit.echoMode() == QLineEdit.Normal + + # mock an unknown account with balance None + monkeypatch.setattr(application.accounts.network, "get_balance", lambda *args: None) + + with qtbot.waitSignal( + window.fetch_source_from_network_async_qworker.finished, timeout=2000 + ) as _: + # blocker.connect(app.worker.failed) # Can add other signals to blocker + # Test will block at this point until either the "finished" or the + # "failed" signal is emitted. If 10 seconds passed without a signal, + # TimeoutError will be raised. + + # type in V1 account credentials + window.sourceSecretIDLineEdit.setText(secret_id) + window.sourcePasswordIDLineEdit.setText(password_id) + + assert window.sourceV1AddressValueLabel.text() == address_v1 + assert window.sourceAddressValueLabel.text() == address + assert window.wizardPage2.isComplete() is False + assert window.sourceBalanceValueLabel.text() == "" + assert window.sourceErrorLabel.text() != "" + assert window.sourceIdentityValueLabel.text() == "" + + # mock an existing account with not None balance + monkeypatch.setattr(application.accounts.network, "get_balance", lambda *args: 1000) + monkeypatch.setattr( + application.identities.network, "get_identity_index", lambda *args: None + ) + + with qtbot.waitSignal( + window.fetch_source_from_network_async_qworker.finished, timeout=2000 + ) as _: + # blocker.connect(app.worker.failed) # Can add other signals to blocker + # Test will block at this point until either the "finished" or the + # "failed" signal is emitted. If 10 seconds passed without a signal, + # TimeoutError will be raised. + + # type in V1 account credentials + window.sourceSecretIDLineEdit.setText("") + window.sourcePasswordIDLineEdit.setText("") + window.sourceSecretIDLineEdit.setText(secret_id) + window.sourcePasswordIDLineEdit.setText(password_id) + + assert window.sourceV1AddressValueLabel.text() == address_v1 + assert window.sourceAddressValueLabel.text() == address + assert window.sourceBalanceValueLabel.text() != "" + assert window.sourceErrorLabel.text() != "" + assert window.sourceIdentityValueLabel.text() != "" + assert window.wizardPage2.isComplete() is True + + assert window.source_account is not None + assert window.source_account.balance == 1000 + assert window.source_account.identity_index is None + + window.next() + + # PAGE 3 ----------------------------------------------------- + + assert window.destinationRootNameOrAddressComboBox.currentText() == account.name + + # password display mode on/off + assert window.destinationMnemonicLineEdit.echoMode() == QLineEdit.Password + assert window.storedPasswordLineEdit.echoMode() == QLineEdit.Password + + window.destinationShowButton.click() + + assert window.destinationMnemonicLineEdit.echoMode() == QLineEdit.Normal + assert window.storedPasswordLineEdit.echoMode() == QLineEdit.Normal + + # mock an existing account with not None balance + monkeypatch.setattr(application.accounts.network, "get_balance", lambda *args: 1000) + monkeypatch.setattr( + application.identities.network, "get_identity_index", lambda *args: None + ) + + with qtbot.waitSignal( + window.fetch_destination_from_network_async_qworker.finished, timeout=2000 + ) as _: + # blocker.connect(app.worker.failed) # Can add other signals to blocker + # Test will block at this point until either the "finished" or the + # "failed" signal is emitted. If 10 seconds passed without a signal, + # TimeoutError will be raised. + + # type in V2 credentials + window.destinationMnemonicLineEdit.setText(wallet_mnemonic) + window.destinationMnemonicLanguageComboBox.setCurrentIndex(0) + + assert window.destinationRootAddressValueLabel.text() == account.address + assert window.destinationDerivationValueLabel.text() == "//2" + assert window.destinationAddressValueLabel.text() == destination_account_address + assert window.destinationBalanceValueLabel.text() != "" + assert window.destinationErrorLabel.text() != "" + assert window.wizardPage3.isComplete() is True + + # PAGE 4 ---------------------------------------------------- + + assert window.sourceAddressValueImportLabel.text() == address_v1 + assert ( + window.sourceBalanceValueImportLabel.text() + == window.sourceBalanceValueLabel.text() + ) + assert ( + window.sourceIdentityValueImportLabel.text() + == window.sourceIdentityValueLabel.text() + ) + + assert ( + window.destinationAddressValueImportLabel.text() == destination_account_address + ) + assert ( + window.destinationBalanceValueImportLabel.text() + == window.destinationBalanceValueLabel.text() + ) + assert window.destinationIdentityValueImportLabel.text() == window._("None") + + def get_balance(*args): + # source address + if args[0] == address: + return None + # destination address + return 2000 + + def get_identity_index(*args): + # source address + if args[0] == address: + return None + # destination address + return 10000 + + monkeypatch.setattr(application.accounts.network, "get_balance", get_balance) + monkeypatch.setattr( + application.identities.network, "get_identity_index", lambda *args: None + ) + + # transfer network response mock success + extrinsic_receipt = Mock(ExtrinsicReceipt) + extrinsic_receipt.is_success = True + monkeypatch.setattr( + application.transfers.network, "send", lambda *args: extrinsic_receipt + ) + monkeypatch.setattr( + application.identities.network, "change_owner_key", lambda *args: True + ) + + with qtbot.waitSignal( + window.import_source_into_destination_on_network_async_qworker.finished, + timeout=2000, + ) as _: + # blocker.connect(app.worker.failed) # Can add other signals to blocker + # Test will block at this point until either the "finished" or the + # "failed" signal is emitted. If 10 seconds passed without a signal, + # TimeoutError will be raised. + + # click on import button + window.importButton.click() + + assert window.sourceAddressValueImportLabel.text() == address_v1 + assert ( + window.sourceBalanceValueImportLabel.text() + != window.sourceBalanceValueLabel.text() + ) + assert ( + window.sourceIdentityValueImportLabel.text() + == window.sourceIdentityValueLabel.text() + ) + + assert ( + window.destinationAddressValueImportLabel.text() == destination_account_address + ) + assert ( + window.destinationBalanceValueImportLabel.text() + != window.destinationBalanceValueLabel.text() + ) + assert window.destinationIdentityValueImportLabel.text() == window._("None") + + assert window.source_account.balance is None + assert window.source_account.identity_index is None + assert window.destination_account.balance == 2000 + assert window.destination_account.identity_index is None + + assert "green" in window.importErrorLabel.styleSheet() + assert ( + window.application.accounts.get_by_address(window.destination_account.address) + is not None + ) + assert window.wizardPage4.isComplete() is True + + destination_account = application.accounts.get_by_address( + destination_account_address + ) + assert destination_account is not None + assert destination_account.balance == 2000 + assert destination_account.identity_index is None + assert destination_account.root == account.address + assert destination_account.path == "//2" diff --git a/tikka/locales/en_US/LC_MESSAGES/application.po b/tikka/locales/en_US/LC_MESSAGES/application.po index 9247630230ba1317c8b41544690a90ecde538450..dff0a5616f83acdb7bacb4f8b8a635fce0974ccd 100644 --- a/tikka/locales/en_US/LC_MESSAGES/application.po +++ b/tikka/locales/en_US/LC_MESSAGES/application.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-13 18:17+0100\n" +"POT-Creation-Date: 2023-02-16 17:25+0100\n" "PO-Revision-Date: 2020-12-16 14:59+CET\n" "Last-Translator: Vincent Texier <vit@free.fr>\n" "Language-Team: fr_FR <vit@li.org>\n" @@ -46,7 +46,7 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/v1_account_import_rc.py:187 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:222 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:506 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:511 msgid "Secret ID" msgstr "" @@ -66,8 +66,8 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:221 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:224 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:226 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:505 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:519 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:510 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:524 msgid "Password" msgstr "" @@ -81,7 +81,7 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:190 #: tikka/slots/pyqt/resources/gui/windows/v1_file_import_rc.py:166 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:218 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:516 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:521 #: tikka/slots/pyqt/resources/gui/widgets/currency_rc.py:105 #: tikka/slots/pyqt/models/account_table.py:381 msgid "Name" @@ -98,10 +98,10 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:189 #: tikka/slots/pyqt/resources/gui/windows/v1_file_import_rc.py:165 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:220 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:504 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:512 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:522 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:526 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:509 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:517 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:527 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:531 #: tikka/slots/pyqt/resources/gui/windows/address_add_rc.py:60 #: tikka/slots/pyqt/models/account_table.py:389 msgid "Address" @@ -115,8 +115,8 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:191 #: tikka/slots/pyqt/resources/gui/windows/v1_file_import_rc.py:161 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:223 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:503 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:511 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:508 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:516 #: tikka/slots/pyqt/windows/account_import.py:160 #: tikka/slots/pyqt/windows/v1_wallet_restore_from_file.py:125 #: tikka/slots/pyqt/windows/wallet_restore.py:215 @@ -176,7 +176,7 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/wallet_restore_rc.py:227 #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:194 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:225 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:520 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:525 msgid "Wallet will be locked with the current password" msgstr "" @@ -207,7 +207,7 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/wallet_restore_rc.py:224 #: tikka/slots/pyqt/resources/gui/windows/account_create_rc.py:194 #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:187 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:517 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:522 msgid "Mnemonic" msgstr "" @@ -221,7 +221,7 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/wallet_restore_rc.py:219 #: tikka/slots/pyqt/resources/gui/windows/account_create_rc.py:193 #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:185 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:518 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:523 msgid "Mnemonic language" msgstr "" @@ -233,7 +233,7 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/wallet_restore_rc.py:221 #: tikka/slots/pyqt/resources/gui/windows/account_create_rc.py:190 #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:188 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:515 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:520 #: tikka/slots/pyqt/models/account_table.py:397 msgid "Derivation" msgstr "" @@ -538,11 +538,11 @@ msgstr "" msgid "Block" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:485 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:490 msgid "Wizard to import V1 account in V2 account" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:486 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:491 msgid "" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/" "REC-html40/strict.dtd\">\n" @@ -588,53 +588,53 @@ msgid "" "\"><br /></p></body></html>" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:500 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:505 msgid "Please enter the credentials of the V1 source account." msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:501 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:506 msgid "V1 Source Account" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:502 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:507 msgid "V1 Address" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:507 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:524 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:528 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:512 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:529 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:533 #: tikka/slots/pyqt/models/account_table.py:363 msgid "Identity" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:508 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:514 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:523 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:527 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:513 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:519 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:528 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:532 msgid "Balance" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:509 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:514 msgid "" "Select a V2 destination account already created and confirm with the " "restoration mnemonic." msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:510 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:515 msgid "V2 Destination Account" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:513 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:518 msgid "Root account" msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:521 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:526 msgid "" "Click on the import button and wait for the status message. The V1 source " "account will be deleted from the blockchain on success." msgstr "" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:525 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:530 msgid "Import" msgstr "" @@ -708,10 +708,10 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/widgets/account_rc.py:122 #: tikka/slots/pyqt/windows/category_add.py:44 #: tikka/slots/pyqt/windows/v1_account_import_wizard.py:310 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:653 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:665 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:782 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:804 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:657 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:669 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:794 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:819 #: tikka/slots/pyqt/widgets/account.py:200 msgid "None" msgstr "" @@ -809,9 +809,9 @@ msgstr "" #: tikka/slots/pyqt/windows/account_derivation_create.py:165 #: tikka/slots/pyqt/windows/account_derivation_create.py:178 #: tikka/slots/pyqt/windows/account_derivation_create.py:199 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:504 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:519 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:545 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:505 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:520 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:546 msgid "Mnemonic or language not valid!" msgstr "" @@ -903,28 +903,28 @@ msgstr "" msgid "Balance too low to send value" msgstr "" -#: tikka/slots/pyqt/windows/transfer.py:310 -#: tikka/slots/pyqt/windows/transfer.py:356 -#: tikka/slots/pyqt/windows/transfer.py:386 -#: tikka/slots/pyqt/windows/transfer.py:422 +#: tikka/slots/pyqt/windows/transfer.py:323 +#: tikka/slots/pyqt/windows/transfer.py:369 +#: tikka/slots/pyqt/windows/transfer.py:399 +#: tikka/slots/pyqt/windows/transfer.py:435 msgid "Invalid address! Please check it again." msgstr "" -#: tikka/slots/pyqt/windows/transfer.py:463 +#: tikka/slots/pyqt/windows/transfer.py:476 msgid "Unknown!" msgstr "" -#: tikka/slots/pyqt/windows/transfer.py:466 +#: tikka/slots/pyqt/windows/transfer.py:479 msgid "" "Account balance unknown! Send only one unit and make sure the owner can get " "it" msgstr "" -#: tikka/slots/pyqt/windows/transfer.py:593 +#: tikka/slots/pyqt/windows/transfer.py:606 msgid "Transfer failed. Please check logs to understand why" msgstr "" -#: tikka/slots/pyqt/windows/transfer.py:602 +#: tikka/slots/pyqt/windows/transfer.py:615 msgid "Transfer done" msgstr "" @@ -939,7 +939,7 @@ msgid "Impossible to connect" msgstr "" #: tikka/slots/pyqt/windows/account_derivation_create.py:185 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:527 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:528 msgid "Mnemonic address is not the root account address!" msgstr "" @@ -972,23 +972,23 @@ msgid "This account does not exists" msgstr "" #: tikka/slots/pyqt/windows/v1_account_import_wizard.py:312 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:613 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:617 msgid "Account is valid" msgstr "" -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:609 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:613 msgid "Account has already an identity!" msgstr "" -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:811 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:826 msgid "Account imported successfully!" msgstr "" -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:825 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:843 msgid "Error importing money!" msgstr "" -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:827 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:845 msgid "Error importing identity!" msgstr "" diff --git a/tikka/locales/fr_FR/LC_MESSAGES/application.po b/tikka/locales/fr_FR/LC_MESSAGES/application.po index 21c29f739110979d2fe111cbc11d3b1fadaf0fc8..467cbf6375d5d5321f8c7a29babe6b7c2d47117a 100644 --- a/tikka/locales/fr_FR/LC_MESSAGES/application.po +++ b/tikka/locales/fr_FR/LC_MESSAGES/application.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: 0.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-02-13 18:17+0100\n" -"PO-Revision-Date: 2023-02-13 18:18+0100\n" +"POT-Creation-Date: 2023-02-16 17:25+0100\n" +"PO-Revision-Date: 2023-02-16 17:27+0100\n" "Last-Translator: Vincent Texier <vit@free.fr>\n" "Language-Team: fr_FR <vit@li.org>\n" "Language: fr_FR\n" @@ -48,7 +48,7 @@ msgstr "Adresse V1" #: tikka/slots/pyqt/resources/gui/windows/v1_account_import_rc.py:187 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:222 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:506 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:511 msgid "Secret ID" msgstr "ID secret" @@ -68,8 +68,8 @@ msgstr "ID secret" #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:221 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:224 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:226 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:505 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:519 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:510 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:524 msgid "Password" msgstr "Mot de passe" @@ -83,7 +83,7 @@ msgstr "Mot de passe" #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:190 #: tikka/slots/pyqt/resources/gui/windows/v1_file_import_rc.py:166 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:218 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:516 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:521 #: tikka/slots/pyqt/resources/gui/widgets/currency_rc.py:105 #: tikka/slots/pyqt/models/account_table.py:381 msgid "Name" @@ -100,10 +100,10 @@ msgstr "Nom" #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:189 #: tikka/slots/pyqt/resources/gui/windows/v1_file_import_rc.py:165 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:220 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:504 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:512 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:522 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:526 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:509 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:517 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:527 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:531 #: tikka/slots/pyqt/resources/gui/windows/address_add_rc.py:60 #: tikka/slots/pyqt/models/account_table.py:389 msgid "Address" @@ -117,8 +117,8 @@ msgstr "Adresse" #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:191 #: tikka/slots/pyqt/resources/gui/windows/v1_file_import_rc.py:161 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:223 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:503 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:511 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:508 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:516 #: tikka/slots/pyqt/windows/account_import.py:160 #: tikka/slots/pyqt/windows/v1_wallet_restore_from_file.py:125 #: tikka/slots/pyqt/windows/wallet_restore.py:215 @@ -178,7 +178,7 @@ msgstr "Chemin" #: tikka/slots/pyqt/resources/gui/windows/wallet_restore_rc.py:227 #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:194 #: tikka/slots/pyqt/resources/gui/windows/v1_wallet_restore_rc.py:225 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:520 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:525 msgid "Wallet will be locked with the current password" msgstr "Le trousseau sera verrouillé avec le mot de passe actuel" @@ -211,7 +211,7 @@ msgstr "" #: tikka/slots/pyqt/resources/gui/windows/wallet_restore_rc.py:224 #: tikka/slots/pyqt/resources/gui/windows/account_create_rc.py:194 #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:187 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:517 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:522 msgid "Mnemonic" msgstr "Mnémonique" @@ -225,7 +225,7 @@ msgstr "12 mots séparés par des espaces" #: tikka/slots/pyqt/resources/gui/windows/wallet_restore_rc.py:219 #: tikka/slots/pyqt/resources/gui/windows/account_create_rc.py:193 #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:185 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:518 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:523 msgid "Mnemonic language" msgstr "Langue mnémonique" @@ -237,7 +237,7 @@ msgstr "chemin de dérivation (ex. //0 ou //2)" #: tikka/slots/pyqt/resources/gui/windows/wallet_restore_rc.py:221 #: tikka/slots/pyqt/resources/gui/windows/account_create_rc.py:190 #: tikka/slots/pyqt/resources/gui/windows/account_derivation_create_rc.py:188 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:515 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:520 #: tikka/slots/pyqt/models/account_table.py:397 msgid "Derivation" msgstr "Dérivation" @@ -550,11 +550,11 @@ msgstr "Logiciel" msgid "Block" msgstr "Bloc" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:485 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:490 msgid "Wizard to import V1 account in V2 account" msgstr "Assistant d'import de compte V1 dans un compte V2" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:486 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:491 msgid "" "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/" "REC-html40/strict.dtd\">\n" @@ -619,42 +619,41 @@ msgstr "" "<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-" "right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-" "weight:600; font-style:italic;\">Compte V1 :</span><span style=\" font-style:" -"italic;\"> Compte V1 : Un compte V1 est un compte Ğ1 généré par un " -"identifiant secret et un mot de passe (avec Cesium V1).</span></p>\n" +"italic;\"> Un compte V1 est un compte Ğ1 généré par un identifiant secret et " +"un mot de passe (avec Cesium V1).</span></p>\n" "<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-" "right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-" "weight:600; font-style:italic;\">Compte V2 :</span><span style=\" font-style:" -"italic;\"> Compte V2 : Un compte V2 est un compte généré par un code de " -"restauration de douze mots (également appelé mnémonique).</span></p></body></" -"html>" +"italic;\"> Un compte V2 est un compte généré par un code de restauration de " +"douze mots (également appelé mnémonique).</span></p></body></html>" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:500 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:505 msgid "Please enter the credentials of the V1 source account." msgstr "Veuillez entrer les identifiants secrets du compte source V1." -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:501 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:506 msgid "V1 Source Account" msgstr "Compte Source V1" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:502 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:507 msgid "V1 Address" msgstr "Adresse V1" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:507 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:524 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:528 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:512 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:529 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:533 #: tikka/slots/pyqt/models/account_table.py:363 msgid "Identity" msgstr "Identité" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:508 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:514 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:523 -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:527 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:513 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:519 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:528 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:532 msgid "Balance" msgstr "Solde" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:509 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:514 msgid "" "Select a V2 destination account already created and confirm with the " "restoration mnemonic." @@ -662,23 +661,23 @@ msgstr "" "Sélectionnez un compte V2 de destination déjà créé et confirmez avec le " "mnémonique de restauration." -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:510 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:515 msgid "V2 Destination Account" msgstr "Compte V2 de Destination" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:513 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:518 msgid "Root account" msgstr "Compte racine" -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:521 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:526 msgid "" "Click on the import button and wait for the status message. The V1 source " "account will be deleted from the blockchain on success." msgstr "" -"Cliquez sur le bouton d'importation et attendez le message d'. Létate compte " -"source V1 sera supprimé de la blockchain en cas de succès." +"Cliquez sur le bouton d'importation et attendez le message du résultat. Le " +"compte source V1 sera supprimé de la blockchain en cas de succès." -#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:525 +#: tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard_rc.py:530 msgid "Import" msgstr "Importer" @@ -752,10 +751,10 @@ msgstr "Virement vers" #: tikka/slots/pyqt/resources/gui/widgets/account_rc.py:122 #: tikka/slots/pyqt/windows/category_add.py:44 #: tikka/slots/pyqt/windows/v1_account_import_wizard.py:310 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:653 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:665 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:782 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:804 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:657 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:669 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:794 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:819 #: tikka/slots/pyqt/widgets/account.py:200 msgid "None" msgstr "Aucune" @@ -853,9 +852,9 @@ msgstr "Espagnol" #: tikka/slots/pyqt/windows/account_derivation_create.py:165 #: tikka/slots/pyqt/windows/account_derivation_create.py:178 #: tikka/slots/pyqt/windows/account_derivation_create.py:199 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:504 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:519 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:545 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:505 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:520 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:546 msgid "Mnemonic or language not valid!" msgstr "Mnémonique ou langue non valide !" @@ -950,18 +949,18 @@ msgstr "Le Virement/Paiement supprimerait le compte" msgid "Balance too low to send value" msgstr "Solde trop bas pour ce montant" -#: tikka/slots/pyqt/windows/transfer.py:310 -#: tikka/slots/pyqt/windows/transfer.py:356 -#: tikka/slots/pyqt/windows/transfer.py:386 -#: tikka/slots/pyqt/windows/transfer.py:422 +#: tikka/slots/pyqt/windows/transfer.py:323 +#: tikka/slots/pyqt/windows/transfer.py:369 +#: tikka/slots/pyqt/windows/transfer.py:399 +#: tikka/slots/pyqt/windows/transfer.py:435 msgid "Invalid address! Please check it again." msgstr "Adresse invalide ! Veuillez la vérifier." -#: tikka/slots/pyqt/windows/transfer.py:463 +#: tikka/slots/pyqt/windows/transfer.py:476 msgid "Unknown!" msgstr "Inconnu !" -#: tikka/slots/pyqt/windows/transfer.py:466 +#: tikka/slots/pyqt/windows/transfer.py:479 msgid "" "Account balance unknown! Send only one unit and make sure the owner can get " "it" @@ -969,12 +968,12 @@ msgstr "" "Solde du compte inconnu ! Envoyer une seule unité et assurez-vous que le " "propriétaire peut la récupérer" -#: tikka/slots/pyqt/windows/transfer.py:593 +#: tikka/slots/pyqt/windows/transfer.py:606 msgid "Transfer failed. Please check logs to understand why" msgstr "" "Échec du virement. Veuillez vérifier les logs pour comprendre la raison" -#: tikka/slots/pyqt/windows/transfer.py:602 +#: tikka/slots/pyqt/windows/transfer.py:615 msgid "Transfer done" msgstr "Virement effectué" @@ -989,7 +988,7 @@ msgid "Impossible to connect" msgstr "Connexion impossible" #: tikka/slots/pyqt/windows/account_derivation_create.py:185 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:527 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:528 msgid "Mnemonic address is not the root account address!" msgstr "L'adresse du mnémonique n'est pas l'adresse du compte racine !" @@ -1022,23 +1021,23 @@ msgid "This account does not exists" msgstr "Ce compte n'existe pas" #: tikka/slots/pyqt/windows/v1_account_import_wizard.py:312 -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:613 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:617 msgid "Account is valid" msgstr "Le compte est valide" -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:609 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:613 msgid "Account has already an identity!" msgstr "Le compte a déjà une identité !" -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:811 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:826 msgid "Account imported successfully!" msgstr "Compte importé avec succès !" -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:825 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:843 msgid "Error importing money!" msgstr "Erreur d'importation de la monnaie !" -#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:827 +#: tikka/slots/pyqt/windows/v1_account_import_wizard.py:845 msgid "Error importing identity!" msgstr "Erreur d'importation de l'identité !" diff --git a/tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard.ui b/tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard.ui index 0ea37283f441dff459d0e458b1c7415a48a63765..15ce1d5d5d068d804cf851aa997474a5d03fdd09 100644 --- a/tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard.ui +++ b/tikka/slots/pyqt/resources/gui/windows/v1_account_import_wizard.ui @@ -107,6 +107,9 @@ p, li { white-space: pre-wrap; } <property name="text"> <string/> </property> + <property name="textInteractionFlags"> + <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> + </property> </widget> </item> <item row="2" column="0"> @@ -144,13 +147,6 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> - <item row="2" column="2"> - <widget class="QLabel" name="sourceV1AddressValueLabel"> - <property name="text"> - <string/> - </property> - </widget> - </item> <item row="3" column="0"> <widget class="QLabel" name="sourceAddressLabel"> <property name="font"> @@ -269,6 +265,16 @@ p, li { white-space: pre-wrap; } </property> </widget> </item> + <item row="2" column="2"> + <widget class="QLabel" name="sourceV1AddressValueLabel"> + <property name="text"> + <string/> + </property> + <property name="textInteractionFlags"> + <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> + </property> + </widget> + </item> </layout> </item> <item> @@ -477,6 +483,9 @@ p, li { white-space: pre-wrap; } <property name="text"> <string/> </property> + <property name="textInteractionFlags"> + <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> + </property> </widget> </item> <item row="3" column="0"> @@ -645,6 +654,9 @@ p, li { white-space: pre-wrap; } <property name="text"> <string/> </property> + <property name="textInteractionFlags"> + <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> + </property> </widget> </item> <item row="0" column="0"> @@ -799,6 +811,9 @@ p, li { white-space: pre-wrap; } <property name="text"> <string/> </property> + <property name="textInteractionFlags"> + <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> + </property> </widget> </item> <item row="2" column="1"> diff --git a/tikka/slots/pyqt/windows/transfer.py b/tikka/slots/pyqt/windows/transfer.py index 7bdb74a2052afde7c8697d6b7c252827eabfe1ee..b174c06245683c259c3ff2b4f6850e4a7813feef 100644 --- a/tikka/slots/pyqt/windows/transfer.py +++ b/tikka/slots/pyqt/windows/transfer.py @@ -147,13 +147,21 @@ class TransferWindow(QDialog, Ui_TransferDialog): # todo: create a model to fetch only a filtered list from database on edit self.account_address_by_name: Dict[str, str] = {} account_address_by_name_duplicate_count = 1 - for account_ in self.application.accounts.get_list(): - if account_.name in self.account_address_by_name: + for account_instance in self.application.accounts.get_list(): + if ( + account_instance.name in self.account_address_by_name + and account_instance.name is not None + ): self.account_address_by_name[ - f"{account_.name} ({account_address_by_name_duplicate_count})" - ] = account_.address + f"{account_instance.name} ({account_address_by_name_duplicate_count})" + ] = account_instance.address else: - self.account_address_by_name[account_.name] = account_.address + if account_instance.name is None: + self.account_address_by_name[""] = account_instance.address + else: + self.account_address_by_name[ + account_instance.name + ] = account_instance.address # sender autocomplete only on accounts with wallet self.sender_account_wordlist = [] diff --git a/tikka/slots/pyqt/windows/v1_account_import_wizard.py b/tikka/slots/pyqt/windows/v1_account_import_wizard.py index 9b717fb8470d3ea703d380338798c5b9dfa890c1..57fa4d834a3f29a67f38b0e02fb5b088a7f988e8 100644 --- a/tikka/slots/pyqt/windows/v1_account_import_wizard.py +++ b/tikka/slots/pyqt/windows/v1_account_import_wizard.py @@ -460,24 +460,25 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): ) # select derivation: //0 if source account is member, first even number if not + destination_derivation = None if ( self.source_account is not None and self.source_account.identity_index is not None ): - self.destination_derivation = DERIVATION_PATH_MEMBER - else: - if self.destination_root_account is not None: - available_derivation_list = ( - self.application.accounts.get_available_derivation_list( - self.destination_root_account - ) + destination_derivation = DERIVATION_PATH_MEMBER + + if self.destination_root_account is not None and destination_derivation is None: + available_derivation_list = ( + self.application.accounts.get_available_derivation_list( + self.destination_root_account ) - if self.destination_derivation == DERIVATION_PATH_MEMBER: - self.destination_derivation = available_derivation_list[1] - else: - self.destination_derivation = available_derivation_list[0] + ) + if available_derivation_list[0] == DERIVATION_PATH_MEMBER: + destination_derivation = available_derivation_list[1] + else: + destination_derivation = available_derivation_list[0] - self.destinationDerivationValueLabel.setText(self.destination_derivation) + self.destinationDerivationValueLabel.setText(destination_derivation) # if account name displayed in combobox... if ( @@ -498,7 +499,7 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): self.destination_mnemonic = sanitize_mnemonic_string( self.destinationMnemonicLineEdit.text() ) - suri = self.destination_mnemonic + self.destination_derivation + suri = self.destination_mnemonic + destination_derivation if not Keypair.validate_mnemonic(self.destination_mnemonic, language_code): self.destinationErrorLabel.setText( self._("Mnemonic or language not valid!") @@ -558,6 +559,9 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): self.destination_keypair.ss58_address, self.destinationNameLineEdit.text().strip(), ) + self.destination_account.crypto_type = KeypairType.SR25519 + self.destination_account.root = self.destination_root_account.address + self.destination_account.path = destination_derivation self.destinationAddressValueLabel.setText(self.destination_account.address) # fetch if v2 account exists on network @@ -687,7 +691,9 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): if ( self.source_account is not None - and self.source_account.balance == 0 + and ( + self.source_account.balance == 0 or self.source_account.balance is None + ) and self.source_account.identity_index is None ): result = True @@ -733,6 +739,7 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): self.source_account.address ) ) + self.source_account.identity_index = ( self.application.identities.fetch_index_from_network( self.source_account.address @@ -744,6 +751,7 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): self.destination_account.address ) ) + self.destination_account.identity_index = ( self.application.identities.fetch_index_from_network( self.destination_account.address @@ -766,6 +774,10 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): self.amount.symbol(), ) ) + else: + # empty account deleted from blockchain + self.sourceBalanceValueImportLabel.setText("") + if self.source_account.identity_index is not None: identity = self.application.identities.get( self.source_account.identity_index @@ -788,6 +800,9 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): self.amount.symbol(), ) ) + else: + self.destinationBalanceValueImportLabel.setText("") + if self.destination_account.identity_index is not None: identity = self.application.identities.get( self.destination_account.identity_index @@ -821,7 +836,10 @@ class V1AccountImportWizardWindow(QWizard, Ui_importAccountV1Wizard): else: self.importButton.setDisabled(False) self.importErrorLabel.setStyleSheet("color: red;") - if self.source_account.balance != 0: + if ( + self.source_account.balance is not None + and self.source_account.balance > 0 + ): self.importErrorLabel.setText(self._("Error importing money!")) elif self.destination_account.identity_index is None: self.importErrorLabel.setText(self._("Error importing identity!"))