diff --git a/electrum/fee_policy.py b/electrum/fee_policy.py index dd42237b0..cfb1909c4 100644 --- a/electrum/fee_policy.py +++ b/electrum/fee_policy.py @@ -64,8 +64,10 @@ class FeeMethod(IntEnum): @classmethod def slider_index_of_method(cls, method): - i = FeeMethod.slider_values().index(method) - assert i is not None + try: + i = FeeMethod.slider_values().index(method) + except ValueError: + i = -1 return i diff --git a/electrum/gui/qt/confirm_tx_dialog.py b/electrum/gui/qt/confirm_tx_dialog.py index 798be1b56..0babb0ef1 100644 --- a/electrum/gui/qt/confirm_tx_dialog.py +++ b/electrum/gui/qt/confirm_tx_dialog.py @@ -38,7 +38,7 @@ from electrum.plugin import run_hook from electrum.transaction import Transaction, PartialTransaction from electrum.wallet import InternalAddressCorruption from electrum.bitcoin import DummyAddress -from electrum.fee_policy import FeePolicy, FixedFeePolicy +from electrum.fee_policy import FeePolicy, FixedFeePolicy, FeeMethod from .util import (WindowModalDialog, ColorScheme, HelpLabel, Buttons, CancelButton, WWLabel, read_QIcon) @@ -163,7 +163,6 @@ class TxEditor(WindowModalDialog): self.fiat_fee_label.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet()) self.feerate_e = FeerateEdit(lambda: 0) - self.feerate_e.setAmount(self.fee_policy.fee_per_byte(self.network)) self.feerate_e.textEdited.connect(partial(self.on_fee_or_feerate, self.feerate_e, False)) self.feerate_e.editingFinished.connect(partial(self.on_fee_or_feerate, self.feerate_e, True)) self.update_feerate_label() @@ -175,6 +174,11 @@ class TxEditor(WindowModalDialog): self.feerate_e.setFixedWidth(150) self.fee_e.setFixedWidth(150) + if self.fee_policy.method != FeeMethod.FIXED: + self.feerate_e.setAmount(self.fee_policy.fee_per_byte(self.network)) + else: + self.fee_e.setAmount(self.fee_policy.value) + self.fee_e.textChanged.connect(self.entry_changed) self.feerate_e.textChanged.connect(self.entry_changed) @@ -229,6 +233,8 @@ class TxEditor(WindowModalDialog): self.needs_update = True def fee_slider_callback(self, fee_rate): + if self.fee_policy.method == FeeMethod.FIXED: + return self.config.FEE_POLICY = self.fee_policy.get_descriptor() self.fee_slider.activate() if fee_rate: diff --git a/electrum/gui/qt/fee_slider.py b/electrum/gui/qt/fee_slider.py index 1f407f233..79a76439f 100644 --- a/electrum/gui/qt/fee_slider.py +++ b/electrum/gui/qt/fee_slider.py @@ -60,6 +60,8 @@ class FeeSlider(QSlider): def moved(self, pos): with self.lock: + if self.fee_policy.method == FeeMethod.FIXED: + return self.fee_policy.set_value_from_slider_pos(pos) fee_rate = self.fee_policy.fee_per_kb(self.network) tooltip = self.fee_policy.get_tooltip(self.network) @@ -69,6 +71,8 @@ class FeeSlider(QSlider): def update(self, *, is_initialized: bool = True): with self.lock: + if self.fee_policy.method == FeeMethod.FIXED: + return pos = self.fee_policy.get_slider_pos() maxp = self.fee_policy.get_slider_max() self.setRange(0, maxp)