tkivy: fee_dialog - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit 3cd088b2e6dcf1a46a47de72d39d466dcf5e6e87 (DIR) parent 45618b2a8efedec84c9a92fbb92b070fae133a00 (HTM) Author: ThomasV <thomasv@electrum.org> Date: Fri, 22 Jan 2016 10:50:24 +0100 kivy: fee_dialog Diffstat: A gui/kivy/uix/dialogs/fee_dialog.py | 48 +++++++++++++++++++++++++++++++ M gui/kivy/uix/dialogs/settings.py | 25 ++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 1 deletion(-) --- (DIR) diff --git a/gui/kivy/uix/dialogs/fee_dialog.py b/gui/kivy/uix/dialogs/fee_dialog.py t@@ -0,0 +1,48 @@ +from kivy.app import App +from kivy.factory import Factory +from kivy.properties import ObjectProperty +from kivy.lang import Builder + +Builder.load_string(''' +<FeeDialog@Popup> + id: popup + title: '' + size_hint: 0.8, 0.8 + pos_hint: {'top':0.9} + BoxLayout: + orientation: 'vertical' + BoxLayout: + orientation: 'horizontal' + size_hint: 1, 0.5 + Label: + text: _('Dynamic fees') + CheckBox: + id: dynfees + BoxLayout: + orientation: 'horizontal' + size_hint: 1, 0.5 + Button: + text: 'Cancel' + size_hint: 0.5, None + height: '48dp' + on_release: popup.dismiss() + Button: + text: 'OK' + size_hint: 0.5, None + height: '48dp' + on_release: + root.on_ok() + root.dismiss() +''') + +class FeeDialog(Factory.Popup): + + def __init__(self, config, callback): + Factory.Popup.__init__(self) + self.config = config + self.callback = callback + self.ids.dynfees.active = self.config.get('dynamic_fees') + + def on_ok(self): + self.config.set_key('dynamic_fees', self.ids.dynfees.active, True) + self.callback() (DIR) diff --git a/gui/kivy/uix/dialogs/settings.py b/gui/kivy/uix/dialogs/settings.py t@@ -7,6 +7,7 @@ from electrum.i18n import _ from electrum.util import base_units from electrum.i18n import languages, set_language from electrum.plugins import run_hook +from electrum.bitcoin import RECOMMENDED_FEE Builder.load_string(''' <SettingsItem@ButtonBehavior+BoxLayout> t@@ -63,8 +64,14 @@ Builder.load_string(''' on_release: settings.unit_dialog(self) SettingsItem: + status: root.fee_status() + title: _('Fees') + ': ' + self.status + description: _("Fees paid to the Bitcoin miners.") + on_release: + root.fee_dialog(self) + SettingsItem: status: 'ON' if bool(app.plugins.get('exchange_rate')) else 'OFF' - title: _('Fiat Exchange rates') + ': ' + self.status + title: _('Exchange rates') + ': ' + self.status description: _("Display amounts in fiat currency.") on_release: settings.plugin_dialog('exchange_rate', self) t@@ -175,9 +182,25 @@ class SettingsDialog(Factory.Popup): def callback(status): self.plugins.enable(name) if status else self.plugins.disable(name) label.status = 'ON' if status else 'OFF' + status = bool(self.plugins.get(name)) dd = self.plugins.descriptions.get(name) descr = dd.get('description') fullname = dd.get('fullname') d = CheckBoxDialog(fullname, descr, status, callback) d.open() + + def fee_status(self): + if self.config.get('dynamic_fees'): + f = self.config.get('fee_factor', 50) + 50 + return 'Dynamic, %d%%'%f + else: + F = self.config.get('fee_per_kb', RECOMMENDED_FEE) + return self.app.format_amount(F) + ' ' + self.app.base_unit + '/kB' + + def fee_dialog(self, label): + from fee_dialog import FeeDialog + def cb(): + label.status = self.fee_status() + d = FeeDialog(self.config, cb) + d.open()