X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=gui%2Fqt%2Ftransaction_dialog.py;h=a2bd33b22ac9b8bf3249efe23fe052aa09c5073a;hb=1bb00ff5af3a7f23f23c92b69cc2ff412731a7f3;hp=abc92feae7ad6f1b44dab7eb4792742e1a9d2459;hpb=6d0488c2de4330a89e864b9fc070fa09a9e2badf;p=electrum-nvc.git diff --git a/gui/qt/transaction_dialog.py b/gui/qt/transaction_dialog.py index abc92fe..a2bd33b 100644 --- a/gui/qt/transaction_dialog.py +++ b/gui/qt/transaction_dialog.py @@ -72,7 +72,7 @@ class TxDialog(QDialog): vbox.addStretch(1) - buttons = QHBoxLayout() + self.buttons = buttons = QHBoxLayout() vbox.addLayout( buttons ) buttons.addStretch(1) @@ -96,17 +96,26 @@ class TxDialog(QDialog): buttons.addWidget(cancelButton) cancelButton.setDefault(True) - run_hook('init_transaction_dialog', self, buttons) + b = QPushButton() + b.setIcon(QIcon(":icons/qrcode.png")) + b.clicked.connect(self.show_qr) + buttons.insertWidget(1,b) + + run_hook('transaction_dialog', self) self.update() + def show_qr(self): + text = self.tx.raw.decode('hex') + try: + self.parent.show_qrcode(text, 'Transaction') + except Exception as e: + self.show_message(str(e)) def sign(self): - tx_dict = self.tx.as_dict() - input_info = json.loads(tx_dict["input_info"]) - self.parent.sign_raw_transaction(self.tx, input_info) + self.parent.sign_raw_transaction(self.tx) self.update() @@ -123,10 +132,13 @@ class TxDialog(QDialog): def update(self): is_relevant, is_mine, v, fee = self.wallet.get_tx_value(self.tx) + if self.wallet.can_sign(self.tx): + self.sign_button.show() + else: + self.sign_button.hide() if self.tx.is_complete(): - status = _("Status: Signed") - self.sign_button.hide() + status = _("Signed") tx_hash = self.tx.hash() if tx_hash in self.wallet.transactions.keys(): @@ -135,24 +147,21 @@ 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() - else: - self.sign_button.hide() self.broadcast_button.hide() 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) @@ -160,7 +169,6 @@ class TxDialog(QDialog): else: self.date_label.hide() - # if we are not synchronized, we cannot tell if self.parent.network is None or not self.parent.network.is_running() or not self.parent.network.is_connected(): return @@ -180,14 +188,8 @@ class TxDialog(QDialog): else: self.amount_label.setText(_("Transaction unrelated to your wallet")) + run_hook('transaction_dialog_update', self) - def exec_menu(self, position,l): - item = l.itemAt(position) - if not item: return - addr = unicode(item.text(0)) - menu = QMenu() - menu.addAction(_("Copy to clipboard"), lambda: self.parent.app.clipboard().setText(addr)) - menu.exec_(l.viewport().mapToGlobal(position)) def add_io(self, vbox): @@ -210,7 +212,7 @@ class TxDialog(QDialog): vbox.addWidget(i_text) vbox.addWidget(QLabel(_("Outputs"))) - lines = map(lambda x: x[0] + u'\t\t' + self.parent.format_amount(x[1]), self.tx.outputs) + lines = map(lambda x: x[0] + u'\t\t' + self.parent.format_amount(x[1]), self.tx.get_outputs()) o_text = QTextEdit() o_text.setText('\n'.join(lines)) o_text.setReadOnly(True)