aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-11-17 11:17:09 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2015-11-19 11:08:29 +0100
commitb4f3e9c09eab533179be8efe478a0f21c3f83e6c (patch)
tree6b89bb89cd487db59149e372a4ed477e928ec0a9
parenteac53ec992018a14db6f8a65a7ce333a4c8284cc (diff)
downloadbitcoin-b4f3e9c09eab533179be8efe478a0f21c3f83e6c.tar.xz
ui: Add "Copy raw transaction data" to transaction list context menu
Add a way to quickly copy transaction hex. Primarily useful when manually submitting transactions, e.g. `-walletbroadcast=0` is set.
-rw-r--r--src/qt/transactiontablemodel.cpp15
-rw-r--r--src/qt/transactiontablemodel.h2
-rw-r--r--src/qt/transactionview.cpp8
-rw-r--r--src/qt/transactionview.h1
4 files changed, 26 insertions, 0 deletions
diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp
index 98ad1a44b6..e8ada9f762 100644
--- a/src/qt/transactiontablemodel.cpp
+++ b/src/qt/transactiontablemodel.cpp
@@ -13,6 +13,7 @@
#include "transactionrecord.h"
#include "walletmodel.h"
+#include "core_io.h"
#include "main.h"
#include "sync.h"
#include "uint256.h"
@@ -220,6 +221,18 @@ public:
}
return QString();
}
+
+ QString getTxHex(TransactionRecord *rec)
+ {
+ LOCK2(cs_main, wallet->cs_wallet);
+ std::map<uint256, CWalletTx>::iterator mi = wallet->mapWallet.find(rec->hash);
+ if(mi != wallet->mapWallet.end())
+ {
+ std::string strHex = EncodeHexTx(static_cast<CTransaction>(mi->second));
+ return QString::fromStdString(strHex);
+ }
+ return QString();
+ }
};
TransactionTableModel::TransactionTableModel(const PlatformStyle *platformStyle, CWallet* wallet, WalletModel *parent):
@@ -594,6 +607,8 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const
return rec->getTxID();
case TxHashRole:
return QString::fromStdString(rec->hash.ToString());
+ case TxHexRole:
+ return priv->getTxHex(rec);
case ConfirmedRole:
return rec->status.countsForBalance;
case FormattedAmountRole:
diff --git a/src/qt/transactiontablemodel.h b/src/qt/transactiontablemodel.h
index 2089f703a6..601f893d47 100644
--- a/src/qt/transactiontablemodel.h
+++ b/src/qt/transactiontablemodel.h
@@ -60,6 +60,8 @@ public:
TxIDRole,
/** Transaction hash */
TxHashRole,
+ /** Transaction data, hex-encoded */
+ TxHexRole,
/** Is transaction confirmed? */
ConfirmedRole,
/** Formatted amount, without brackets when unconfirmed */
diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp
index 54e5a82720..11e6d750ac 100644
--- a/src/qt/transactionview.cpp
+++ b/src/qt/transactionview.cpp
@@ -141,6 +141,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
QAction *copyLabelAction = new QAction(tr("Copy label"), this);
QAction *copyAmountAction = new QAction(tr("Copy amount"), this);
QAction *copyTxIDAction = new QAction(tr("Copy transaction ID"), this);
+ QAction *copyTxHexAction = new QAction(tr("Copy raw transaction"), this);
QAction *editLabelAction = new QAction(tr("Edit label"), this);
QAction *showDetailsAction = new QAction(tr("Show transaction details"), this);
@@ -149,6 +150,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
contextMenu->addAction(copyLabelAction);
contextMenu->addAction(copyAmountAction);
contextMenu->addAction(copyTxIDAction);
+ contextMenu->addAction(copyTxHexAction);
contextMenu->addAction(editLabelAction);
contextMenu->addAction(showDetailsAction);
@@ -170,6 +172,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa
connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(copyLabel()));
connect(copyAmountAction, SIGNAL(triggered()), this, SLOT(copyAmount()));
connect(copyTxIDAction, SIGNAL(triggered()), this, SLOT(copyTxID()));
+ connect(copyTxHexAction, SIGNAL(triggered()), this, SLOT(copyTxHex()));
connect(editLabelAction, SIGNAL(triggered()), this, SLOT(editLabel()));
connect(showDetailsAction, SIGNAL(triggered()), this, SLOT(showDetails()));
}
@@ -380,6 +383,11 @@ void TransactionView::copyTxID()
GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::TxIDRole);
}
+void TransactionView::copyTxHex()
+{
+ GUIUtil::copyEntryData(transactionView, 0, TransactionTableModel::TxHexRole);
+}
+
void TransactionView::editLabel()
{
if(!transactionView->selectionModel() ||!model)
diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h
index ac157fb98d..dde700c4d1 100644
--- a/src/qt/transactionview.h
+++ b/src/qt/transactionview.h
@@ -93,6 +93,7 @@ private Q_SLOTS:
void copyLabel();
void copyAmount();
void copyTxID();
+ void copyTxHex();
void openThirdPartyTxUrl(QString url);
void updateWatchOnlyColumn(bool fHaveWatchOnly);