Browse Source

expose additional wallet properties

(lightning enabled, balance, masterpubkey)

and a few smaller improvements
patch-4
Sander van Grieken 3 years ago
parent
commit
532d19979d
  1. 1
      electrum/gui/qml/components/AddressDetails.qml
  2. 1
      electrum/gui/qml/components/TxDetails.qml
  3. 168
      electrum/gui/qml/components/Wallets.qml
  4. 1
      electrum/gui/qml/components/controls/TextHighlightPane.qml
  5. 20
      electrum/gui/qml/qewallet.py

1
electrum/gui/qml/components/AddressDetails.qml

@ -122,6 +122,7 @@ Pane {
onClicked: {
labelEdit.text = addressdetails.label
labelContent.editmode = true
labelEdit.focus = true
}
}
TextField {

1
electrum/gui/qml/components/TxDetails.qml

@ -175,6 +175,7 @@ Pane {
onClicked: {
labelEdit.text = txdetails.label
labelContent.editmode = true
labelEdit.focus = true
}
}
TextField {

168
electrum/gui/qml/components/Wallets.qml

@ -17,39 +17,71 @@ Pane {
width: parent.width
height: parent.height
Item {
width: parent.width
height: detailsLayout.height
GridLayout {
id: detailsLayout
Layout.preferredWidth: parent.width
columns: 4
GridLayout {
id: detailsLayout
width: parent.width
columns: 4
Label { text: 'Wallet'; Layout.columnSpan: 2; color: Material.accentColor }
Label { text: Daemon.currentWallet.name; Layout.columnSpan: 2 }
Label { text: 'derivation prefix (BIP32)'; visible: Daemon.currentWallet.isDeterministic; color: Material.accentColor; Layout.columnSpan: 2 }
Label { text: Daemon.currentWallet.derivationPrefix; visible: Daemon.currentWallet.isDeterministic; Layout.columnSpan: 2 }
Label { text: 'txinType'; color: Material.accentColor }
Label { text: Daemon.currentWallet.txinType }
Label { text: 'Wallet'; Layout.columnSpan: 2 }
Label { text: Daemon.currentWallet.name; Layout.columnSpan: 2; color: Material.accentColor }
Label { text: 'is deterministic'; color: Material.accentColor }
Label { text: Daemon.currentWallet.isDeterministic }
Label { text: 'derivation prefix (BIP32)'; visible: Daemon.currentWallet.isDeterministic; Layout.columnSpan: 2 }
Label { text: Daemon.currentWallet.derivationPrefix; visible: Daemon.currentWallet.isDeterministic; color: Material.accentColor; Layout.columnSpan: 2 }
Label { text: 'is watch only'; color: Material.accentColor }
Label { text: Daemon.currentWallet.isWatchOnly }
Label { text: 'txinType' }
Label { text: Daemon.currentWallet.txinType; color: Material.accentColor }
Label { text: 'is Encrypted'; color: Material.accentColor }
Label { text: Daemon.currentWallet.isEncrypted }
Label { text: 'is deterministic' }
Label { text: Daemon.currentWallet.isDeterministic; color: Material.accentColor }
Label { text: 'is Hardware'; color: Material.accentColor }
Label { text: Daemon.currentWallet.isHardware }
Label { text: 'is watch only' }
Label { text: Daemon.currentWallet.isWatchOnly; color: Material.accentColor }
Label { text: 'is Lightning'; color: Material.accentColor }
Label { text: Daemon.currentWallet.isLightning }
Label { text: 'is Encrypted' }
Label { text: Daemon.currentWallet.isEncrypted; color: Material.accentColor }
Label { text: 'has Seed'; color: Material.accentColor }
Label { text: Daemon.currentWallet.hasSeed; Layout.columnSpan: 3 }
Label { text: 'is Hardware' }
Label { text: Daemon.currentWallet.isHardware; color: Material.accentColor }
Label { Layout.columnSpan:4; text: qsTr('Master Public Key'); color: Material.accentColor }
TextHighlightPane {
Layout.columnSpan: 4
Layout.fillWidth: true
padding: 0
leftPadding: constants.paddingSmall
RowLayout {
width: parent.width
Label {
text: Daemon.currentWallet.masterPubkey
wrapMode: Text.Wrap
Layout.fillWidth: true
font.pixelSize: constants.fontSizeMedium
}
ToolButton {
icon.source: '../../icons/share.png'
icon.color: 'transparent'
onClicked: {
var dialog = share.createObject(rootItem, {
'title': qsTr('Master Public Key'),
'text': Daemon.currentWallet.masterPubkey
})
dialog.open()
}
}
}
}
// }
}
Item { width: 1; height: 1 }
Frame {
id: detailsFrame
@ -59,49 +91,71 @@ Pane {
horizontalPadding: 0
background: PaneInsetBackground {}
ListView {
id: listview
width: parent.width
height: parent.height
clip: true
model: Daemon.availableWallets
delegate: AbstractButton {
width: ListView.view.width
height: row.height
ColumnLayout {
spacing: 0
anchors.fill: parent
Item {
Layout.preferredHeight: hitem.height
Layout.preferredWidth: parent.width
Rectangle {
anchors.fill: parent
color: Qt.lighter(Material.background, 1.25)
}
RowLayout {
id: row
spacing: 10
x: constants.paddingSmall
width: parent.width - 2 * constants.paddingSmall
Image {
id: walleticon
source: "../../icons/wallet.png"
fillMode: Image.PreserveAspectFit
Layout.preferredWidth: constants.iconSizeLarge
Layout.preferredHeight: constants.iconSizeLarge
}
id: hitem
width: parent.width
Label {
text: qsTr('Available wallets')
font.pixelSize: constants.fontSizeLarge
text: model.name
Layout.fillWidth: true
color: Material.accentColor
}
}
}
Button {
text: 'Open'
onClicked: {
Daemon.load_wallet(model.path)
ListView {
id: listview
Layout.preferredWidth: parent.width
Layout.fillHeight: true
clip: true
model: Daemon.availableWallets
delegate: AbstractButton {
width: ListView.view.width
height: row.height
RowLayout {
id: row
spacing: 10
x: constants.paddingSmall
width: parent.width - 2 * constants.paddingSmall
Image {
id: walleticon
source: "../../icons/wallet.png"
fillMode: Image.PreserveAspectFit
Layout.preferredWidth: constants.iconSizeLarge
Layout.preferredHeight: constants.iconSizeLarge
}
Label {
font.pixelSize: constants.fontSizeLarge
text: model.name
Layout.fillWidth: true
}
Button {
text: 'Open'
onClicked: {
Daemon.load_wallet(model.path)
}
}
}
}
}
ScrollIndicator.vertical: ScrollIndicator { }
ScrollIndicator.vertical: ScrollIndicator { }
}
}
}
Button {
@ -126,4 +180,10 @@ Pane {
}
}
Component {
id: share
GenericShareDialog {
onClosed: destroy()
}
}
}

1
electrum/gui/qml/components/controls/TextHighlightPane.qml

@ -6,5 +6,6 @@ import QtQuick.Controls.Material 2.0
Pane {
background: Rectangle {
color: Qt.lighter(Material.background, 1.15)
radius: constants.paddingSmall
}
}

20
electrum/gui/qml/qewallet.py

@ -197,6 +197,15 @@ class QEWallet(QObject):
def name(self):
return self.wallet.basename()
isLightningChanged = pyqtSignal()
@pyqtProperty(bool, notify=isLightningChanged)
def isLightning(self):
return bool(self.wallet.lnworker)
@pyqtProperty(bool, notify=dataChanged)
def hasSeed(self):
return self.wallet.has_seed()
@pyqtProperty('QString', notify=dataChanged)
def txinType(self):
return self.wallet.get_txin_type(self.wallet.dummy_address())
@ -224,6 +233,10 @@ class QEWallet(QObject):
self._logger.debug('multiple keystores not supported yet')
return keystores[0].get_derivation_prefix()
@pyqtProperty(str, notify=dataChanged)
def masterPubkey(self):
return self.wallet.get_master_public_key()
balanceChanged = pyqtSignal()
@pyqtProperty(QEAmount, notify=balanceChanged)
@ -243,6 +256,13 @@ class QEWallet(QObject):
self._confirmedbalance = QEAmount(amount_sat=c+x)
return self._confirmedbalance
@pyqtProperty(QEAmount, notify=balanceChanged)
def lightningBalance(self):
if not self.isLightning:
return QEAmount()
self._lightningbalance = QEAmount(amount_sat=self.wallet.lnworker.get_balance())
return self._lightningbalance
@pyqtSlot('QString', int, int, bool)
def send_onchain(self, address, amount, fee=None, rbf=False):
self._logger.info('send_onchain: %s %d' % (address,amount))

Loading…
Cancel
Save