Branch data Line data Source code
# 1 : : // Copyright (c) 2010-2020 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::NotifyNumConnectionsChangedSig> NotifyNumConnectionsChanged; # 19 : : boost::signals2::signal<CClientUIInterface::NotifyNetworkActiveChangedSig> NotifyNetworkActiveChanged; # 20 : : boost::signals2::signal<CClientUIInterface::NotifyAlertChangedSig> NotifyAlertChanged; # 21 : : boost::signals2::signal<CClientUIInterface::ShowProgressSig> ShowProgress; # 22 : : boost::signals2::signal<CClientUIInterface::NotifyBlockTipSig> NotifyBlockTip; # 23 : : boost::signals2::signal<CClientUIInterface::NotifyHeaderTipSig> NotifyHeaderTip; # 24 : : boost::signals2::signal<CClientUIInterface::BannedListChangedSig> BannedListChanged; # 25 : : }; # 26 : : static UISignals g_ui_signals; # 27 : : # 28 : : #define ADD_SIGNALS_IMPL_WRAPPER(signal_name) \ # 29 : : boost::signals2::connection CClientUIInterface::signal_name##_connect(std::function<signal_name##Sig> fn) \ # 30 : 3715 : { \ # 31 : 3715 : return g_ui_signals.signal_name.connect(fn); \ # 32 : 3715 : } # 33 : : # 34 : : ADD_SIGNALS_IMPL_WRAPPER(ThreadSafeMessageBox); # 35 : : ADD_SIGNALS_IMPL_WRAPPER(ThreadSafeQuestion); # 36 : : ADD_SIGNALS_IMPL_WRAPPER(InitMessage); # 37 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyNumConnectionsChanged); # 38 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyNetworkActiveChanged); # 39 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyAlertChanged); # 40 : : ADD_SIGNALS_IMPL_WRAPPER(ShowProgress); # 41 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyBlockTip); # 42 : : ADD_SIGNALS_IMPL_WRAPPER(NotifyHeaderTip); # 43 : : ADD_SIGNALS_IMPL_WRAPPER(BannedListChanged); # 44 : : # 45 : 76 : 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);} # 46 : 2 : 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);} # 47 : 4981 : void CClientUIInterface::InitMessage(const std::string& message) { return g_ui_signals.InitMessage(message); } # 48 : 1274 : void CClientUIInterface::NotifyNumConnectionsChanged(int newNumConnections) { return g_ui_signals.NotifyNumConnectionsChanged(newNumConnections); } # 49 : 10 : void CClientUIInterface::NotifyNetworkActiveChanged(bool networkActive) { return g_ui_signals.NotifyNetworkActiveChanged(networkActive); } # 50 : 2 : void CClientUIInterface::NotifyAlertChanged() { return g_ui_signals.NotifyAlertChanged(); } # 51 : 6817 : void CClientUIInterface::ShowProgress(const std::string& title, int nProgress, bool resume_possible) { return g_ui_signals.ShowProgress(title, nProgress, resume_possible); } # 52 : 64085 : void CClientUIInterface::NotifyBlockTip(SynchronizationState s, const CBlockIndex* i) { return g_ui_signals.NotifyBlockTip(s, i); } # 53 : 57054 : void CClientUIInterface::NotifyHeaderTip(SynchronizationState s, const CBlockIndex* i) { return g_ui_signals.NotifyHeaderTip(s, i); } # 54 : 15 : void CClientUIInterface::BannedListChanged() { return g_ui_signals.BannedListChanged(); } # 55 : : # 56 : : bool InitError(const bilingual_str& str) # 57 : 70 : { # 58 : 70 : uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_ERROR); # 59 : 70 : return false; # 60 : 70 : } # 61 : : # 62 : : void InitWarning(const bilingual_str& str) # 63 : 4 : { # 64 : 4 : uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_WARNING); # 65 : 4 : }