@@ -377,6 +377,10 @@ void BitcoinGUI::createActions()
377377 m_mask_values_action->setStatusTip (tr (" Mask the values in the Overview tab" ));
378378 m_mask_values_action->setCheckable (true );
379379
380+ m_export_watchonly_action = new QAction (tr (" Export watch-only wallet" ), this );
381+ m_export_watchonly_action->setEnabled (false );
382+ m_export_watchonly_action->setStatusTip (tr (" Export a watch-only version of the current wallet that can be restored onto another node." ));
383+
380384 connect (quitAction, &QAction::triggered, this , &BitcoinGUI::quitRequested);
381385 connect (aboutAction, &QAction::triggered, this , &BitcoinGUI::aboutClicked);
382386 connect (aboutQtAction, &QAction::triggered, qApp, QApplication::aboutQt);
@@ -524,6 +528,11 @@ void BitcoinGUI::createActions()
524528 });
525529 connect (m_mask_values_action, &QAction::toggled, this , &BitcoinGUI::setPrivacy);
526530 connect (m_mask_values_action, &QAction::toggled, this , &BitcoinGUI::enableHistoryAction);
531+ connect (m_export_watchonly_action, &QAction::triggered, [this ] {
532+ QString destination = GUIUtil::getSaveFileName (this , tr (" Save Watch-only Wallet Export" ), QString (), QString (), nullptr );
533+ if (destination.isEmpty ()) return ;
534+ walletFrame->currentWalletModel ()->wallet ().exportWatchOnlyWallet (GUIUtil::QStringToPath (destination));
535+ });
527536 }
528537#endif // ENABLE_WALLET
529538
@@ -547,6 +556,7 @@ void BitcoinGUI::createMenuBar()
547556 file->addSeparator ();
548557 file->addAction (backupWalletAction);
549558 file->addAction (m_restore_wallet_action);
559+ file->addAction (m_export_watchonly_action);
550560 file->addSeparator ();
551561 file->addAction (openAction);
552562 file->addAction (signMessageAction);
@@ -755,6 +765,7 @@ void BitcoinGUI::setWalletController(WalletController* wallet_controller, bool s
755765 m_restore_wallet_action->setEnabled (true );
756766 m_migrate_wallet_action->setEnabled (true );
757767 m_migrate_wallet_action->setMenu (m_migrate_wallet_menu);
768+ m_export_watchonly_action->setEnabled (true );
758769
759770 GUIUtil::ExceptionSafeConnect (wallet_controller, &WalletController::walletAdded, this , &BitcoinGUI::addWallet);
760771 connect (wallet_controller, &WalletController::walletRemoved, this , &BitcoinGUI::removeWallet);
0 commit comments