show number of tx signatures in gui
authorThomasV <thomasv@gitorious>
Sun, 22 Jun 2014 10:07:41 +0000 (12:07 +0200)
committerThomasV <thomasv@gitorious>
Sun, 22 Jun 2014 10:07:41 +0000 (12:07 +0200)
gui/qt/transaction_dialog.py
lib/transaction.py

index 70643b5..66674a8 100644 (file)
@@ -132,7 +132,7 @@ class TxDialog(QDialog):
         is_relevant, is_mine, v, fee = self.wallet.get_tx_value(self.tx)
 
         if self.tx.is_complete():
-            status = _("Status: Signed")
+            status = _("Signed")
             self.sign_button.hide()
             tx_hash = self.tx.hash()
 
@@ -142,14 +142,15 @@ class TxDialog(QDialog):
                     time_str = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
                 else:
                     time_str = 'pending'
-                status = _("Status: %d confirmations")%conf
+                status = _("%d confirmations")%conf
                 self.broadcast_button.hide()
             else:
                 time_str = None
                 conf = 0
                 self.broadcast_button.show()
         else:
-            status = _("Status: Unsigned")
+            s, r = self.tx.signature_count()
+            status = _("Unsigned") if s == 0 else _('Partially signed (%d/%d)'%(s,r))
             time_str = None
             if not self.wallet.is_watching_only():
                 self.sign_button.show()
@@ -159,7 +160,7 @@ class TxDialog(QDialog):
             tx_hash = 'unknown'
 
         self.tx_hash_e.setText(tx_hash)
-        self.status_label.setText(status)
+        self.status_label.setText(_('Status:') + ' ' + status)
 
         if time_str is not None:
             self.date_label.setText(_("Date: %s")%time_str)
index 000e471..5cd2a5e 100644 (file)
@@ -599,17 +599,20 @@ class Transaction:
         self.raw = self.serialize( self.inputs, self.outputs )
 
 
-    def is_complete(self):
-        for i, txin in enumerate(self.inputs):
-            pubkeys = txin['pubkeys']
-            signatures = txin.get("signatures",{})
-            if len(signatures) == txin['num_sig']:
-                continue
-            else:
-                return False
-        return True
+    def signature_count(self):
+        r = 0
+        s = 0
+        for txin in self.inputs:
+            signatures = txin.get("signatures",[])
+            s += len(signatures)
+            r += txin['num_sig']
+        return s, r
 
 
+    def is_complete(self):
+        s, r = self.signature_count()
+        return r == s
+
 
     def sign(self, keypairs):
         print_error("tx.sign(), keypairs:", keypairs)