Skip to content

Commit aef2a7a

Browse files
authored
Merge pull request #9705 from accumulator/qml_freeze_reused_address_utxos
qml: add config option WALLET_FREEZE_REUSED_ADDRESS_UTXOS
2 parents cca29ef + 6e8f97d commit aef2a7a

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

electrum/gui/qml/components/Preferences.qml

+18
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,23 @@ Pane {
271271
}
272272
}
273273

274+
RowLayout {
275+
Layout.columnSpan: 2
276+
spacing: 0
277+
Switch {
278+
id: freezeReusedAddressUtxos
279+
onCheckedChanged: {
280+
if (activeFocus)
281+
Config.freezeReusedAddressUtxos = checked
282+
}
283+
}
284+
Label {
285+
Layout.fillWidth: true
286+
text: Config.shortDescFor('WALLET_FREEZE_REUSED_ADDRESS_UTXOS')
287+
wrapMode: Text.Wrap
288+
}
289+
}
290+
274291
PrefsHeading {
275292
Layout.columnSpan: 2
276293
text: qsTr('Lightning')
@@ -441,6 +458,7 @@ Pane {
441458
rateSources.currentIndex = rateSources.indexOfValue(Daemon.fx.rateSource)
442459
fiatEnable.checked = Daemon.fx.enabled
443460
spendUnconfirmed.checked = Config.spendUnconfirmed
461+
freezeReusedAddressUtxos.checked = Config.freezeReusedAddressUtxos
444462
useTrampolineRouting.checked = !Config.useGossip
445463
enableDebugLogs.checked = Config.enableDebugLogs
446464
alwaysAllowScreenshots.checked = Config.alwaysAllowScreenshots

electrum/gui/qml/qeaddresslistmodel.py

+3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from electrum.logging import get_logger
77
from electrum.util import Satoshis
8+
from .qeconfig import QEConfig
89

910
from .qetypes import QEAmount
1011
from .util import qt_event_listener, QtEventListener
@@ -122,6 +123,8 @@ def __init__(self, wallet: 'Abstract_Wallet', parent=None):
122123
self.register_callbacks()
123124
self.destroyed.connect(lambda: self.on_destroy())
124125

126+
QEConfig.instance.freezeReusedAddressUtxosChanged.connect(lambda: self.setDirty())
127+
125128
self._dirty = True
126129
self.initModel()
127130

electrum/gui/qml/qeconfig.py

+14
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@
1818

1919

2020
class QEConfig(AuthMixin, QObject):
21+
instance = None # type: Optional[QEConfig]
2122
_logger = get_logger(__name__)
2223

2324
def __init__(self, config: 'SimpleConfig', parent=None):
2425
super().__init__(parent)
26+
if QEConfig.instance:
27+
raise RuntimeError('There should only be one QEConfig instance')
28+
QEConfig.instance = self
2529
self.config = config
2630

2731
@pyqtSlot(str, result=str)
@@ -120,6 +124,16 @@ def spendUnconfirmed(self, checked):
120124
self.config.WALLET_SPEND_CONFIRMED_ONLY = not checked
121125
self.spendUnconfirmedChanged.emit()
122126

127+
freezeReusedAddressUtxosChanged = pyqtSignal()
128+
@pyqtProperty(bool, notify=freezeReusedAddressUtxosChanged)
129+
def freezeReusedAddressUtxos(self):
130+
return self.config.WALLET_FREEZE_REUSED_ADDRESS_UTXOS
131+
132+
@freezeReusedAddressUtxos.setter
133+
def freezeReusedAddressUtxos(self, checked):
134+
self.config.WALLET_FREEZE_REUSED_ADDRESS_UTXOS = checked
135+
self.freezeReusedAddressUtxosChanged.emit()
136+
123137
requestExpiryChanged = pyqtSignal()
124138
@pyqtProperty(int, notify=requestExpiryChanged)
125139
def requestExpiry(self):

0 commit comments

Comments
 (0)