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:
@@ -112,7 +112,7 @@ Item {
|
|||||||
|
|
||||||
property Component createseed: Component {
|
property Component createseed: Component {
|
||||||
WizardComponent {
|
WizardComponent {
|
||||||
valid: true
|
valid: seedtext.text != ''
|
||||||
|
|
||||||
onAccept: {
|
onAccept: {
|
||||||
wizard_data['seed'] = seedtext.text
|
wizard_data['seed'] = seedtext.text
|
||||||
@@ -121,6 +121,22 @@ Item {
|
|||||||
wizard_data['seed_extra_words'] = extendcb.checked ? customwordstext.text : ''
|
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 {
|
GridLayout {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
columns: 1
|
columns: 1
|
||||||
@@ -145,6 +161,13 @@ Item {
|
|||||||
}
|
}
|
||||||
leftInset: -5
|
leftInset: -5
|
||||||
rightInset: -5
|
rightInset: -5
|
||||||
|
|
||||||
|
BusyIndicator {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
height: parent.height *2/3
|
||||||
|
visible: seedtext.text == ''
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
CheckBox {
|
CheckBox {
|
||||||
id: extendcb
|
id: extendcb
|
||||||
@@ -158,6 +181,7 @@ Item {
|
|||||||
echoMode: TextInput.Password
|
echoMode: TextInput.Password
|
||||||
}
|
}
|
||||||
Component.onCompleted : {
|
Component.onCompleted : {
|
||||||
|
setWarningText(12)
|
||||||
bitcoin.generate_seed()
|
bitcoin.generate_seed()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,20 +190,7 @@ Item {
|
|||||||
id: bitcoin
|
id: bitcoin
|
||||||
onGeneratedSeedChanged: {
|
onGeneratedSeedChanged: {
|
||||||
seedtext.text = generated_seed
|
seedtext.text = generated_seed
|
||||||
|
setWarningText(generated_seed.split(" ").length)
|
||||||
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("")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import asyncio
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
|
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject
|
||||||
|
|
||||||
from electrum.logging import get_logger
|
from electrum.logging import get_logger
|
||||||
@@ -25,9 +27,14 @@ class QEBitcoin(QObject):
|
|||||||
@pyqtSlot(str,str)
|
@pyqtSlot(str,str)
|
||||||
def generate_seed(self, seed_type='segwit', language='en'):
|
def generate_seed(self, seed_type='segwit', language='en'):
|
||||||
self._logger.debug('generating seed of type ' + str(seed_type))
|
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')
|
async def co_gen_seed(seed_type, language):
|
||||||
self.generatedSeedChanged.emit()
|
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)
|
@pyqtProperty(bool, notify=seedValidChanged)
|
||||||
def seed_valid(self):
|
def seed_valid(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user