Defer discovery of exchange rate until later to make program startup faster.
authorAmir Taaki <genjix@riseup.net>
Sat, 30 Jun 2012 13:54:02 +0000 (15:54 +0200)
committerAmir Taaki <genjix@riseup.net>
Sat, 30 Jun 2012 13:54:02 +0000 (15:54 +0200)
lib/exchange_rate.py
lib/gui_lite.py

index 59e0c92..735ac9d 100644 (file)
@@ -6,9 +6,13 @@ class Exchanger:
 
     def __init__(self, quote_currencies, refresh_balance):
         self.refresh_balance = refresh_balance
-        self.quote_currencies = {}
+        self.quote_currencies = None
 
     def exchange(self, btc_amount, quote_currency):
+        if self.quote_currencies is None:
+            return None
+        if quote_currency not in self.quote_currencies:
+            return None
         return btc_amount * self.quote_currencies[quote_currency]
 
     def discovery(self):
@@ -22,6 +26,7 @@ class Exchanger:
         # 2 = BTC:EUR
         # 3 = BTC:USD
         # 4 = BTC:PLN
+        self.quote_currencies = {}
         try:
             self.quote_currencies["GBP"] = self.lookup_rate(response, 1)
             self.quote_currencies["EUR"] = self.lookup_rate(response, 2)
index 4cd1a82..7748722 100644 (file)
@@ -88,10 +88,10 @@ class MiniWindow(QDialog):
         self.quote_currencies = ("EUR", "USD", "GBP")
         self.exchanger = exchange_rate.Exchanger(self.quote_currencies,
                                                  self.refresh_balance)
+        QTimer.singleShot(1000, self.exchanger.discovery)
 
         self.balance_label = BalanceLabel(self.change_quote_currency)
         self.balance_label.setObjectName("balance_label")
-        self.exchanger.discovery()
 
         copy_button = QPushButton(_("&Copy Address"))
         copy_button.setObjectName("copy_button")
@@ -174,13 +174,15 @@ class MiniWindow(QDialog):
         self.btc_balance = btc_balance
         quote_currency = self.quote_currencies[0]
         quote_balance = self.exchanger.exchange(btc_balance, quote_currency)
-        quote_balance = "%.2f" % (quote_balance / bitcoin(1))
+        if quote_balance is None:
+            quote_text = ""
+        else:
+            quote_text = "(%.2f %s)" % ((quote_balance / bitcoin(1)),
+                                      quote_currency)
         btc_balance = "%.2f" % (btc_balance / bitcoin(1))
-        self.balance_label.set_balances( \
-            btc_balance, quote_balance, quote_currency)
+        self.balance_label.set_balances(btc_balance, quote_text)
         main_account_info = \
-            "Checking - %s BTC (%s %s)" % (btc_balance,
-                                           quote_balance, quote_currency)
+            "Checking - %s BTC %s" % (btc_balance, quote_text)
         self.setWindowTitle("Electrum - %s" % main_account_info)
         self.accounts_selector.clear()
         self.accounts_selector.addAction("%s" % main_account_info)
@@ -211,8 +213,8 @@ class BalanceLabel(QLabel):
         super(QLabel, self).__init__(_("Connecting..."), parent)
         self.change_quote_currency = change_quote_currency
 
-    def set_balances(self, btc_balance, quote_balance, quote_currency):
-        label_text = "<span style='font-size: 16pt'>%s</span> <span style='font-size: 10pt'>BTC</span> <span style='font-size: 10pt'>(%s %s)</span>" % (btc_balance, quote_balance, quote_currency)
+    def set_balances(self, btc_balance, quote_text):
+        label_text = "<span style='font-size: 16pt'>%s</span> <span style='font-size: 10pt'>BTC</span> <span style='font-size: 10pt'>%s</span>" % (btc_balance, quote_text)
         self.setText(label_text)
 
     def mousePressEvent(self, event):