X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=gui%2Fqt%2Ftransaction_dialog.py;h=a2bd33b22ac9b8bf3249efe23fe052aa09c5073a;hb=1bb00ff5af3a7f23f23c92b69cc2ff412731a7f3;hp=77110f7c79620cb67937a26d2a9c617fc674df3c;hpb=84954b0778c3406ab2e00470da7e4d05ce75721f;p=electrum-nvc.git diff --git a/gui/qt/transaction_dialog.py b/gui/qt/transaction_dialog.py index 77110f7..a2bd33b 100644 --- a/gui/qt/transaction_dialog.py +++ b/gui/qt/transaction_dialog.py @@ -34,6 +34,8 @@ from PyQt4.QtCore import * import PyQt4.QtCore as QtCore from electrum import transaction +from electrum.plugins import run_hook + from util import MyTreeWidget class TxDialog(QDialog): @@ -70,7 +72,7 @@ class TxDialog(QDialog): vbox.addStretch(1) - buttons = QHBoxLayout() + self.buttons = buttons = QHBoxLayout() vbox.addLayout( buttons ) buttons.addStretch(1) @@ -80,7 +82,8 @@ class TxDialog(QDialog): buttons.addWidget(b) self.broadcast_button = b = QPushButton(_("Broadcast")) - b.clicked.connect(self.broadcast) + b.clicked.connect(lambda: self.parent.broadcast_transaction(self.tx)) + b.hide() buttons.addWidget(b) @@ -92,16 +95,27 @@ class TxDialog(QDialog): cancelButton.clicked.connect(lambda: self.done(0)) buttons.addWidget(cancelButton) cancelButton.setDefault(True) + + 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() @@ -118,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(): @@ -130,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) @@ -155,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 @@ -175,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): @@ -205,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) @@ -214,14 +221,6 @@ class TxDialog(QDialog): - - def broadcast(self): - result, result_message = self.wallet.sendtx( self.tx ) - if result: - self.show_message(_("Transaction successfully sent")+': %s' % (result_message)) - else: - self.show_message(_("There was a problem sending your transaction:") + '\n %s' % (result_message)) - def show_message(self, msg): QMessageBox.information(self, _('Message'), msg, _('OK'))