git / moonbite-core / src/noui.cpp · raw
// Copyright (c) 2010 Satoshi Nakamoto// Copyright (c) 2009-2019 The Bitcoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#include <noui.h>#include <logging.h>#include <node/ui_interface.h>#include <util/translation.h>#include <string>#include <boost/signals2/connection.hpp>#include <boost/signals2/signal.hpp>/** Store connections so we can disconnect them when suppressing output */boost::signals2::connection noui_ThreadSafeMessageBoxConn;boost::signals2::connection noui_ThreadSafeQuestionConn;boost::signals2::connection noui_InitMessageConn;bool noui_ThreadSafeMessageBox(const bilingual_str& message, const std::string& caption, unsigned int style){ bool fSecure = style & CClientUIInterface::SECURE; style &= ~CClientUIInterface::SECURE; std::string strCaption; switch (style) { case CClientUIInterface::MSG_ERROR: strCaption = "Error: "; break; case CClientUIInterface::MSG_WARNING: strCaption = "Warning: "; break; case CClientUIInterface::MSG_INFORMATION: strCaption = "Information: "; break; default: strCaption = caption + ": "; // Use supplied caption (can be empty) } if (!fSecure) { LogPrintf("%s%s\n", strCaption, message.original); } tfm::format(std::cerr, "%s%s\n", strCaption, message.original); return false;}bool noui_ThreadSafeQuestion(const bilingual_str& /* ignored interactive message */, const std::string& message, const std::string& caption, unsigned int style){ return noui_ThreadSafeMessageBox(Untranslated(message), caption, style);}void noui_InitMessage(const std::string& message){ LogPrintf("init message: %s\n", message);}void noui_connect(){ noui_ThreadSafeMessageBoxConn = uiInterface.ThreadSafeMessageBox_connect(noui_ThreadSafeMessageBox); noui_ThreadSafeQuestionConn = uiInterface.ThreadSafeQuestion_connect(noui_ThreadSafeQuestion); noui_InitMessageConn = uiInterface.InitMessage_connect(noui_InitMessage);}bool noui_ThreadSafeMessageBoxRedirect(const bilingual_str& message, const std::string& caption, unsigned int style){ LogPrintf("%s: %s\n", caption, message.original); return false;}bool noui_ThreadSafeQuestionRedirect(const bilingual_str& /* ignored interactive message */, const std::string& message, const std::string& caption, unsigned int style){ LogPrintf("%s: %s\n", caption, message); return false;}void noui_InitMessageRedirect(const std::string& message){ LogPrintf("init message: %s\n", message);}void noui_test_redirect(){ noui_ThreadSafeMessageBoxConn.disconnect(); noui_ThreadSafeQuestionConn.disconnect(); noui_InitMessageConn.disconnect(); noui_ThreadSafeMessageBoxConn = uiInterface.ThreadSafeMessageBox_connect(noui_ThreadSafeMessageBoxRedirect); noui_ThreadSafeQuestionConn = uiInterface.ThreadSafeQuestion_connect(noui_ThreadSafeQuestionRedirect); noui_InitMessageConn = uiInterface.InitMessage_connect(noui_InitMessageRedirect);}void noui_reconnect(){ noui_ThreadSafeMessageBoxConn.disconnect(); noui_ThreadSafeQuestionConn.disconnect(); noui_InitMessageConn.disconnect(); noui_connect();}