Branch data Line data Source code
# 1 : : // Copyright (c) 2010-2021 The Bitcoin Core developers # 2 : : // Distributed under the MIT software license, see the accompanying # 3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php. # 4 : : # 5 : : #include <node/ui_interface.h> # 6 : : # 7 : : #include <util/translation.h> # 8 : : # 9 : : #include <boost/signals2/optional_last_value.hpp> # 10 : : #include <boost/signals2/signal.hpp> # 11 : : # 12 : : CClientUIInterface uiInterface; # 13 : : # 14 : : struct UISignals { # 15 : : boost::signals2::signal<CClientUIInterface::ThreadSafeMessageBoxSig, boost::signals2::optional_last_value<bool>> ThreadSafeMessageBox; # 16 : : boost::signals2::signal<CClientUIInterface::ThreadSafeQuestionSig, boost::signals2::optional_last_value<bool>> ThreadSafeQuestion; # 17 : : boost::signals2::signal<CClientUIInterface::InitMessageSig> InitMessage; # 18 : : boost::signals2::signal<CClientUIInterface::InitWalletSig> InitWallet; # 19 : : boost::signals2::signal<CClientUIInterface::NotifyNumConnectionsChangedSig> NotifyNumConnectionsChanged; # 20 : : boost::signals2::signal<CClientUIInterface::NotifyNetworkActiveChangedSig> NotifyNetworkActiveChanged; # 21 : : boost::signals2::signal<CClientUIInterface::NotifyAlertChangedSig> NotifyAlertChanged; # 22 : : boost::signals2::signal<CClientUIInterface::ShowProgressSig> ShowProgress; # 23 : : boost::signals2::signal<CClientUIInterface::NotifyBlockTipSig> NotifyBlockTip; # 24 : : boost::signals2::signal<CClientUIInterface::NotifyHeaderTipSig> NotifyHeaderTip; # 25 : : boost::signals2::signal<CClientUIInterface::BannedListChangedSig> BannedListChanged; # 26 : : }; # 27 : : static UISignals g_ui_signals; # 28 : : # 29 : : #define ADD_SIGNALS_IMPL_WRAPPER(signal_name) \ # 30 : : boost::signals2::connection CClientUIInterface::signal_name##_connect(std::function<signal_name##Sig> fn) \ # 31 : 4456 : { \ # 32 : 4456 : return g_ui_signals.signal_name.connect(fn); \ # 33 : 4456 : } # 34 : : # 35 : : ADD_SIGNALS_IMPL_WRAPPER(ThreadSafeMessageBox); # 36 : : ADD_SIGNALS_IMPL_WRAPPER(ThreadSafeQuestion); # 37 : : ADD_SIGNALS_IMPL_WRAPPER(InitMessage); # 38 : : ADD_SIGNALS_IMPL_WRAPPER(InitWallet); # 39 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyNumConnectionsChanged); # 40 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyNetworkActiveChanged); # 41 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyAlertChanged); # 42 : : ADD_SIGNALS_IMPL_WRAPPER(ShowProgress); # 43 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyBlockTip); # 44 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyHeaderTip); # 45 : : ADD_SIGNALS_IMPL_WRAPPER(BannedListChanged); # 46 : : # 47 : 96 : bool CClientUIInterface::ThreadSafeMessageBox(const bilingual_str& message, const std::string& caption, unsigned int style) { return g_ui_signals.ThreadSafeMessageBox(message, caption, style).value_or(false);} # 48 : 6 : bool CClientUIInterface::ThreadSafeQuestion(const bilingual_str& message, const std::string& non_interactive_message, const std::string& caption, unsigned int style) { return g_ui_signals.ThreadSafeQuestion(message, non_interactive_message, caption, style).value_or(false);} # 49 : 6087 : void CClientUIInterface::InitMessage(const std::string& message) { return g_ui_signals.InitMessage(message); } # 50 : 792 : void CClientUIInterface::InitWallet() { return g_ui_signals.InitWallet(); } # 51 : 1470 : void CClientUIInterface::NotifyNumConnectionsChanged(int newNumConnections) { return g_ui_signals.NotifyNumConnectionsChanged(newNumConnections); } # 52 : 3 : void CClientUIInterface::NotifyNetworkActiveChanged(bool networkActive) { return g_ui_signals.NotifyNetworkActiveChanged(networkActive); } # 53 : 2 : void CClientUIInterface::NotifyAlertChanged() { return g_ui_signals.NotifyAlertChanged(); } # 54 : 7838 : void CClientUIInterface::ShowProgress(const std::string& title, int nProgress, bool resume_possible) { return g_ui_signals.ShowProgress(title, nProgress, resume_possible); } # 55 : 59095 : void CClientUIInterface::NotifyBlockTip(SynchronizationState s, const CBlockIndex* i) { return g_ui_signals.NotifyBlockTip(s, i); } # 56 : 52662 : void CClientUIInterface::NotifyHeaderTip(SynchronizationState s, const CBlockIndex* i) { return g_ui_signals.NotifyHeaderTip(s, i); } # 57 : 15 : void CClientUIInterface::BannedListChanged() { return g_ui_signals.BannedListChanged(); } # 58 : : # 59 : : bool InitError(const bilingual_str& str) # 60 : 90 : { # 61 : 90 : uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_ERROR); # 62 : 90 : return false; # 63 : 90 : } # 64 : : # 65 : : void InitWarning(const bilingual_str& str) # 66 : 4 : { # 67 : 4 : uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_WARNING); # 68 : 4 : }