Browse Source

qt and qml: update swap dialogs when new fees are received (see #8295)

master
ThomasV 3 years ago
parent
commit
46b25317a9
  1. 1
      electrum/gui/qml/qenetwork.py
  2. 15
      electrum/gui/qml/qeswaphelper.py
  3. 18
      electrum/gui/qt/swap_dialog.py

1
electrum/gui/qml/qenetwork.py

@ -55,6 +55,7 @@ class QENetwork(QObject, QtEventListener):
self._height = network.get_local_height() # init here, update event can take a while
self._server_height = network.get_server_height() # init here, update event can take a while
self.register_callbacks()
self.destroyed.connect(self.unregister_callbacks)
self._qeconfig.useGossipChanged.connect(self.on_gossip_setting_changed)

15
electrum/gui/qml/qeswaphelper.py

@ -14,8 +14,9 @@ from electrum.util import NotEnoughFunds, NoDynamicFeeEstimates, profiler
from .auth import AuthMixin, auth_protect
from .qetypes import QEAmount
from .qewallet import QEWallet
from .util import QtEventListener, qt_event_listener
class QESwapHelper(AuthMixin, QObject):
class QESwapHelper(AuthMixin, QObject, QtEventListener):
_logger = get_logger(__name__)
confirm = pyqtSignal([str], arguments=['message'])
@ -52,12 +53,14 @@ class QESwapHelper(AuthMixin, QObject):
self._leftVoid = 0
self._rightVoid = 0
self.register_callbacks()
self.destroyed.connect(self.unregister_callbacks)
self._fwd_swap_updatetx_timer = QTimer(self)
self._fwd_swap_updatetx_timer.setSingleShot(True)
# self._fwd_swap_updatetx_timer.setInterval(500)
self._fwd_swap_updatetx_timer.timeout.connect(self.fwd_swap_updatetx)
walletChanged = pyqtSignal()
@pyqtProperty(QEWallet, notify=walletChanged)
def wallet(self):
@ -281,6 +284,14 @@ class QESwapHelper(AuthMixin, QObject):
self._tx = None
self.valid = False
@qt_event_listener
def on_event_fee_histogram(self, *args):
self.swap_slider_moved()
@qt_event_listener
def on_event_fee(self, *args):
self.swap_slider_moved()
def swap_slider_moved(self):
if not self._service_available:
return

18
electrum/gui/qt/swap_dialog.py

@ -12,6 +12,7 @@ from electrum.gui import messages
from . import util
from .util import (WindowModalDialog, Buttons, OkButton, CancelButton,
EnterButton, ColorScheme, WWLabel, read_QIcon, IconLabel, char_width_in_lineedit)
from .util import qt_event_listener, QtEventListener
from .amountedit import BTCAmountEdit
from .fee_slider import FeeSlider, FeeComboBox
from .my_treeview import create_toolbar_with_menu
@ -27,7 +28,7 @@ Do you want to continue?
"""
class SwapDialog(WindowModalDialog):
class SwapDialog(WindowModalDialog, QtEventListener):
tx: Optional[PartialTransaction]
@ -103,6 +104,21 @@ class SwapDialog(WindowModalDialog):
self.update()
self.needs_tx_update = True
self.window.gui_object.timer.timeout.connect(self.timer_actions)
self.register_callbacks()
def closeEvent(self, event):
self.unregister_callbacks()
event.accept()
@qt_event_listener
def on_event_fee_histogram(self, *args):
self.on_send_edited()
self.on_recv_edited()
@qt_event_listener
def on_event_fee(self, *args):
self.on_send_edited()
self.on_recv_edited()
def timer_actions(self):
if self.needs_tx_update:

Loading…
Cancel
Save