Compare commits

...

22 Commits

Author SHA1 Message Date
Alexander Blair
33afd0bb83 Merge pull request #3180
954c9725 repo: prepare v0.17.1.1 (selsta)
2020-10-19 00:14:37 -07:00
Alexander Blair
a165a14519 Merge pull request #3181
6ee5effc Wallet: fix different signedness comparison (-Werror=sign-compare) (xiphon)
2020-10-19 00:14:12 -07:00
Alexander Blair
33e1801c57 Merge pull request #3175
e5b0837c SettingsNode: ignore selecting the same mode twice (xiphon)
2020-10-19 00:13:24 -07:00
Alexander Blair
fac3fcb518 Merge pull request #3174
a73ae625 DaemonManager: set out-peers to 16 in simple mode / bootstrap (selsta)
2020-10-19 00:12:52 -07:00
Alexander Blair
8457055f08 Merge pull request #3172
44df1bcc cmake: fix install targets (Bertrand Jacquin)
2020-10-19 00:12:31 -07:00
Alexander Blair
e01c847fde Merge pull request #3171
0a0dbf88 WizardRestoreWallet1: fix "wallet name" check in keys mode (selsta)
2020-10-19 00:12:05 -07:00
Alexander Blair
bedf04d08a Merge pull request #3161
b932df85 Wallet: interrupt refresh thread on wallet close (xiphon)
2020-10-19 00:11:35 -07:00
Alexander Blair
83da709436 Merge pull request #3158
79ee8934 History: fix failed and pending tx statuses (xiphon)
2020-10-19 00:11:09 -07:00
Alexander Blair
f51b0d7d0c Merge pull request #3156
1b2d9408 Makefile: add 'release-linux-armv8' target (xiphon)
2020-10-19 00:10:31 -07:00
Alexander Blair
1f9d60602a Merge pull request #3155
db4273ee NetworkStatusItem: 'starting/stopping the node' status (no splash) (xiphon)
2020-10-19 00:10:19 -07:00
Alexander Blair
7a285b3613 Merge pull request #3136
05733c14 Transfer: fix help text (white theme) (selsta)
2020-10-19 00:09:52 -07:00
xiphon
6ee5effc15 Wallet: fix different signedness comparison (-Werror=sign-compare)
Co-authored-by: Bertrand Jacquin <bertrand@jacquin.bzh>
2020-10-18 20:58:40 +00:00
selsta
954c972530 repo: prepare v0.17.1.1 2020-10-18 18:01:44 +02:00
xiphon
e5b0837c8e SettingsNode: ignore selecting the same mode twice 2020-10-18 02:53:57 +00:00
selsta
a73ae62526 DaemonManager: set out-peers to 16 in simple mode / bootstrap 2020-10-18 02:07:29 +02:00
Bertrand Jacquin
44df1bccfc cmake: fix install targets
Binary should be installed in bin/ relative to CMAKE_INSTALL_PREFIX,
prior to this commit, monero-wallet-gui is installed in usr/ instead of
usr/bin

  -- Installing: image/usr/monero-wallet-gui

With this comment, file is installed in the right location:

  -- Installing: image/usr/bin/monero-wallet-gui

See: https://cmake.org/cmake/help/latest/command/install.html
2020-10-17 23:08:21 +01:00
selsta
0a0dbf8853 WizardRestoreWallet1: fix "wallet name" check in keys mode 2020-10-17 20:23:29 +02:00
xiphon
b932df85fd Wallet: interrupt refresh thread on wallet close 2020-10-17 02:58:23 +00:00
xiphon
79ee893499 History: fix failed and pending tx statuses 2020-10-15 10:23:06 +00:00
xiphon
1b2d940850 Makefile: add 'release-linux-armv8' target 2020-10-14 15:51:29 +00:00
xiphon
db4273ee82 NetworkStatusItem: 'starting/stopping the node' status (no splash) 2020-10-14 02:26:56 +00:00
selsta
05733c14b7 Transfer: fix help text (white theme) 2020-10-07 12:59:33 +02:00
13 changed files with 62 additions and 28 deletions

View File

