commit fb761b7c126b87c5397bb4128e7a9629a84c1f48
parent 848f4b9ae0a9445c328b4d53635558e22c5c7dbb
Author: ThomasV <thomasv@electrum.org>
Date: Thu, 1 Mar 2018 18:28:54 +0100
request fee historgam every minute. show fee in the send tab of kivy gui
Diffstat:
4 files changed, 36 insertions(+), 21 deletions(-)
diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py
@@ -82,7 +82,9 @@ class ElectrumWindow(App):
server_port = StringProperty('')
num_chains = NumericProperty(0)
blockchain_name = StringProperty('')
+ fee_status = StringProperty('Fee')
blockchain_checkpoint = NumericProperty(0)
+ _fee_dialog = None
auto_connect = BooleanProperty(False)
def on_auto_connect(self, instance, x):
@@ -271,6 +273,7 @@ class ElectrumWindow(App):
# cached dialogs
self._settings_dialog = None
self._password_dialog = None
+ self.fee_status = self.electrum_config.get_fee_status()
def wallet_name(self):
return os.path.basename(self.wallet.storage.path) if self.wallet else ' '
@@ -457,6 +460,7 @@ class ElectrumWindow(App):
if self.network:
interests = ['updated', 'status', 'new_transaction', 'verified', 'interfaces']
self.network.register_callback(self.on_network_event, interests)
+ self.network.register_callback(self.on_fee, ['fee'])
self.network.register_callback(self.on_quotes, ['on_quotes'])
self.network.register_callback(self.on_history, ['on_history'])
# URI passed in config
@@ -828,6 +832,18 @@ class ElectrumWindow(App):
popup = AmountDialog(show_max, amount, cb)
popup.open()
+ def fee_dialog(self, label, dt):
+ if self._fee_dialog is None:
+ from .uix.dialogs.fee_dialog import FeeDialog
+ def cb():
+ c = self.electrum_config
+ self.fee_status = c.get_fee_status()
+ self._fee_dialog = FeeDialog(self, self.electrum_config, cb)
+ self._fee_dialog.open()
+
+ def on_fee(self, event, *arg):
+ self.fee_status = self.electrum_config.get_fee_status()
+
def protected(self, msg, f, args):
if self.wallet.has_password():
self.password_dialog(msg, f, args)
diff --git a/gui/kivy/uix/dialogs/settings.py b/gui/kivy/uix/dialogs/settings.py
@@ -49,12 +49,6 @@ Builder.load_string('''
action: partial(root.unit_dialog, self)
CardSeparator
SettingsItem:
- status: root.fee_status()
- title: _('Fees') + ': ' + self.status
- description: _("Fees paid to the Bitcoin miners.")
- action: partial(root.fee_dialog, self)
- CardSeparator
- SettingsItem:
status: root.fx_status()
title: _('Fiat Currency') + ': ' + self.status
description: _("Display amounts in fiat currency.")
@@ -112,7 +106,6 @@ class SettingsDialog(Factory.Popup):
layout.bind(minimum_height=layout.setter('height'))
# cached dialogs
self._fx_dialog = None
- self._fee_dialog = None
self._proxy_dialog = None
self._language_dialog = None
self._unit_dialog = None
@@ -205,14 +198,6 @@ class SettingsDialog(Factory.Popup):
def fee_status(self):
return self.config.get_fee_status()
- def fee_dialog(self, label, dt):
- if self._fee_dialog is None:
- from .fee_dialog import FeeDialog
- def cb():
- label.status = self.fee_status()
- self._fee_dialog = FeeDialog(self.app, self.config, cb)
- self._fee_dialog.open()
-
def boolean_dialog(self, name, title, message, dt):
from .checkbox_dialog import CheckBoxDialog
CheckBoxDialog(title, message, getattr(self.app, name), lambda x: setattr(self.app, name, x)).open()
diff --git a/gui/kivy/uix/ui_screens/send.kv b/gui/kivy/uix/ui_screens/send.kv
@@ -71,6 +71,24 @@ SendScreen:
text: s.message if s.message else (_('No Description') if root.is_pr else _('Description'))
disabled: root.is_pr
on_release: Clock.schedule_once(lambda dt: app.description_dialog(s))
+ CardSeparator:
+ opacity: int(not root.is_pr)
+ color: blue_bottom.foreground_color
+ BoxLayout:
+ size_hint: 1, None
+ height: blue_bottom.item_height
+ spacing: '5dp'
+ Image:
+ source: 'atlas://gui/kivy/theming/light/star_big_inactive'
+ opacity: 0.7
+ size_hint: None, None
+ size: '22dp', '22dp'
+ pos_hint: {'center_y': .5}
+ BlueButton:
+ id: fee_e
+ default_text: _('Fee')
+ text: app.fee_status
+ on_release: Clock.schedule_once(lambda dt: app.fee_dialog(s, True))
BoxLayout:
size_hint: 1, None
height: '48dp'
diff --git a/lib/simple_config.py b/lib/simple_config.py
@@ -348,7 +348,7 @@ class SimpleConfig(PrintError):
pos = self.get_depth_level() if mempool else self.get_fee_level()
fee_rate = self.fee_per_kb()
target, tooltip = self.get_fee_text(pos, dyn, mempool, fee_rate)
- return target
+ return target + ' [%s]'%tooltip
def get_fee_text(self, pos, dyn, mempool, fee_rate):
"""Returns (text, tooltip) where
@@ -469,11 +469,7 @@ class SimpleConfig(PrintError):
Returns True if an update should be requested.
"""
now = time.time()
- prev_updates = self.fee_estimates_last_updated.values()
- oldest_fee_time = min(prev_updates) if prev_updates else 0
- stale_fees = now - oldest_fee_time > 7200
- old_request = now - self.last_time_fee_estimates_requested > 60
- return stale_fees and old_request
+ return = now - self.last_time_fee_estimates_requested > 60
def requested_fee_estimates(self):
self.last_time_fee_estimates_requested = time.time()