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()
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()
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)
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)