catch exception within sign thread, to re-enable send button
authorThomasV <thomasv@gitorious>
Tue, 24 Jun 2014 17:09:41 +0000 (19:09 +0200)
committerThomasV <thomasv@gitorious>
Tue, 24 Jun 2014 17:09:41 +0000 (19:09 +0200)
gui/qt/main_window.py
gui/qt/util.py

index 055b4b0..f8b5336 100644 (file)
@@ -1021,13 +1021,15 @@ class ElectrumWindow(QMainWindow):
 
         # sign the tx
         def sign_thread():
-            time.sleep(0.1)
             keypairs = {}
-            self.wallet.add_keypairs(tx, keypairs, password)
-            self.wallet.sign_transaction(tx, keypairs, password)
-            return tx, fee, label
+            try:
+                self.wallet.add_keypairs(tx, keypairs, password)
+                self.wallet.sign_transaction(tx, keypairs, password)
+            except Exception as e:
+                tx.error = str(e)
+            return tx
 
-        def sign_done(tx, fee, label):
+        def sign_done(tx):
             if tx.error:
                 self.show_message(tx.error)
                 self.send_button.setDisabled(False)
@@ -1047,6 +1049,7 @@ class ElectrumWindow(QMainWindow):
 
             self.broadcast_transaction(tx)
 
+        # keep a reference to WaitingDialog or the gui might crash
         self.waiting_dialog = WaitingDialog(self, 'Signing..', sign_thread, sign_done)
         self.waiting_dialog.start()
 
index 94a0898..6d83871 100644 (file)
@@ -37,7 +37,10 @@ class WaitingDialog(QThread):
             return
 
         if self.on_complete:
-            self.on_complete(*self.result)
+            if type(self.result) is tuple:
+                self.on_complete(*self.result)
+            else:
+                self.on_complete(self.result)