1
0

qt/fee_slider: add type hints, small API change, qt parenting

This commit is contained in:
SomberNight
2025-03-11 15:45:26 +00:00
parent 163f59f83f
commit 7343d69ed7
4 changed files with 20 additions and 12 deletions

View File

@@ -182,7 +182,7 @@ class TxEditor(WindowModalDialog):
self.feerate_e.textChanged.connect(self.entry_changed)
self.fee_target = QLabel('')
self.fee_slider = FeeSlider(self, self.fee_policy, self.fee_slider_callback)
self.fee_slider = FeeSlider(parent=self, network=self.network, fee_policy=self.fee_policy, callback=self.fee_slider_callback)
self.fee_combo = FeeComboBox(self.fee_slider)
self.fee_combo.setFocusPolicy(Qt.FocusPolicy.NoFocus)

View File

@@ -1,16 +1,18 @@
import threading
from typing import Callable, Optional
from PyQt6.QtGui import QCursor
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QSlider, QToolTip, QComboBox
from PyQt6.QtWidgets import QSlider, QToolTip, QComboBox, QWidget
from electrum.i18n import _
from electrum.fee_policy import FeeMethod
from electrum.fee_policy import FeeMethod, FeePolicy
from electrum.network import Network
class FeeComboBox(QComboBox):
def __init__(self, fee_slider):
def __init__(self, fee_slider: 'FeeSlider'):
QComboBox.__init__(self)
self.fee_slider = fee_slider
self.addItems([x.name_for_GUI() for x in FeeMethod.slider_values()])
@@ -32,10 +34,16 @@ class FeeComboBox(QComboBox):
class FeeSlider(QSlider):
def __init__(self, window, fee_policy, callback):
QSlider.__init__(self, Qt.Orientation.Horizontal)
self.window = window
self.network = window.network
def __init__(
self,
*,
parent: Optional[QWidget],
network: Network,
fee_policy: FeePolicy,
callback: Callable[[Optional[int]], None],
):
QSlider.__init__(self, Qt.Orientation.Horizontal, parent=parent)
self.network = network
self.callback = callback
self.fee_policy = fee_policy
self.lock = threading.RLock()
@@ -44,10 +52,10 @@ class FeeSlider(QSlider):
self._active = True
@property
def dyn(self):
def dyn(self) -> bool:
return self.fee_policy.use_dynamic_estimates
def get_policy(self):
def get_policy(self) -> FeePolicy:
return self.fee_policy
def moved(self, pos):

View File

@@ -2704,7 +2704,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger, QtEventListener):
def on_rate(fee_rate):
fee = get_child_fee_from_total_feerate(fee_rate)
fee_e.setAmount(fee)
fee_slider = FeeSlider(self, fee_policy, on_rate)
fee_slider = FeeSlider(parent=self, network=self.network, fee_policy=fee_policy, callback=on_rate)
fee_combo = FeeComboBox(fee_slider)
fee_slider.update()
grid.addWidget(fee_slider, 4, 1)

View File

@@ -78,7 +78,7 @@ class SwapDialog(WindowModalDialog, QtEventListener):
self.recv_amount_e.setEnabled(recv_amount_sat is None)
self.max_button.setEnabled(recv_amount_sat is None)
self.fee_policy = FeePolicy(self.config.FEE_POLICY)
fee_slider = FeeSlider(self.window, self.fee_policy, self.fee_slider_callback)
fee_slider = FeeSlider(parent=self, network=self.network, fee_policy=self.fee_policy, callback=self.fee_slider_callback)
fee_combo = FeeComboBox(fee_slider)
fee_slider.update()
self.fee_label = QLabel()