format_amount_and_units: general method to display amounts and fiat values. fixes #1078

This commit is contained in:
ThomasV 2015-09-11 16:46:37 +02:00
parent 7c4b749340
commit 483cf2286f
2 changed files with 21 additions and 10 deletions

View File

@ -432,8 +432,8 @@ class ElectrumWindow(QMainWindow, PrintError):
is_relevant, is_mine, v, fee = self.wallet.get_wallet_delta(tx)
if(v > 0):
total_amount += v
self.notify(_("%(txs)s new transactions received. Total amount received in the new transactions %(amount)s %(unit)s") \
% { 'txs' : tx_amount, 'amount' : self.format_amount(total_amount), 'unit' : self.base_unit()})
self.notify(_("%(txs)s new transactions received. Total amount received in the new transactions %(amount)s") \
% { 'txs' : tx_amount, 'amount' : self.format_amount_and_units(total_amount)})
self.tx_notifications = []
else:
for tx in self.tx_notifications:
@ -441,7 +441,7 @@ class ElectrumWindow(QMainWindow, PrintError):
self.tx_notifications.remove(tx)
is_relevant, is_mine, v, fee = self.wallet.get_wallet_delta(tx)
if(v > 0):
self.notify(_("New transaction received. %(amount)s %(unit)s") % { 'amount' : self.format_amount(v), 'unit' : self.base_unit()})
self.notify(_("New transaction received. %(amount)s") % { 'amount' : self.format_amount_and_units(v)})
def notify(self, message):
if self.tray:
@ -483,6 +483,13 @@ class ElectrumWindow(QMainWindow, PrintError):
def format_amount(self, x, is_diff=False, whitespaces=False):
return format_satoshis(x, is_diff, self.num_zeros, self.decimal_point, whitespaces)
def format_amount_and_units(self, amount):
text = self.format_amount(amount) + ' '+ self.base_unit()
x = run_hook('format_amount_and_units', amount)
if x:
text += ''.join(x)
return text
def get_decimal_point(self):
return self.decimal_point
@ -518,7 +525,7 @@ class ElectrumWindow(QMainWindow, PrintError):
icon = QIcon(":icons/status_lagging.png")
else:
c, u, x = self.wallet.get_account_balance(self.current_account)
text = _("Balance" ) + ": %s "%(self.format_amount(c)) + self.base_unit()
text = _("Balance" ) + ": %s "%(self.format_amount_and_units(c))
if u:
text += " [%s unconfirmed]"%(self.format_amount(u, True).strip())
if x:
@ -1170,6 +1177,7 @@ class ElectrumWindow(QMainWindow, PrintError):
if not r:
return
outputs, fee, tx_desc, coins = r
amount = sum(map(lambda x:x[2], outputs))
try:
tx = self.wallet.make_unsigned_transaction(coins, outputs, self.config, fee)
except NotEnoughFunds:
@ -1188,11 +1196,10 @@ class ElectrumWindow(QMainWindow, PrintError):
self.show_transaction(tx, tx_desc)
return
# confirmation dialog
amount = sum(map(lambda x:x[2], outputs))
confirm_amount = self.config.get('confirm_amount', COIN)
msg = [
_("Amount to be sent") + ": %s"%(self.format_amount(amount) + ' '+ self.base_unit()),
_("Transaction fee") + ": %s"%(self.format_amount(fee) + ' '+ self.base_unit()),
_("Amount to be sent") + ": " + self.format_amount_and_units(amount),
_("Transaction fee") + ": " + self.format_amount_and_units(fee),
]
if self.wallet.use_encryption:
msg.append(_("Enter your password to proceed"))
@ -1248,7 +1255,7 @@ class ElectrumWindow(QMainWindow, PrintError):
if tx.get_fee() >= confirm_fee:
msg = '\n'.join([
_("The fee for this transaction seems unusually high."),
_("Are you really sure you want to pay %(fee)s in fees?")%{ 'fee' : self.format_amount(fee) + ' '+ self.base_unit()}
_("Are you really sure you want to pay %(fee)s in fees?")%{ 'fee' : self.format_amount_and_units(fee)}
])
if not self.question(msg):
return

View File

@ -393,6 +393,11 @@ class Plugin(BasePlugin, ThreadJob):
if rate:
return Decimal(rate)
@hook
def format_amount_and_units(self, btc_balance):
rate = self.exchange_rate()
return '' if rate is None else " (%s %s)" % (self.value_str(btc_balance, rate), self.ccy)
@hook
def get_fiat_status_text(self, btc_balance, result):
# return status as: (1.23 USD) 1 BTC~123.45 USD
@ -400,8 +405,7 @@ class Plugin(BasePlugin, ThreadJob):
if rate is None:
text = _(" (No FX rate available)")
else:
text = " (%s %s) 1 BTC~%s %s" % (self.value_str(btc_balance, rate), self.ccy,
self.value_str(COIN, rate), self.ccy)
text = "1 BTC~%s %s" % (self.value_str(COIN, rate), self.ccy)
result['text'] = text
def get_historical_rates(self):