1
0

seed generation can take some time, do it in a background thread and

show a busy indicator while we wait
This commit is contained in:
Sander van Grieken
2022-03-08 15:24:02 +01:00
parent 4cae116ad8
commit 07452a6a7a
2 changed files with 36 additions and 18 deletions

View File

@@ -112,7 +112,7 @@ Item {
property Component createseed: Component {
WizardComponent {
valid: true
valid: seedtext.text != ''
onAccept: {
wizard_data['seed'] = seedtext.text
@@ -121,6 +121,22 @@ Item {
wizard_data['seed_extra_words'] = extendcb.checked ? customwordstext.text : ''
}
function setWarningText(numwords) {
var t = [
"<p>",
qsTr("Please save these %1 words on paper (order is important). ").arg(numwords),
qsTr("This seed will allow you to recover your wallet in case of computer failure."),
"</p>",
"<b>" + qsTr("WARNING") + ":</b>",
"<ul>",
"<li>" + qsTr("Never disclose your seed.") + "</li>",
"<li>" + qsTr("Never type it on a website.") + "</li>",
"<li>" + qsTr("Do not store it electronically.") + "</li>",
"</ul>"
]
warningtext.text = t.join("")
}
GridLayout {
width: parent.width
columns: 1
@@ -145,6 +161,13 @@ Item {
}
leftInset: -5
rightInset: -5
BusyIndicator {
anchors.centerIn: parent
height: parent.height *2/3
visible: seedtext.text == ''
}
}
CheckBox {
id: extendcb
@@ -158,6 +181,7 @@ Item {
echoMode: TextInput.Password
}
Component.onCompleted : {
setWarningText(12)
bitcoin.generate_seed()
}
}
@@ -166,20 +190,7 @@ Item {
id: bitcoin
onGeneratedSeedChanged: {
seedtext.text = generated_seed
var t = [
"<p>",
qsTr("Please save these %1 words on paper (order is important). ").arg(generated_seed.split(" ").length),
qsTr("This seed will allow you to recover your wallet in case of computer failure."),
"</p>",
"<b>" + qsTr("WARNING") + ":</b>",
"<ul>",
"<li>" + qsTr("Never disclose your seed.") + "</li>",
"<li>" + qsTr("Never type it on a website.") + "</li>",
"<li>" + qsTr("Do not store it electronically.") + "</li>",
"</ul>"
]
warningtext.text = t.join("")
setWarningText(generated_seed.split(" ").length)
}
}
}

View File

@@ -1,3 +1,5 @@
import asyncio
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
from electrum.logging import get_logger
@@ -25,9 +27,14 @@ class QEBitcoin(QObject):
@pyqtSlot(str,str)
def generate_seed(self, seed_type='segwit', language='en'):
self._logger.debug('generating seed of type ' + str(seed_type))
self.generatedSeed = mnemonic.Mnemonic(language).make_seed(seed_type=seed_type)
self._logger.debug('seed generated')
self.generatedSeedChanged.emit()
async def co_gen_seed(seed_type, language):
self.generatedSeed = mnemonic.Mnemonic(language).make_seed(seed_type=seed_type)
self._logger.debug('seed generated')
self.generatedSeedChanged.emit()
loop = asyncio.get_event_loop()
asyncio.run_coroutine_threadsafe(co_gen_seed(seed_type, language), loop)
@pyqtProperty(bool, notify=seedValidChanged)
def seed_valid(self):