mirror of
https://github.com/monero-project/monero-gui.git
synced 2025-01-10 12:54:30 +00:00
Merge pull request #3435
36940f0
Transfer: add support for outputs import / export (selsta)e36b166
Wallet: import / export output function (tobtoht)
This commit is contained in:
commit
35aee155d7
3 changed files with 73 additions and 0 deletions
|
@ -898,6 +898,32 @@ Rectangle {
|
|||
}
|
||||
}
|
||||
|
||||
AdvancedOptionsItem {
|
||||
visible: persistentSettings.transferShowAdvanced && appWindow.walletMode >= 2
|
||||
title: qsTr("Outputs") + translationManager.emptyString
|
||||
button1.text: qsTr("Export") + translationManager.emptyString
|
||||
button1.enabled: appWindow.viewOnly
|
||||
button1.onClicked: {
|
||||
console.log("Transfer: export outputs clicked")
|
||||
exportOutputsDialog.open();
|
||||
}
|
||||
button2.text: qsTr("Import") + translationManager.emptyString
|
||||
button2.enabled: !appWindow.viewOnly
|
||||
button2.onClicked: {
|
||||
console.log("Transfer: import outputs clicked")
|
||||
importOutputsDialog.open();
|
||||
}
|
||||
tooltip: {
|
||||
var header = qsTr("Required for cold wallets to sign their corresponding key images") + translationManager.emptyString;
|
||||
return "<style type='text/css'>.header{ font-size: 13px; } p{line-height:20px; margin-top:0px; margin-bottom:0px; " +
|
||||
";} p.orange{color:#ff9323;}</style>" +
|
||||
"<div class='header'>" + header + "</div>" +
|
||||
"<p>" + qsTr("1. Using view-only wallet, export the outputs into a file") + "</p>" +
|
||||
"<p>" + qsTr("2. Using cold wallet, import the outputs file") + "</p>" +
|
||||
translationManager.emptyString
|
||||
}
|
||||
}
|
||||
|
||||
AdvancedOptionsItem {
|
||||
visible: persistentSettings.transferShowAdvanced && appWindow.walletMode >= 2
|
||||
title: qsTr("Key images") + translationManager.emptyString
|
||||
|
@ -1072,6 +1098,41 @@ Rectangle {
|
|||
|
||||
}
|
||||
|
||||
FileDialog {
|
||||
id: exportOutputsDialog
|
||||
selectMultiple: false
|
||||
selectExisting: false
|
||||
onAccepted: {
|
||||
console.log(walletManager.urlToLocalPath(exportOutputsDialog.fileUrl))
|
||||
if (currentWallet.exportOutputs(walletManager.urlToLocalPath(exportOutputsDialog.fileUrl), true)) {
|
||||
appWindow.showStatusMessage(qsTr("Outputs successfully exported to file") + translationManager.emptyString, 3);
|
||||
} else {
|
||||
appWindow.showStatusMessage(currentWallet.errorString, 5);
|
||||
}
|
||||
}
|
||||
onRejected: {
|
||||
console.log("Canceled");
|
||||
}
|
||||
}
|
||||
|
||||
FileDialog {
|
||||
id: importOutputsDialog
|
||||
selectMultiple: false
|
||||
selectExisting: true
|
||||
title: qsTr("Please choose a file") + translationManager.emptyString
|
||||
onAccepted: {
|
||||
console.log(walletManager.urlToLocalPath(importOutputsDialog.fileUrl))
|
||||
if (currentWallet.importOutputs(walletManager.urlToLocalPath(importOutputsDialog.fileUrl))) {
|
||||
appWindow.showStatusMessage(qsTr("Outputs successfully imported to wallet") + translationManager.emptyString, 3);
|
||||
} else {
|
||||
appWindow.showStatusMessage(currentWallet.errorString, 5);
|
||||
}
|
||||
}
|
||||
onRejected: {
|
||||
console.log("Canceled");
|
||||
}
|
||||
}
|
||||
|
||||
//ExportKeyImagesDialog
|
||||
FileDialog {
|
||||
id: exportKeyImagesDialog
|
||||
|
|
|
@ -499,6 +499,14 @@ bool Wallet::importKeyImages(const QString& path)
|
|||
return m_walletImpl->importKeyImages(path.toStdString());
|
||||
}
|
||||
|
||||
bool Wallet::exportOutputs(const QString& path, bool all) {
|
||||
return m_walletImpl->exportOutputs(path.toStdString(), all);
|
||||
}
|
||||
|
||||
bool Wallet::importOutputs(const QString& path) {
|
||||
return m_walletImpl->importOutputs(path.toStdString());
|
||||
}
|
||||
|
||||
bool Wallet::refresh(bool historyAndSubaddresses /* = true */)
|
||||
{
|
||||
refreshingSet(true);
|
||||
|
|
|
@ -208,6 +208,10 @@ public:
|
|||
Q_INVOKABLE bool exportKeyImages(const QString& path, bool all = false);
|
||||
Q_INVOKABLE bool importKeyImages(const QString& path);
|
||||
|
||||
//! export/import outputs
|
||||
Q_INVOKABLE bool exportOutputs(const QString& path, bool all = false);
|
||||
Q_INVOKABLE bool importOutputs(const QString& path);
|
||||
|
||||
//! refreshes the wallet
|
||||
Q_INVOKABLE bool refresh(bool historyAndSubaddresses = true);
|
||||
|
||||
|
|
Loading…
Reference in a new issue