diff --git a/electrum/gui/qml/components/InfoTextArea.qml b/electrum/gui/qml/components/InfoTextArea.qml
new file mode 100644
index 000000000..5f9d2dbec
--- /dev/null
+++ b/electrum/gui/qml/components/InfoTextArea.qml
@@ -0,0 +1,57 @@
+import QtQuick 2.6
+import QtQuick.Layouts 1.0
+import QtQuick.Controls 2.1
+import QtQuick.Controls.Material 2.0
+
+GridLayout {
+ property alias text: infotext.text
+
+ enum IconStyle {
+ None,
+ Info,
+ Warn,
+ Error
+ }
+
+ property int iconStyle: InfoTextArea.IconStyle.Info
+
+ columns: 1
+ rowSpacing: 0
+
+ Rectangle {
+ height: 2
+ Layout.fillWidth: true
+ color: Qt.rgba(1,1,1,0.25)
+ }
+
+ TextArea {
+ id: infotext
+ Layout.fillWidth: true
+ readOnly: true
+ rightPadding: 16
+ leftPadding: 64
+ wrapMode: TextInput.WordWrap
+ textFormat: TextEdit.RichText
+ background: Rectangle {
+ color: Qt.rgba(1,1,1,0.05) // whiten 5%
+ }
+
+ Image {
+ source: iconStyle == InfoTextArea.IconStyle.Info ? "../../icons/info.png" : InfoTextArea.IconStyle.Warn ? "../../icons/warning.png" : InfoTextArea.IconStyle.Error ? "../../icons/expired.png" : ""
+ anchors.left: parent.left
+ anchors.top: parent.top
+ anchors.leftMargin: 16
+ anchors.topMargin: 16
+ height: 32
+ width: 32
+ fillMode: Image.PreserveAspectCrop
+ }
+
+ }
+
+ Rectangle {
+ height: 2
+ Layout.fillWidth: true
+ color: Qt.rgba(0,0,0,0.25)
+ }
+}
diff --git a/electrum/gui/qml/components/Wizard.qml b/electrum/gui/qml/components/Wizard.qml
index a4a4e1b74..0f2e7872e 100644
--- a/electrum/gui/qml/components/Wizard.qml
+++ b/electrum/gui/qml/components/Wizard.qml
@@ -129,4 +129,38 @@ Dialog {
}
}
+ header: GridLayout {
+ columns: 2
+ rowSpacing: 0
+
+ Image {
+ source: "../../icons/electrum.png"
+ Layout.preferredWidth: 48
+ Layout.preferredHeight: 48
+ Layout.leftMargin: 12
+ Layout.topMargin: 12
+ Layout.bottomMargin: 12
+ }
+
+ Label {
+ text: title
+ elide: Label.ElideRight
+ Layout.fillWidth: true
+ topPadding: 24
+ bottomPadding: 24
+ font.bold: true
+ font.pixelSize: 16
+ }
+
+ Rectangle {
+ Layout.columnSpan: 2
+ Layout.fillWidth: true
+ Layout.leftMargin: 4
+ Layout.rightMargin: 4
+ height: 1
+ color: Qt.rgba(0,0,0,0.5)
+ }
+ }
+
+
}
diff --git a/electrum/gui/qml/components/WizardComponents.qml b/electrum/gui/qml/components/WizardComponents.qml
index 62da140b3..7f87f6693 100644
--- a/electrum/gui/qml/components/WizardComponents.qml
+++ b/electrum/gui/qml/components/WizardComponents.qml
@@ -141,13 +141,10 @@ Item {
width: parent.width
columns: 1
- TextArea {
+ InfoTextArea {
id: warningtext
- readOnly: true
Layout.fillWidth: true
- wrapMode: TextInput.WordWrap
- textFormat: TextEdit.RichText
- background: Rectangle { color: "transparent" }
+ iconStyle: InfoTextArea.IconStyle.Warn
}
Label { text: qsTr('Your wallet generation seed is:') }
TextArea {
@@ -198,7 +195,7 @@ Item {
property Component haveseed: Component {
WizardComponent {
- valid: true
+ valid: false
onAccept: {
wizard_data['seed'] = seedtext.text
@@ -207,44 +204,89 @@ Item {
wizard_data['seed_bip39'] = bip39cb.checked
}
+ function checkValid() {
+ }
+
+ function setSeedTypeHelpText() {
+ var t = {
+ 'Electrum': [
+ qsTr('Electrum seeds are the default seed type.'),
+ qsTr('If you are restoring from a seed previously created by Electrum, choose this option')
+ ].join(' '),
+ 'BIP39': [
+ qsTr('BIP39 seeds can be imported in Electrum, so that users can access funds locked in other wallets.'),
+ '
',
+ qsTr('However, we do not generate BIP39 seeds, because they do not meet our safety standard.'),
+ qsTr('BIP39 seeds do not include a version number, which compromises compatibility with future software.'),
+ '
',
+ qsTr('We do not guarantee that BIP39 imports will always be supported in Electrum.')
+ ].join(' '),
+ 'SLIP39': [
+ qsTr('SLIP39 seeds can be imported in Electrum, so that users can access funds locked in other wallets.'),
+ '
',
+ qsTr('However, we do not generate SLIP39 seeds.')
+ ].join(' ')
+ }
+ infotext.text = t[seed_type.currentText]
+ }
+
GridLayout {
width: parent.width
- columns: 1
+ columns: 2
- Label { text: qsTr('Enter your seed') }
+ Label {
+ text: qsTr('Seed Type')
+ }
+ ComboBox {
+ id: seed_type
+ model: ['Electrum', 'BIP39', 'SLIP39']
+ onActivated: setSeedTypeHelpText()
+ }
+ InfoTextArea {
+ id: infotext
+ Layout.fillWidth: true
+ Layout.columnSpan: 2
+ }
+ Label {
+ text: qsTr('Enter your seed')
+ Layout.columnSpan: 2
+ }
TextArea {
id: seedtext
wrapMode: TextInput.WordWrap
Layout.fillWidth: true
+ Layout.columnSpan: 2
background: Rectangle {
color: "transparent"
border.color: Material.accentColor
}
leftInset: -5
rightInset: -5
+ onTextChanged: {
+ checkValid()
+ }
}
CheckBox {
id: extendcb
- enabled: true
+ Layout.columnSpan: 2
text: qsTr('Extend seed with custom words')
}
TextField {
id: customwordstext
visible: extendcb.checked
Layout.fillWidth: true
+ Layout.columnSpan: 2
placeholderText: qsTr('Enter your custom word(s)')
echoMode: TextInput.Password
}
- CheckBox {
- id: bip39cb
- enabled: true
- text: qsTr('BIP39')
- }
}
Bitcoin {
id: bitcoin
}
+ Component.onCompleted: {
+ setSeedTypeHelpText()
+ }
}
}
@@ -262,14 +304,11 @@ Item {
width: parent.width
columns: 1
- TextArea {
- readOnly: true
+ InfoTextArea {
Layout.fillWidth: true
- wrapMode: TextInput.WordWrap
text: qsTr('Your seed is important!') + ' ' +
qsTr('If you lose your seed, your money will be permanently lost.') + ' ' +
qsTr('To make sure that you have properly saved your seed, please retype it here.')
- background: Rectangle { color: "transparent" }
}
Label { text: qsTr('Confirm your seed (re-enter)') }
TextArea {