fix labels plugin
authorThomasV <thomasv@gitorious>
Sun, 29 Sep 2013 08:52:47 +0000 (10:52 +0200)
committerThomasV <thomasv@gitorious>
Sun, 29 Sep 2013 08:52:47 +0000 (10:52 +0200)
gui/qt/main_window.py
plugins/labels.py
plugins/pointofsale.py

index fb66cda..122453d 100644 (file)
@@ -288,7 +288,7 @@ class ElectrumWindow(QMainWindow):
         self.update_buttons_on_seed()
         self.update_console()
 
-        run_hook('load_wallet')
+        run_hook('load_wallet', wallet)
 
 
     def select_wallet_file(self):
index 2bcdf7e..1c9a2ed 100644 (file)
@@ -48,9 +48,9 @@ class Plugin(BasePlugin):
     def init(self):
         self.target_host = 'labelectrum.herokuapp.com'
         self.window = self.gui.main_window
-        self.wallet = self.window.wallet
-        self.labels = self.wallet.labels
-        self.transactions = self.wallet.transactions
+
+    def load_wallet(self, wallet):
+        self.wallet = wallet
         mpk = self.wallet.master_public_keys["m/0'/"][1]
         self.encode_password = hashlib.sha1(mpk).digest().encode('hex')[:32]
         self.wallet_id = hashlib.sha256(mpk).digest().encode('hex')
@@ -170,7 +170,7 @@ class Plugin(BasePlugin):
     def do_full_push(self):
         try:
             bundle = {"labels": {}}
-            for key, value in self.labels.iteritems():
+            for key, value in self.wallet.labels.iteritems():
                 encoded = self.encode(key)
                 bundle["labels"][encoded] = self.encode(value)
 
@@ -214,8 +214,8 @@ class Plugin(BasePlugin):
             for label in response:
                  decoded_key = self.decode(label["external_id"]) 
                  decoded_label = self.decode(label["text"]) 
-                 if force or not self.labels.get(decoded_key):
-                     self.labels[decoded_key] = decoded_label 
+                 if force or not self.wallet.labels.get(decoded_key):
+                     self.wallet.labels[decoded_key] = decoded_label 
             return True
         except socket.gaierror as e:
             print_error('Error connecting to service: %s ' %  e)
index 438e672..812b60f 100644 (file)
@@ -102,6 +102,7 @@ class Plugin(BasePlugin):
 
     def init(self):
         self.window = self.gui.main_window
+        self.wallet = self.window.wallet
 
         self.qr_window = None
         self.merchant_name = self.config.get('merchant_name', 'Invoice')
@@ -111,8 +112,9 @@ class Plugin(BasePlugin):
         self.requested_amounts = {}
         self.toggle_QR_window(True)
 
-    def load_wallet(self):
-        self.requested_amounts = self.window.wallet.storage.get('requested_amounts',{}) 
+    def load_wallet(self, wallet):
+        self.wallet = wallet
+        self.requested_amounts = self.wallet.storage.get('requested_amounts',{}) 
 
     def close(self):
         self.window.receive_list.setHeaderLabels([ _('Address'), _('Label'), _('Balance'), _('Tx')])
@@ -138,7 +140,7 @@ class Plugin(BasePlugin):
             item = self.window.receive_list.currentItem()
             if item:
                 address = str(item.text(1))
-                label = self.window.wallet.labels.get(address)
+                label = self.wallet.labels.get(address)
                 amount, currency = self.requested_amounts.get(address, (None, None))
                 self.qr_window.set_content( address, label, amount, currency )
 
@@ -166,9 +168,11 @@ class Plugin(BasePlugin):
 
     
     def current_item_changed(self, a):
+        if not self.wallet: 
+            return
         if a is not None and self.qr_window and self.qr_window.isVisible():
             address = str(a.text(0))
-            label = self.window.wallet.labels.get(address)
+            label = self.wallet.labels.get(address)
             try:
                 amount, currency = self.requested_amounts.get(address, (None, None))
             except:
@@ -183,7 +187,7 @@ class Plugin(BasePlugin):
         address = str( item.text(0) )
         text = str( item.text(column) )
         try:
-            seq = self.window.wallet.get_address_index(address)
+            seq = self.wallet.get_address_index(address)
             index = seq[1][1]
         except:
             print "cannot get index"
@@ -201,12 +205,12 @@ class Plugin(BasePlugin):
                 currency = currency.upper()
                     
             self.requested_amounts[address] = (amount, currency)
-            self.window.wallet.storage.put('requested_amounts', self.requested_amounts, True)
+            self.wallet.storage.put('requested_amounts', self.requested_amounts, True)
 
-            label = self.window.wallet.labels.get(address)
+            label = self.wallet.labels.get(address)
             if label is None:
                 label = self.merchant_name + ' - %04d'%(index+1)
-                self.window.wallet.labels[address] = label
+                self.wallet.labels[address] = label
 
             if self.qr_window:
                 self.qr_window.set_content( address, label, amount, currency )