@@ -5,7 +5,7 @@ message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}")
set(VERSION_MAJOR "17") set(VERSION_MAJOR "17")
set(VERSION_MINOR "1") set(VERSION_MINOR "1")
set(VERSION_REVISION "0") set(VERSION_REVISION "1")
set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}") set(VERSION "0.${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
option(STATIC "Link libraries statically, requires static Qt") option(STATIC "Link libraries statically, requires static Qt")

View File

@@ -36,6 +36,11 @@ scanner:
release: release:
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D DEV_MODE=$(or ${DEV_MODE},OFF) -D ARCH="x86-64" -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE) mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D DEV_MODE=$(or ${DEV_MODE},OFF) -D ARCH="x86-64" -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE)
release-linux-armv8:
mkdir -p $(builddir)/release
cd $(builddir)/release
cmake -D DEV_MODE=$(or ${DEV_MODE},OFF) -D ARCH="armv8-a" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release -D BUILD_TAG="linux-armv8" $(topdir) && $(MAKE)
release-static: release-static:
mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D STATIC=ON -D DEV_MODE=$(or ${DEV_MODE},OFF) -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE) mkdir -p $(builddir)/release && cd $(builddir)/release && cmake -D STATIC=ON -D DEV_MODE=$(or ${DEV_MODE},OFF) -D ARCH="x86-64" -D BUILD_64=ON -D CMAKE_BUILD_TYPE=Release $(topdir) && $(MAKE)

View File

