tkivy: improve amount dialog - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 6e9c58783e2fa082d2be409790bc9e67e3f37330 DIR parent 274dc256b557920286d7a45cf565fa741f029d77 HTML Author: ThomasV <thomasv@electrum.org> Date: Fri, 16 Oct 2015 14:59:26 +0200 kivy: improve amount dialog Diffstat: M gui/kivy/main.kv | 19 +++++-------------- M gui/kivy/main_window.py | 15 +++++++++++++-- M gui/kivy/uix/ui_screens/amount.kv | 150 +++++++++++++++++-------------- 3 files changed, 100 insertions(+), 84 deletions(-) --- DIR diff --git a/gui/kivy/main.kv b/gui/kivy/main.kv t@@ -221,20 +221,11 @@ background_active: 'atlas://gui/kivy/theming/light/textinput_active' -#<ElectrumScreen> -# ScrollView: -# do_scroll_x: False -# do_scroll_y: False if root.fullscreen else (content.height > root.height - dp(16)) -# AnchorLayout: -# size_hint_y: None -# height: root.height if root.fullscreen else max(root.height, content.height) -# GridLayout: -# id: content -# cols: 1 -# spacing: '8dp' -# padding: '8dp' -# size_hint: (1, 1) if root.fullscreen else (.8, None) -# height: self.height if root.fullscreen else self.minimum_height +<KButton@Button>: + size_hint: 1, None + height: '48dp' + on_release: self.label.amount = app.update_amount(self.label.amount, self.text) + <TabbedPanelStrip>: on_parent: DIR diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py t@@ -439,6 +439,17 @@ class ElectrumWindow(App): status_card.quote_text = quote_text.strip() status_card.uncomfirmed = unconfirmed.strip() + + def update_amount(self, amount, c): + if c == '<': + return amount[:-1] + try: + s = amount + c + amount = s if Decimal(s)!=0 else '' + except: + pass + return amount + def format_amount(self, x, is_diff=False, whitespaces=False): from electrum.util import format_satoshis return format_satoshis(x, is_diff, self.num_zeros, t@@ -712,9 +723,9 @@ class ElectrumWindow(App): if label.text != label.default_text: a, u = label.text.split() assert u == self.base_unit - popup.ids.amount_label.value = a + popup.ids.a.amount = a def cb(): - o = popup.ids.amount_label.text + o = popup.ids.a.text label.text = o if o else label.default_text if callback: callback() DIR diff --git a/gui/kivy/uix/ui_screens/amount.kv b/gui/kivy/uix/ui_screens/amount.kv t@@ -1,79 +1,93 @@ -<KButton@Button>: - size_hint: 1, None - height: '38dp' +#:import Decimal decimal.Decimal + Popup: id: popup title: _('Amount') - BoxLayout: - - orientation: 'vertical' - - halign: 'center' + AnchorLayout: + anchor_x: 'center' BoxLayout: - Label: - id: amount_label - text: '' - value: '' - on_value: - self.text = self.value + ' ' + app.base_unit - Widget: - size_hint_x: 1 + orientation: 'vertical' + size_hint: 0.8, 1 - GridLayout: - cols: 3 - size_hint: 0.5, 1 - KButton: - text: '1' - on_release: amount_label.value += self.text - KButton: - text: '2' - on_release: amount_label.value += self.text - KButton: - text: '3' - on_release: amount_label.value += self.text - KButton: - text: '4' - on_release: amount_label.value += self.text - KButton: - text: '5' - on_release: amount_label.value += self.text - KButton: - text: '6' - on_release: amount_label.value += self.text - KButton: - text: '7' - on_release: amount_label.value += self.text - KButton: - text: '8' - on_release: amount_label.value += self.text - KButton: - text: '9' - on_release: amount_label.value += self.text - KButton: - text: '.' - on_release: amount_label.value += self.text - KButton: - text: '0' - on_release: amount_label.value += self.text - KButton: - text: '<' - on_release: amount_label.value = amount_label.value[:-1] - - BoxLayout: - size_hint: 0.5, None - Button: - size_hint: 0.5, None + BoxLayout: + size_hint: 1, None height: '48dp' - text: _('Max') - on_release: popup.dismiss() - Button: - size_hint: 0.5, None + id: 'spendable' + Label: + text: _('Spendable:') + size_hint_x: 1 + Button: + size_hint_x: 1 + height: '48dp' + text: '' + on_release: a.value = "max" + + BoxLayout: + size_hint: 1, None height: '48dp' - text: _('OK') - on_release: popup.dismiss() + Label: + id: a + amount: '' + text: self.amount + ' ' + app.base_unit if self.amount else '' + Widget: + size_hint_x: 1 + + Widget: + size_hint: 1, 1 - Widget: - size_hint: 1, None + GridLayout: + size_hint: 1, None + height: '300dp' + cols: 3 + KButton: + text: '1' + label: a + KButton: + text: '2' + label: a + KButton: + text: '3' + label: a + KButton: + text: '4' + label: a + KButton: + text: '5' + label: a + KButton: + text: '6' + label: a + KButton: + text: '7' + label: a + KButton: + text: '8' + label: a + KButton: + text: '9' + label: a + KButton: + text: '.' + label: a + KButton: + text: '0' + label: a + KButton: + text: '<' + label: a + + BoxLayout: + size_hint: 1, None + height: '48dp' + Widget: + size_hint: 0.7, None + height: '48dp' + Button: + size_hint: 0.3, None + height: '48dp' + text: _('OK') + on_release: popup.dismiss() +