kivy: improve tx dialog
This commit is contained in:
parent
bd34995d9d
commit
c2d3968ebe
|
@ -3,6 +3,7 @@ from kivy.factory import Factory
|
||||||
from kivy.properties import ObjectProperty
|
from kivy.properties import ObjectProperty
|
||||||
from kivy.lang import Builder
|
from kivy.lang import Builder
|
||||||
from kivy.clock import Clock
|
from kivy.clock import Clock
|
||||||
|
from kivy.uix.label import Label
|
||||||
|
|
||||||
from electrum_gui.kivy.i18n import _
|
from electrum_gui.kivy.i18n import _
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
@ -17,12 +18,18 @@ Builder.load_string('''
|
||||||
fee_str: ''
|
fee_str: ''
|
||||||
date_str: ''
|
date_str: ''
|
||||||
amount_str: ''
|
amount_str: ''
|
||||||
txid_str: ''
|
tx_hash: ''
|
||||||
status_str: ''
|
status_str: ''
|
||||||
description: ''
|
description: ''
|
||||||
|
outputs_str: ''
|
||||||
|
ScrollView:
|
||||||
BoxLayout:
|
BoxLayout:
|
||||||
orientation: 'vertical'
|
orientation: 'vertical'
|
||||||
|
spacing: '10dp'
|
||||||
|
padding: '10dp'
|
||||||
GridLayout:
|
GridLayout:
|
||||||
|
size_hint: 1, None
|
||||||
|
height: self.minimum_height
|
||||||
cols: 2
|
cols: 2
|
||||||
spacing: '10dp'
|
spacing: '10dp'
|
||||||
TopLabel:
|
TopLabel:
|
||||||
|
@ -47,8 +54,36 @@ Builder.load_string('''
|
||||||
text: root.fee_str
|
text: root.fee_str
|
||||||
|
|
||||||
TopLabel:
|
TopLabel:
|
||||||
text: root.txid_str
|
text: _('Outputs') + ':'
|
||||||
|
|
||||||
|
GridLayout:
|
||||||
|
id: outputs
|
||||||
|
size_hint: 1, None
|
||||||
|
height: self.minimum_height
|
||||||
|
cols: 2
|
||||||
|
spacing: '10dp'
|
||||||
|
padding: '10dp'
|
||||||
|
canvas.before:
|
||||||
|
Color:
|
||||||
|
rgb: .3, .3, .3
|
||||||
|
Rectangle:
|
||||||
|
size: self.size
|
||||||
|
pos: self.pos
|
||||||
|
TopLabel:
|
||||||
|
text: _('Transaction ID') + ':' if root.tx_hash else ''
|
||||||
|
TopLabel:
|
||||||
|
font_size: '6pt'
|
||||||
|
text: '[ref=x]%s[/ref]' %' '.join(map(''.join, zip(*[iter(root.tx_hash)]*4))) if root.tx_hash else ''
|
||||||
|
padding: '10dp', '10dp'
|
||||||
|
on_ref_press:
|
||||||
|
app._clipboard.copy(self.text)
|
||||||
|
app.show_info(_('Transaction ID copied to clipboard'))
|
||||||
|
canvas.before:
|
||||||
|
Color:
|
||||||
|
rgb: .3, .3, .3
|
||||||
|
Rectangle:
|
||||||
|
size: self.size
|
||||||
|
pos: self.pos
|
||||||
Widget:
|
Widget:
|
||||||
size_hint: 1, 0.2
|
size_hint: 1, 0.2
|
||||||
|
|
||||||
|
@ -88,11 +123,10 @@ class TxDialog(Factory.Popup):
|
||||||
def update(self):
|
def update(self):
|
||||||
self.can_broadcast = False
|
self.can_broadcast = False
|
||||||
if self.tx.is_complete():
|
if self.tx.is_complete():
|
||||||
tx_hash = self.tx.hash()
|
self.tx_hash = self.tx.hash()
|
||||||
self.description = self.wallet.get_label(tx_hash)
|
self.description = self.wallet.get_label(self.tx_hash)
|
||||||
self.txid_str = _('Transaction ID') + ' :\n' + ' '.join(map(''.join, zip(*[iter(tx_hash)]*4)))
|
if self.tx_hash in self.wallet.transactions.keys():
|
||||||
if tx_hash in self.wallet.transactions.keys():
|
conf, timestamp = self.wallet.get_confirmations(self.tx_hash)
|
||||||
conf, timestamp = self.wallet.get_confirmations(tx_hash)
|
|
||||||
self.status_str = _("%d confirmations")%conf if conf else _('Pending')
|
self.status_str = _("%d confirmations")%conf if conf else _('Pending')
|
||||||
if timestamp:
|
if timestamp:
|
||||||
self.date_str = datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
|
self.date_str = datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
|
||||||
|
@ -121,6 +155,21 @@ class TxDialog(Factory.Popup):
|
||||||
self.fee_str = ''
|
self.fee_str = ''
|
||||||
self.can_sign = self.wallet.can_sign(self.tx)
|
self.can_sign = self.wallet.can_sign(self.tx)
|
||||||
|
|
||||||
|
for (type, address, amount) in self.tx.outputs():
|
||||||
|
t = Factory.CardLabel(text = '[ref=%s]%s[/ref]'%(address,address), font_size = '6pt')
|
||||||
|
t.shorten = True
|
||||||
|
t.size_hint_x = 0.65
|
||||||
|
t.on_ref_press = self.do_copy_address
|
||||||
|
self.ids.outputs.add_widget(t)
|
||||||
|
t = Factory.CardLabel(text = self.app.format_amount_and_units(amount), font_size='6pt')
|
||||||
|
t.size_hint_x = 0.35
|
||||||
|
t.halign = 'right'
|
||||||
|
self.ids.outputs.add_widget(t)
|
||||||
|
|
||||||
|
def do_copy_address(self, text):
|
||||||
|
self.app._clipboard.copy(text)
|
||||||
|
self.app.show_info(_('Address copied to clipboard'))
|
||||||
|
|
||||||
def do_sign(self):
|
def do_sign(self):
|
||||||
self.app.protected(_("Enter your PIN code in order to sign this transaction"), self._do_sign, ())
|
self.app.protected(_("Enter your PIN code in order to sign this transaction"), self._do_sign, ())
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ Popup:
|
||||||
orientation: 'vertical'
|
orientation: 'vertical'
|
||||||
GridLayout:
|
GridLayout:
|
||||||
spacing: '10dp'
|
spacing: '10dp'
|
||||||
|
padding: '10dp'
|
||||||
cols: 2
|
cols: 2
|
||||||
TopLabel:
|
TopLabel:
|
||||||
text: _('Requestor') if popup.is_invoice else _('Address')
|
text: _('Requestor') if popup.is_invoice else _('Address')
|
||||||
|
|
Loading…
Reference in New Issue