tFix status bar FX balance display - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 1d3595454121f80d45bea64848881ff5701bcdf5 DIR parent 34ce6d1821bb6eeb4ef564e46b9b418e5d66dc2f HTML Author: Neil Booth <kyuupichan@gmail.com> Date: Sun, 6 Sep 2015 14:16:54 +0900 Fix status bar FX balance display Diffstat: M gui/qt/main_window.py | 6 ++---- M plugins/exchange_rate.py | 60 ++++++++++---------------------- 2 files changed, 20 insertions(+), 46 deletions(-) --- DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py t@@ -519,10 +519,8 @@ class ElectrumWindow(QMainWindow): text += " [%s unmatured]"%(self.format_amount(x, True).strip()) # append fiat balance and price from exchange rate plugin r = {} - run_hook('get_fiat_status_text', c+u, r) - quote = r.get(0) - if quote: - text += "%s"%quote + run_hook('get_fiat_status_text', c + u + x, r) + text += r['text'] icon = QIcon(":icons/status_connected.png") else: text = _("Not connected") DIR diff --git a/plugins/exchange_rate.py b/plugins/exchange_rate.py t@@ -352,42 +352,15 @@ class Plugin(BasePlugin, ThreadJob): return Decimal(rate) @hook - def get_fiat_balance_text(self, btc_balance, r): - # return balance as: 1.23 USD - r[0] = self.create_fiat_balance_text(Decimal(btc_balance) / COIN) - - def get_fiat_price_text(self, r): - # return BTC price as: 123.45 USD - r[0] = self.create_fiat_balance_text(1) - quote = r[0] - if quote: - r[0] = "%s"%quote - - @hook - def get_fiat_status_text(self, btc_balance, r2): + def get_fiat_status_text(self, btc_balance, result): # return status as: (1.23 USD) 1 BTC~123.45 USD - text = "" - r = {} - self.get_fiat_price_text(r) - quote = r.get(0) - if quote: - price_text = "1 BTC~%s"%quote - fiat_currency = quote[-3:] - btc_price = self.btc_rate - fiat_balance = Decimal(btc_price) * Decimal(btc_balance) / COIN - balance_text = "(%.2f %s)" % (fiat_balance,fiat_currency) - text = " " + balance_text + " " + price_text + " " - r2[0] = text - - def create_fiat_balance_text(self, btc_balance): - cur_rate = self.exchange_rate() - if cur_rate is None: - quote_text = "" + rate = self.exchange_rate() + if rate is None: + text = _(" (No FX rate available)") else: - quote_balance = btc_balance * Decimal(cur_rate) - self.btc_rate = cur_rate - quote_text = "%.2f %s" % (quote_balance, self.ccy) - return quote_text + text = " (%s) 1 BTC~%s" % (self.value_str(btc_balance, rate), + self.value_str(COIN, rate)) + result['text'] = text def get_historical_rates(self): if self.config_history(): t@@ -396,17 +369,20 @@ class Plugin(BasePlugin, ThreadJob): def requires_settings(self): return True - def historical_value_str(self, ccy, satoshis, d_t): - rate = self.exchange.historical_rate(ccy, d_t) + def value_str(self, satoshis, rate): + if rate: + value = round(Decimal(satoshis) / COIN * Decimal(rate), 2) + return " ".join(["{:,.2f}".format(value), self.ccy]) + return _("No data") + + def historical_value_str(self, satoshis, d_t): + rate = self.exchange.historical_rate(self.ccy, d_t) # Frequently there is no rate for today, until tomorrow :) # Use spot quotes in that case if rate is None and (datetime.today().date() - d_t.date()).days <= 2: - rate = self.exchange.quotes.get(ccy) + rate = self.exchange.quotes.get(self.ccy) self.history_used_spot = True - if rate: - value = round(Decimal(satoshis) / COIN * Decimal(rate), 2) - return " ".join(["{:,.2f}".format(value), ccy]) - return _("No data") + return self.value_str(satoshis, rate) @hook def history_tab_headers(self, headers): t@@ -425,7 +401,7 @@ class Plugin(BasePlugin, ThreadJob): if not date: date = timestamp_to_datetime(0) for amount in [value, balance]: - text = self.historical_value_str(self.ccy, amount, date) + text = self.historical_value_str(amount, date) entry.append("%16s" % text) def settings_widget(self, window):