commit 4f78b5365b03b1a108bc3678473cfeb39c9ae47d
parent 2a9c62c9b80ff0d679bd09e75601a5198a493d1e
Author: ThomasV <thomasv@gitorious>
Date: Sat, 14 Dec 2013 07:49:21 +0100
exchange rate plugin: keep thread running (fixes #494)
Diffstat:
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/plugins/exchange_rate.py b/plugins/exchange_rate.py
@@ -20,6 +20,7 @@ class Exchanger(threading.Thread):
self.parent = parent
self.quote_currencies = None
self.lock = threading.Lock()
+ self.is_running = False
def exchange(self, btc_amount, quote_currency):
with self.lock:
@@ -30,7 +31,16 @@ class Exchanger(threading.Thread):
return None
return btc_amount * quote_currencies[quote_currency]
+ def stop(self):
+ self.is_running = False
+
def run(self):
+ self.is_running = True
+ while self.is_running:
+ self.update()
+ time.sleep(120)
+
+ def update(self):
try:
connection = httplib.HTTPConnection('blockchain.info')
connection.request("GET", "/ticker")
@@ -49,9 +59,10 @@ class Exchanger(threading.Thread):
quote_currencies[r] = self._lookup_rate(response, r)
with self.lock:
self.quote_currencies = quote_currencies
- self.parent.set_currencies(quote_currencies)
except KeyError:
pass
+ self.parent.set_currencies(quote_currencies)
+ # print "updating exchange rate", self.quote_currencies["USD"]
def get_currencies(self):
@@ -110,6 +121,10 @@ class Plugin(BasePlugin):
return out
+ def close(self):
+ self.exchanger.stop()
+
+
def settings_widget(self, window):
combo = QComboBox()