qml: enable first wizard page of multisig
This commit is contained in:
@@ -39,6 +39,9 @@ Item {
|
|||||||
property color colorPiechartFrozen: 'gray'
|
property color colorPiechartFrozen: 'gray'
|
||||||
property color colorPiechartLightning: 'orange' //Qt.darker(Material.accentColor, 1.20)
|
property color colorPiechartLightning: 'orange' //Qt.darker(Material.accentColor, 1.20)
|
||||||
|
|
||||||
|
property color colorPiechartParticipant: 'gray'
|
||||||
|
property color colorPiechartSignature: 'yellow'
|
||||||
|
|
||||||
function colorAlpha(baseColor, alpha) {
|
function colorAlpha(baseColor, alpha) {
|
||||||
return Qt.rgba(baseColor.r, baseColor.g, baseColor.b, alpha)
|
return Qt.rgba(baseColor.r, baseColor.g, baseColor.b, alpha)
|
||||||
}
|
}
|
||||||
|
|||||||
100
electrum/gui/qml/components/wizard/WCMultisig.qml
Normal file
100
electrum/gui/qml/components/wizard/WCMultisig.qml
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
import QtQuick 2.6
|
||||||
|
import QtQuick.Layouts 1.0
|
||||||
|
import QtQuick.Controls 2.1
|
||||||
|
|
||||||
|
import org.electrum 1.0
|
||||||
|
|
||||||
|
import "../controls"
|
||||||
|
|
||||||
|
WizardComponent {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
valid: true
|
||||||
|
|
||||||
|
property int participants: 2
|
||||||
|
property int signatures: 2
|
||||||
|
|
||||||
|
onParticipantsChanged: {
|
||||||
|
if (participants < signatures)
|
||||||
|
signatures = participants
|
||||||
|
piechart.updateSlices()
|
||||||
|
}
|
||||||
|
onSignaturesChanged: {
|
||||||
|
piechart.updateSlices()
|
||||||
|
}
|
||||||
|
|
||||||
|
function apply() {
|
||||||
|
wizard_data['multisig_participants'] = participants
|
||||||
|
wizard_data['multisig_signatures'] = signatures
|
||||||
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
Label { text: qsTr('Multisig wallet') }
|
||||||
|
|
||||||
|
InfoTextArea {
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
|
text: qsTr('Choose the number of participants, and the number of signatures needed to unlock funds in your wallet.')
|
||||||
|
}
|
||||||
|
|
||||||
|
Piechart {
|
||||||
|
id: piechart
|
||||||
|
Layout.preferredWidth: parent.width * 1/2
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
Layout.preferredHeight: 200 // TODO
|
||||||
|
showLegend: false
|
||||||
|
innerOffset: 3
|
||||||
|
function updateSlices() {
|
||||||
|
var s = []
|
||||||
|
for (let i=0; i < participants; i++) {
|
||||||
|
var item = {
|
||||||
|
v: (1/participants),
|
||||||
|
color: i < signatures ? constants.colorPiechartSignature : constants.colorPiechartParticipant
|
||||||
|
}
|
||||||
|
s.push(item)
|
||||||
|
}
|
||||||
|
piechart.slices = s
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: qsTr('Number of cosigners: %1').arg(participants)
|
||||||
|
}
|
||||||
|
|
||||||
|
Slider {
|
||||||
|
id: participants_slider
|
||||||
|
Layout.preferredWidth: parent.width * 4/5
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
snapMode: Slider.SnapAlways
|
||||||
|
stepSize: 1
|
||||||
|
from: 2
|
||||||
|
to: 15
|
||||||
|
onValueChanged: {
|
||||||
|
if (activeFocus)
|
||||||
|
participants = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
text: qsTr('Number of signatures: %1').arg(signatures)
|
||||||
|
}
|
||||||
|
|
||||||
|
Slider {
|
||||||
|
id: signatures_slider
|
||||||
|
Layout.preferredWidth: parent.width * 4/5
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
snapMode: Slider.SnapAlways
|
||||||
|
stepSize: 1
|
||||||
|
from: 1
|
||||||
|
to: participants
|
||||||
|
onValueChanged: {
|
||||||
|
if (activeFocus)
|
||||||
|
signatures = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: piechart.updateSlices()
|
||||||
|
|
||||||
|
}
|
||||||
@@ -32,7 +32,6 @@ WizardComponent {
|
|||||||
text: qsTr('Wallet with two-factor authentication')
|
text: qsTr('Wallet with two-factor authentication')
|
||||||
}
|
}
|
||||||
RadioButton {
|
RadioButton {
|
||||||
enabled: false
|
|
||||||
ButtonGroup.group: wallettypegroup
|
ButtonGroup.group: wallettypegroup
|
||||||
property string wallettype: 'multisig'
|
property string wallettype: 'multisig'
|
||||||
text: qsTr('Multi-signature wallet')
|
text: qsTr('Multi-signature wallet')
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ class QENewWalletWizard(NewWalletWizard, QEAbstractWizard):
|
|||||||
'have_seed': { 'gui': 'WCHaveSeed' },
|
'have_seed': { 'gui': 'WCHaveSeed' },
|
||||||
'bip39_refine': { 'gui': 'WCBIP39Refine' },
|
'bip39_refine': { 'gui': 'WCBIP39Refine' },
|
||||||
'have_master_key': { 'gui': 'WCHaveMasterKey' },
|
'have_master_key': { 'gui': 'WCHaveMasterKey' },
|
||||||
|
'multisig': { 'gui': 'WCMultisig' },
|
||||||
'imported': { 'gui': 'WCImport' },
|
'imported': { 'gui': 'WCImport' },
|
||||||
'wallet_password': { 'gui': 'WCWalletPassword' }
|
'wallet_password': { 'gui': 'WCWalletPassword' }
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -163,6 +163,9 @@ class NewWalletWizard(AbstractWizard):
|
|||||||
'next': 'wallet_password',
|
'next': 'wallet_password',
|
||||||
'last': self.last_if_single_password
|
'last': self.last_if_single_password
|
||||||
},
|
},
|
||||||
|
'multisig': {
|
||||||
|
'next': 'first_cosigner'
|
||||||
|
},
|
||||||
'imported': {
|
'imported': {
|
||||||
'next': 'wallet_password',
|
'next': 'wallet_password',
|
||||||
'last': self.last_if_single_password
|
'last': self.last_if_single_password
|
||||||
@@ -189,6 +192,7 @@ class NewWalletWizard(AbstractWizard):
|
|||||||
return {
|
return {
|
||||||
'standard': 'keystore_type',
|
'standard': 'keystore_type',
|
||||||
'2fa': 'trustedcoin_start',
|
'2fa': 'trustedcoin_start',
|
||||||
|
'multisig': 'multisig',
|
||||||
'imported': 'imported'
|
'imported': 'imported'
|
||||||
}.get(t)
|
}.get(t)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user