diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 4e5841c..8bc39aa 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -5,9 +5,10 @@
#include "rpc.h"
#include "balancestablemodel.h"
#include "settings.h"
+#include "utils.h"
#include "precompiled.h"
-#include "ui_about.h"
+
using json = nlohmann::json;
@@ -28,6 +29,20 @@ MainWindow::MainWindow(QWidget *parent) :
ui->statusBar->addPermanentWidget(loadingLabel);
loadingLabel->setVisible(false);
+ ui->statusBar->setContextMenuPolicy(Qt::CustomContextMenu);
+ QObject::connect(ui->statusBar, &QStatusBar::customContextMenuRequested, [=](QPoint pos) {
+ auto msg = ui->statusBar->currentMessage();
+ if (!msg.isEmpty() && msg.startsWith(Utils::txidStatusMessage)) {
+ QMenu menu(this);
+ menu.addAction("Copy txid", [=]() {
+ QGuiApplication::clipboard()->setText(msg.split(":")[1].trimmed());
+ });
+ QPoint gpos(mapToGlobal(pos).x(), mapToGlobal(pos).y() + this->height() - ui->statusBar->height());
+ menu.exec(gpos);
+ }
+
+ });
+
statusLabel = new QLabel();
ui->statusBar->addPermanentWidget(statusLabel);
@@ -316,7 +331,6 @@ MainWindow::~MainWindow()
{
delete ui;
delete rpc;
- delete settings;
delete loadingMovie;
}
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 03ee812..c08eb82 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -273,8 +273,8 @@
0
0
- 823
- 226
+ 825
+ 284
@@ -637,7 +637,7 @@
0
0
889
- 22
+ 21
diff --git a/src/rpc.cpp b/src/rpc.cpp
index b4d58df..8871e5d 100644
--- a/src/rpc.cpp
+++ b/src/rpc.cpp
@@ -1,4 +1,5 @@
#include "rpc.h"
+#include "utils.h"
#include "transactionitem.h"
#include "settings.h"
@@ -443,9 +444,8 @@ void RPC::refreshTxStatus(const QString& newOpid) {
QString status = QString::fromStdString(it["status"]);
if (status == "success") {
auto txid = QString::fromStdString(it["result"]["txid"]);
- qDebug() << "Tx complete. txid " << txid;
- QGuiApplication::clipboard()->setText(txid);
- main->ui->statusBar->showMessage("Tx completed! Txid copied to clipboard (" + txid + ")");
+ qDebug() << "Tx completed: " << txid;
+ main->ui->statusBar->showMessage(Utils::txidStatusMessage + " " + txid);
main->loadingLabel->setVisible(false);
watchingOps.remove(id);
diff --git a/src/scripts/mkwinrelease.ps1 b/src/scripts/mkwinrelease.ps1
index c045c11..3388161 100644
--- a/src/scripts/mkwinrelease.ps1
+++ b/src/scripts/mkwinrelease.ps1
@@ -26,4 +26,12 @@ Copy-Item README.md release/$target | Out-Null
echo "Zipping"
Compress-Archive -LiteralPath release/$target -DestinationPath "release/Windows-$target.zip"
+echo "Package Contents"
+[Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
+foreach($sourceFile in (Get-ChildItem "release/Windows-$target.zip"))
+{
+ [IO.Compression.ZipFile]::OpenRead($sourceFile.FullName).Entries.FullName |
+ %{ "$sourcefile`:$_" }
+}
+
echo "Done"
\ No newline at end of file
diff --git a/src/ui_mainwindow.h b/src/ui_mainwindow.h
index d1066f7..4989951 100644
--- a/src/ui_mainwindow.h
+++ b/src/ui_mainwindow.h
@@ -152,6 +152,7 @@ public:
actionDonate->setObjectName(QStringLiteral("actionDonate"));
actionImport_Private_Keys = new QAction(MainWindow);
actionImport_Private_Keys->setObjectName(QStringLiteral("actionImport_Private_Keys"));
+ actionImport_Private_Keys->setVisible(false);
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QStringLiteral("centralWidget"));
gridLayout_3 = new QGridLayout(centralWidget);
@@ -348,7 +349,7 @@ public:
sendToScrollArea->setWidgetResizable(true);
sendToWidgets = new QWidget();
sendToWidgets->setObjectName(QStringLiteral("sendToWidgets"));
- sendToWidgets->setGeometry(QRect(0, 0, 823, 226));
+ sendToWidgets->setGeometry(QRect(0, 0, 825, 284));
sendToLayout = new QVBoxLayout(sendToWidgets);
sendToLayout->setSpacing(6);
sendToLayout->setContentsMargins(11, 11, 11, 11);
@@ -604,7 +605,7 @@ public:
MainWindow->setCentralWidget(centralWidget);
menuBar = new QMenuBar(MainWindow);
menuBar->setObjectName(QStringLiteral("menuBar"));
- menuBar->setGeometry(QRect(0, 0, 889, 22));
+ menuBar->setGeometry(QRect(0, 0, 889, 21));
menuBalance = new QMenu(menuBar);
menuBalance->setObjectName(QStringLiteral("menuBalance"));
menuHelp = new QMenu(menuBar);
@@ -634,7 +635,6 @@ public:
menuBar->addAction(menuBalance->menuAction());
menuBar->addAction(menuHelp->menuAction());
menuBalance->addAction(actionImport_Private_Keys);
- menuBalance->addSeparator();
menuBalance->addAction(actionSettings);
menuBalance->addSeparator();
menuBalance->addAction(actionExit);
diff --git a/utils.cpp b/utils.cpp
new file mode 100644
index 0000000..4021a08
--- /dev/null
+++ b/utils.cpp
@@ -0,0 +1,3 @@
+#include "utils.h"
+
+const QString Utils::txidStatusMessage = QString("Tx submitted (right click to copy) txid:");
\ No newline at end of file
diff --git a/utils.h b/utils.h
new file mode 100644
index 0000000..7fca4e7
--- /dev/null
+++ b/utils.h
@@ -0,0 +1,14 @@
+#ifndef UTILS_H
+#define UTILS_H
+
+#include "precompiled.h"
+
+class Utils
+{
+public:
+ static const QString txidStatusMessage;
+private:
+ Utils() = delete;
+};
+
+#endif // UTILS_H
\ No newline at end of file
diff --git a/zcash-qt-wallet.pro b/zcash-qt-wallet.pro
index 7b8d94f..61eaefd 100644
--- a/zcash-qt-wallet.pro
+++ b/zcash-qt-wallet.pro
@@ -49,7 +49,8 @@ SOURCES += \
src/settings.cpp \
src/sendtab.cpp \
src/txtablemodel.cpp \
- src/transactionitem.cpp
+ src/transactionitem.cpp \
+ utils.cpp
HEADERS += \
src/mainwindow.h \
@@ -63,7 +64,8 @@ HEADERS += \
src/3rdparty/json/json.hpp \
src/settings.h \
src/txtablemodel.h \
- src/transactionitem.h
+ src/transactionitem.h \
+ utils.h
FORMS += \
src/mainwindow.ui \