tkivy: simplify history screen, display either fiat or btc - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 1526768cd668b9b6da1ea902627b8f289395ad0a DIR parent f863e7c7a8524c319339fd65ab6917628dbf3549 HTML Author: ThomasV <thomasv@electrum.org> Date: Sat, 3 Mar 2018 11:32:38 +0100 kivy: simplify history screen, display either fiat or btc Diffstat: M gui/kivy/main.kv | 2 +- M gui/kivy/main_window.py | 6 ++++-- M gui/kivy/uix/screens.py | 13 ++++++------- M gui/kivy/uix/ui_screens/address.kv | 18 +----------------- M gui/kivy/uix/ui_screens/history.kv | 46 ++++++++++++------------------- M lib/exchange_rate.py | 4 ++++ 6 files changed, 34 insertions(+), 55 deletions(-) --- DIR diff --git a/gui/kivy/main.kv b/gui/kivy/main.kv t@@ -239,7 +239,7 @@ self.screen.show_menu(args[0]) if self.state == 'down' else self.screen.hide_menu() canvas.before: Color: - rgba: (0.192, .498, 0.745, 1) if self.state == 'down' else (0.3, 0.3, 0.3, 1) + rgba: (0.192, .498, 0.745, 1) if self.state == 'down' else (0.15, 0.15, 0.17, 1) Rectangle: size: self.size pos: self.pos DIR diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py t@@ -84,6 +84,8 @@ class ElectrumWindow(App): blockchain_name = StringProperty('') fee_status = StringProperty('Fee') balance = StringProperty('') + fiat_balance = StringProperty('') + is_fiat = BooleanProperty(False) blockchain_checkpoint = NumericProperty(0) auto_connect = BooleanProperty(False) t@@ -644,8 +646,8 @@ class ElectrumWindow(App): # balance c, u, x = self.wallet.get_balance() text = self.format_amount(c+x+u) - self.balance = str(text.strip() + ' ' + self.base_unit) - #fiat_balance = self.fx.format_amount_and_units(c+u+x) or '' + self.balance = str(text.strip()) + ' [size=22dp]%s[/size]'% self.base_unit + self.fiat_balance = self.fx.format_amount(c+u+x) + ' [size=22dp]%s[/size]'% self.fx.ccy def get_max_amount(self): inputs = self.wallet.get_spendable_coins(None, self.electrum_config) DIR diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py t@@ -143,14 +143,13 @@ class HistoryScreen(CScreen): ri.icon = icon ri.date = status_str ri.message = label - ri.value = value or 0 - ri.amount = self.app.format_amount(value, True) if value is not None else '--' ri.confirmations = conf - if self.app.fiat_unit and date: - rate = self.app.fx.history_rate(date) - if rate: - s = self.app.fx.value_str(value, rate) - ri.quote_text = '' if s is None else s + ' ' + self.app.fiat_unit + if value is not None: + ri.is_mine = value < 0 + if value < 0: value = - value + ri.amount = self.app.format_amount_and_units(value) + if self.app.fiat_unit and date: + ri.quote_text = self.app.fx.historical_value_str(value, date) + ' ' + self.app.fx.ccy return ri def update(self, see_all=False): DIR diff --git a/gui/kivy/uix/ui_screens/address.kv b/gui/kivy/uix/ui_screens/address.kv t@@ -24,26 +24,11 @@ shorten: True Widget AddressLabel: - text: root.memo + text: (root.amount if root.status == 'Funded' else root.status) + ' ' + root.memo color: .699, .699, .699, 1 font_size: '13sp' shorten: True Widget - BoxLayout: - spacing: '8dp' - height: '32dp' - orientation: 'vertical' - Widget - AddressLabel: - text: root.amount - halign: 'right' - font_size: '15sp' - Widget - AddressLabel: - text: root.status - halign: 'right' - font_size: '13sp' - color: .699, .699, .699, 1 AddressScreen: id: addr_screen t@@ -103,4 +88,3 @@ AddressScreen: id: search_container size_hint_y: None height: self.minimum_height - spacing: '2dp' DIR diff --git a/gui/kivy/uix/ui_screens/history.kv b/gui/kivy/uix/ui_screens/history.kv t@@ -19,44 +19,34 @@ <HistoryItem@CardItem> icon: 'atlas://gui/kivy/theming/light/important' message: '' - value: 0 + is_mine: True amount: '--' - amount_color: '#FF6657' if self.value < 0 else '#2EA442' + action: _('Sent') if self.is_mine else _('Received') + amount_color: '#FF6657' if self.is_mine else '#2EA442' confirmations: 0 date: '' quote_text: '' - spacing: '9dp' Image: id: icon source: root.icon size_hint: None, 1 - width: self.height *.54 + width: self.height mipmap: True BoxLayout: orientation: 'vertical' Widget CardLabel: - text: root.date - font_size: '14sp' + text: + u'[color={color}]{s}[/color]'.format(s='<<' if root.is_mine else '>>', color=root.amount_color)\ + + ' ' + root.action + ' ' + (root.quote_text if app.is_fiat else root.amount) + font_size: '15sp' CardLabel: color: .699, .699, .699, 1 - font_size: '13sp' + font_size: '14sp' shorten: True - text: root.message + text: root.date + ' ' + root.message Widget - CardLabel: - halign: 'right' - font_size: '15sp' - size_hint: None, 1 - width: '110sp' - markup: True - font_name: font_light - text: - u'[color={amount_color}]{sign}{amount} {unit}[/color]\n'\ - u'[color=#B2B3B3][size=13sp]{qt}[/size]'\ - u'[/color]'.format(amount_color=root.amount_color,\ - amount=root.amount[1:], qt=root.quote_text, sign=root.amount[0],\ - unit=app.base_unit) + HistoryScreen: t@@ -64,21 +54,21 @@ HistoryScreen: content: content BoxLayout: orientation: 'vertical' - Label: - text: app.balance - color: .699, .699, .699, 1 - font_size: '22dp' + Button: + background_color: 0, 0, 0, 0 + text: app.fiat_balance if app.is_fiat else app.balance + markup: True + color: .9, .9, .9, 1 + font_size: '30dp' bold: True size_hint: 1, 0.25 + on_release: app.is_fiat = not app.is_fiat ScrollView: id: content do_scroll_x: False size_hint: 1, 0.75 - #height: self.minimum_height GridLayout id: history_container cols: 1 size_hint: 1, None height: self.minimum_height - padding: '12dp' - spacing: '2dp' DIR diff --git a/lib/exchange_rate.py b/lib/exchange_rate.py t@@ -505,6 +505,10 @@ class FxThread(ThreadJob): return Decimal('NaN') return Decimal(rate) + def format_amount(self, btc_balance): + rate = self.exchange_rate() + return '' if rate.is_nan() else "%s" % self.value_str(btc_balance, rate) + def format_amount_and_units(self, btc_balance): rate = self.exchange_rate() return '' if rate.is_nan() else "%s %s" % (self.value_str(btc_balance, rate), self.ccy)