@@ -39,6 +39,15 @@ Rectangle {
property var connected: Wallet.ConnectionStatus_Disconnected property var connected: Wallet.ConnectionStatus_Disconnected
function getConnectionStatusString(status) { function getConnectionStatusString(status) {
switch (appWindow.daemonStartStopInProgress)
{
case 1:
return qsTr("Starting the node");
case 2:
return qsTr("Stopping the node");
default:
break;
}
switch (status) { switch (status) {
case Wallet.ConnectionStatus_Connected: case Wallet.ConnectionStatus_Connected:
if (!appWindow.daemonSynced) if (!appWindow.daemonSynced)

View File

@@ -17,7 +17,7 @@ if [ ! -d $MONERO_DIR/src ]; then
fi fi
git submodule update --remote git submodule update --remote
git -C $MONERO_DIR fetch git -C $MONERO_DIR fetch
git -C $MONERO_DIR checkout v0.17.1.0 git -C $MONERO_DIR checkout v0.17.1.1
# get monero core tag # get monero core tag
pushd $MONERO_DIR pushd $MONERO_DIR

View File

@@ -72,7 +72,7 @@ ApplicationWindow {
property bool walletSynced: false property bool walletSynced: false
property int maxWindowHeight: (isAndroid || isIOS)? screenHeight : (screenHeight < 900)? 720 : 800; property int maxWindowHeight: (isAndroid || isIOS)? screenHeight : (screenHeight < 900)? 720 : 800;
property bool daemonRunning: !persistentSettings.useRemoteNode && !disconnected property bool daemonRunning: !persistentSettings.useRemoteNode && !disconnected
property bool daemonStartStopInProgress: false property int daemonStartStopInProgress: 0
property alias toolTip: toolTip property alias toolTip: toolTip
property string walletName property string walletName
property bool viewOnly: false property bool viewOnly: false
@@ -707,31 +707,33 @@ ApplicationWindow {
} }
function startDaemon(flags){ function startDaemon(flags){
daemonStartStopInProgress = true; daemonStartStopInProgress = 1;
// Pause refresh while starting daemon // Pause refresh while starting daemon
currentWallet.pauseRefresh(); currentWallet.pauseRefresh();
appWindow.showProcessingSplash(qsTr("Waiting for daemon to start..."))
const noSync = appWindow.walletMode === 0; const noSync = appWindow.walletMode === 0;
const bootstrapNodeAddress = persistentSettings.walletMode < 2 ? "auto" : persistentSettings.bootstrapNodeAddress const bootstrapNodeAddress = persistentSettings.walletMode < 2 ? "auto" : persistentSettings.bootstrapNodeAddress
daemonManager.start(flags, persistentSettings.nettype, persistentSettings.blockchainDataDir, bootstrapNodeAddress, noSync); daemonManager.start(flags, persistentSettings.nettype, persistentSettings.blockchainDataDir, bootstrapNodeAddress, noSync);
} }
function stopDaemon(callback){ function stopDaemon(callback, splash){
daemonStartStopInProgress = true; daemonStartStopInProgress = 2;
appWindow.showProcessingSplash(qsTr("Waiting for daemon to stop...")) if (splash) {
appWindow.showProcessingSplash(qsTr("Waiting for daemon to stop..."));
}
daemonManager.stopAsync(persistentSettings.nettype, function(result) { daemonManager.stopAsync(persistentSettings.nettype, function(result) {
daemonStartStopInProgress = false; daemonStartStopInProgress = 0;
hideProcessingSplash(); if (splash) {
hideProcessingSplash();
}
callback(result); callback(result);
}); });
} }
function onDaemonStarted(){ function onDaemonStarted(){
console.log("daemon started"); console.log("daemon started");
daemonStartStopInProgress = false; daemonStartStopInProgress = 0;
hideProcessingSplash();
currentWallet.connected(true); currentWallet.connected(true);
// resume refresh // resume refresh
currentWallet.startRefresh(); currentWallet.startRefresh();
@@ -744,8 +746,7 @@ ApplicationWindow {
function onDaemonStartFailure(error) { function onDaemonStartFailure(error) {
console.log("daemon start failed"); console.log("daemon start failed");
daemonStartStopInProgress = false; daemonStartStopInProgress = 0;
hideProcessingSplash();
// resume refresh // resume refresh
currentWallet.startRefresh(); currentWallet.startRefresh();
informationPopup.title = qsTr("Daemon failed to start") + translationManager.emptyString; informationPopup.title = qsTr("Daemon failed to start") + translationManager.emptyString;
@@ -1965,7 +1966,7 @@ ApplicationWindow {
// Simple mode connection check timer // Simple mode connection check timer
id: simpleModeConnectionTimer id: simpleModeConnectionTimer
interval: 2000 interval: 2000
running: appWindow.walletMode < 2 && currentWallet != undefined && !daemonStartStopInProgress running: appWindow.walletMode < 2 && currentWallet != undefined && daemonStartStopInProgress == 0
repeat: true repeat: true
onTriggered: appWindow.checkSimpleModeConnection() onTriggered: appWindow.checkSimpleModeConnection()
} }
@@ -2043,7 +2044,7 @@ ApplicationWindow {
if(daemonManager == undefined || persistentSettings.useRemoteNode) { if(daemonManager == undefined || persistentSettings.useRemoteNode) {
closeAccepted(); closeAccepted();
} else if (appWindow.walletMode == 0) { } else if (appWindow.walletMode == 0) {
stopDaemon(closeAccepted); stopDaemon(closeAccepted, true);
} else { } else {
showProcessingSplash(qsTr("Checking local node status...")); showProcessingSplash(qsTr("Checking local node status..."));
const handler = function(running) { const handler = function(running) {

2
monero

Submodule monero updated: 4d855fcca7...76cc82c292

View File

@@ -764,12 +764,18 @@ Rectangle {
font.pixelSize: 15 font.pixelSize: 15
text: { text: {
if (isout) { if (isout) {
if (isFailed) {
return qsTr("Failed") + translationManager.emptyString;
}
if (isPending) {
return qsTr("Waiting confirmation...") + translationManager.emptyString;
}
if (address) { if (address) {
const addressBookName = currentWallet ? currentWallet.addressBook.getDescription(address) : null; const addressBookName = currentWallet ? currentWallet.addressBook.getDescription(address) : null;
return (addressBookName ? FontAwesome.addressBook + " " + addressBookName : TxUtils.addressTruncate(address, 8)); return (addressBookName ? FontAwesome.addressBook + " " + addressBookName : TxUtils.addressTruncate(address, 8));
} }
if (amount != 0) { if (amount != 0) {
return (blockheight ? qsTr("Unknown recipient") : qsTr("Waiting confirmation...")) + translationManager.emptyString; return qsTr("Unknown recipient") + translationManager.emptyString;
} else { } else {
return qsTr("My wallet") + translationManager.emptyString; return qsTr("My wallet") + translationManager.emptyString;
} }
@@ -1489,6 +1495,8 @@ Rectangle {
for (var i = 0; i < count; ++i) { for (var i = 0; i < count; ++i) {
var idx = _model.index(i, 0); var idx = _model.index(i, 0);
var isPending = model.data(idx, TransactionHistoryModel.TransactionPendingRole);
var isFailed = model.data(idx, TransactionHistoryModel.TransactionFailedRole);
var isout = _model.data(idx, TransactionHistoryModel.TransactionIsOutRole); var isout = _model.data(idx, TransactionHistoryModel.TransactionIsOutRole);
var amount = _model.data(idx, TransactionHistoryModel.TransactionAmountRole); var amount = _model.data(idx, TransactionHistoryModel.TransactionAmountRole);
var hash = _model.data(idx, TransactionHistoryModel.TransactionHashRole); var hash = _model.data(idx, TransactionHistoryModel.TransactionHashRole);
@@ -1525,6 +1533,8 @@ Rectangle {
root.txModelData.push({ root.txModelData.push({
"i": i, "i": i,
"isPending": isPending,
"isFailed": isFailed,
"isout": isout, "isout": isout,
"amount": amount, "amount": amount,
"displayAmount": displayAmount, "displayAmount": displayAmount,

View File

@@ -553,7 +553,8 @@ Rectangle {
if (appWindow.viewOnly && !appWindow.isTrustedDaemon()){ if (appWindow.viewOnly && !appWindow.isTrustedDaemon()){
errorMessage = "<p class='orange'>" + qsTr("* To import, you must connect to a local node or a trusted remote node") + "</p>"; errorMessage = "<p class='orange'>" + qsTr("* To import, you must connect to a local node or a trusted remote node") + "</p>";
} }
return "<style type='text/css'>p{line-height:20px; margin-top:0px; margin-bottom:0px; color:#ffffff;} p.orange{color:#ff9323;}</style>" + return "<style type='text/css'>p{line-height:20px; margin-top:0px; margin-bottom:0px; color:" + MoneroComponents.Style.defaultFontColor +
";} p.orange{color:#ff9323;}</style>" +
"<p>" + qsTr("1. Using cold wallet, export the key images into a file") + "</p>" + "<p>" + qsTr("1. Using cold wallet, export the key images into a file") + "</p>" +
"<p>" + qsTr("2. Using view-only wallet, import the key images file") + "</p>" + "<p>" + qsTr("2. Using view-only wallet, import the key images file") + "</p>" +
errorMessage + translationManager.emptyString errorMessage + translationManager.emptyString
@@ -593,7 +594,8 @@ Rectangle {
if (appWindow.viewOnly && !pageRoot.checkInformation(amountLine.text, addressLine.text, appWindow.persistentSettings.nettype)){ if (appWindow.viewOnly && !pageRoot.checkInformation(amountLine.text, addressLine.text, appWindow.persistentSettings.nettype)){
errorMessage = "<p class='orange'>" + qsTr("* To create a transaction file, please enter address and amount above") + "</p>"; errorMessage = "<p class='orange'>" + qsTr("* To create a transaction file, please enter address and amount above") + "</p>";
} }
return "<style type='text/css'>p{line-height:20px; margin-top:0px; margin-bottom:0px; color:#ffffff;} p.orange{color:#ff9323;}</style>" + return "<style type='text/css'>p{line-height:20px; margin-top:0px; margin-bottom:0px; color:" + MoneroComponents.Style.defaultFontColor +
";} p.orange{color:#ff9323;}</style>" +
"<p>" + qsTr("1. Using view-only wallet, export the outputs into a file") + "</p>" + "<p>" + qsTr("1. Using view-only wallet, export the outputs into a file") + "</p>" +
"<p>" + qsTr("2. Using cold wallet, import the outputs file and export the key images") + "</p>" + "<p>" + qsTr("2. Using cold wallet, import the outputs file and export the key images") + "</p>" +
"<p>" + qsTr("3. Using view-only wallet, import the key images file and create a transaction file") + "</p>" + "<p>" + qsTr("3. Using view-only wallet, import the key images file and create a transaction file") + "</p>" +

View File

@@ -136,6 +136,7 @@ Rectangle{
MouseArea { MouseArea {
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
anchors.fill: parent anchors.fill: parent
enabled: persistentSettings.useRemoteNode
onClicked: { onClicked: {
persistentSettings.useRemoteNode = false; persistentSettings.useRemoteNode = false;
appWindow.disconnectRemoteNode(); appWindow.disconnectRemoteNode();
@@ -227,6 +228,7 @@ Rectangle{
MouseArea { MouseArea {
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
anchors.fill: parent anchors.fill: parent
enabled: !persistentSettings.useRemoteNode
onClicked: { onClicked: {
appWindow.connectRemoteNode(); appWindow.connectRemoteNode();
} }

View File

@@ -178,5 +178,5 @@ add_custom_command(TARGET monero-wallet-gui POST_BUILD COMMAND ${CMAKE_COMMAND}
include(Deploy) include(Deploy)
install(TARGETS monero-wallet-gui install(TARGETS monero-wallet-gui
DESTINATION ${CMAKE_INSTALL_PREFIX} DESTINATION bin
) )

View File

@@ -112,6 +112,10 @@ bool DaemonManager::start(const QString &flags, NetworkType::Type nettype, const
arguments << "--no-sync"; arguments << "--no-sync";
} }
if (!flags.contains("--out-peers", Qt::CaseSensitive) && bootstrapNodeAddress == "auto") {
arguments << "--out-peers" << "16";
}
arguments << "--check-updates" << "disabled"; arguments << "--check-updates" << "disabled";
// --max-concurrency based on threads available. // --max-concurrency based on threads available.

View File

@@ -1086,6 +1086,8 @@ Wallet::~Wallet()
{ {
qDebug("~Wallet: Closing wallet"); qDebug("~Wallet: Closing wallet");
pauseRefresh();
m_walletImpl->stop();
m_scheduler.shutdownWaitForFinished(); m_scheduler.shutdownWaitForFinished();
delete m_addressBook; delete m_addressBook;
@@ -1116,8 +1118,8 @@ Wallet::~Wallet()
void Wallet::startRefreshThread() void Wallet::startRefreshThread()
{ {
const auto future = m_scheduler.run([this] { const auto future = m_scheduler.run([this] {
static constexpr const size_t refreshIntervalSec = 10; constexpr const std::chrono::seconds refreshInterval{10};
static constexpr const size_t intervalResolutionMs = 100; constexpr const std::chrono::milliseconds intervalResolution{100};
auto last = std::chrono::steady_clock::now(); auto last = std::chrono::steady_clock::now();
while (!m_scheduler.stopping()) while (!m_scheduler.stopping())
@@ -1125,15 +1127,15 @@ void Wallet::startRefreshThread()
if (m_refreshEnabled) if (m_refreshEnabled)
{ {
const auto now = std::chrono::steady_clock::now(); const auto now = std::chrono::steady_clock::now();
const auto elapsed = std::chrono::duration_cast<std::chrono::seconds>(now - last).count(); const auto elapsed = now - last;
if (elapsed >= refreshIntervalSec) if (elapsed >= refreshInterval)
{ {
refresh(false); refresh(false);
last = std::chrono::steady_clock::now(); last = std::chrono::steady_clock::now();
} }
} }
std::this_thread::sleep_for(std::chrono::milliseconds(intervalResolutionMs)); std::this_thread::sleep_for(intervalResolution);
} }
}); });
if (!future.first) if (!future.first)

View File

@@ -48,8 +48,7 @@ Rectangle {
var valid = false; var valid = false;
if(wizardController.walletRestoreMode === "keys") { if(wizardController.walletRestoreMode === "keys") {
valid = wizardRestoreWallet1.verifyFromKeys(); return wizardWalletInput.verify() && wizardRestoreWallet1.verifyFromKeys();
return valid;
} else if(wizardController.walletRestoreMode === "seed") { } else if(wizardController.walletRestoreMode === "seed") {
valid = wizardWalletInput.verify(); valid = wizardWalletInput.verify();
if(!valid) return false; if(!valid) return false;