Bitcoin Core
32.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
noui.cpp
Go to the documentation of this file.
1
// Copyright (c) 2010 Satoshi Nakamoto
2
// Copyright (c) 2009-present The Bitcoin Core developers
3
// Distributed under the MIT software license, see the accompanying
4
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6
#include <
noui.h
>
7
8
#include <
node/interface_ui.h
>
9
#include <
util/btcsignals.h
>
10
#include <
util/log.h
>
11
#include <
util/translation.h
>
12
13
#include <string>
14
16
btcsignals::connection
noui_ThreadSafeMessageBoxConn
;
17
btcsignals::connection
noui_ThreadSafeQuestionConn
;
18
btcsignals::connection
noui_InitMessageConn
;
19
20
void
noui_ThreadSafeMessageBox
(
const
bilingual_str
& message,
unsigned
int
style)
21
{
22
bool
fSecure = style &
CClientUIInterface::SECURE
;
23
style &=
~CClientUIInterface
::SECURE;
24
25
std::string strCaption;
26
switch
(style) {
27
case
CClientUIInterface::MSG_ERROR
:
28
strCaption =
"Error: "
;
29
if
(!fSecure)
LogError
(
"%s\n"
, message.
original
);
30
break
;
31
case
CClientUIInterface::MSG_WARNING
:
32
strCaption =
"Warning: "
;
33
if
(!fSecure)
LogWarning
(
"%s\n"
, message.
original
);
34
break
;
35
case
CClientUIInterface::MSG_INFORMATION
:
36
strCaption =
"Information: "
;
37
if
(!fSecure)
LogInfo
(
"%s\n"
, message.
original
);
38
break
;
39
default
:
40
if
(!fSecure)
LogInfo
(
"%s%s\n"
, strCaption, message.
original
);
41
}
42
43
tfm::format
(std::cerr,
"%s%s\n"
, strCaption, message.
original
);
44
}
45
46
bool
noui_ThreadSafeQuestion
(
const
bilingual_str
&
/* ignored interactive message */
,
const
std::string& message,
unsigned
int
style)
47
{
48
noui_ThreadSafeMessageBox
(
Untranslated
(message), style);
49
return
false
;
// Answer the question with false in the noui context
50
}
51
52
void
noui_InitMessage
(
const
std::string& message)
53
{
54
LogInfo
(
"init message: %s"
, message);
55
}
56
57
void
noui_connect
()
58
{
59
noui_ThreadSafeMessageBoxConn
=
uiInterface
.
ThreadSafeMessageBox
.
connect
(
noui_ThreadSafeMessageBox
);
60
noui_ThreadSafeQuestionConn
=
uiInterface
.
ThreadSafeQuestion
.
connect
(
noui_ThreadSafeQuestion
);
61
noui_InitMessageConn
=
uiInterface
.
InitMessage
.
connect
(
noui_InitMessage
);
62
}
63
64
void
noui_ThreadSafeMessageBoxRedirect
(
const
bilingual_str
& message,
unsigned
int
style)
65
{
66
LogInfo
(
"%s"
, message.
original
);
67
}
68
69
bool
noui_ThreadSafeQuestionRedirect
(
const
bilingual_str
&
/* ignored interactive message */
,
const
std::string& message,
unsigned
int
style)
70
{
71
LogInfo
(
"%s"
, message);
72
return
false
;
73
}
74
75
void
noui_InitMessageRedirect
(
const
std::string& message)
76
{
77
LogInfo
(
"init message: %s"
, message);
78
}
79
80
void
noui_test_redirect
()
81
{
82
noui_ThreadSafeMessageBoxConn
.
disconnect
();
83
noui_ThreadSafeQuestionConn
.
disconnect
();
84
noui_InitMessageConn
.
disconnect
();
85
noui_ThreadSafeMessageBoxConn
=
uiInterface
.
ThreadSafeMessageBox
.
connect
(
noui_ThreadSafeMessageBoxRedirect
);
86
noui_ThreadSafeQuestionConn
=
uiInterface
.
ThreadSafeQuestion
.
connect
(
noui_ThreadSafeQuestionRedirect
);
87
noui_InitMessageConn
=
uiInterface
.
InitMessage
.
connect
(
noui_InitMessageRedirect
);
88
}
89
90
void
noui_reconnect
()
91
{
92
noui_ThreadSafeMessageBoxConn
.
disconnect
();
93
noui_ThreadSafeQuestionConn
.
disconnect
();
94
noui_InitMessageConn
.
disconnect
();
95
noui_connect
();
96
}
noui_connect
noui_connect()
Definition
noui.cpp:57
btcsignals.h
CClientUIInterface
Signals for UI communication.
Definition
interface_ui.h:22
CClientUIInterface::InitMessage
btcsignals::signal< void(const std::string &message)> InitMessage
Progress message during initialization.
Definition
interface_ui.h:74
CClientUIInterface::ThreadSafeQuestion
btcsignals::signal< bool(const bilingual_str &message, const std::string &noninteractive_message, unsigned int style), btcsignals::any_of > ThreadSafeQuestion
If possible, ask the user a question.
Definition
interface_ui.h:71
CClientUIInterface::ThreadSafeMessageBox
btcsignals::signal< void(const bilingual_str &message, unsigned int style)> ThreadSafeMessageBox
Show message box.
Definition
interface_ui.h:68
CClientUIInterface::MSG_ERROR
@ MSG_ERROR
Definition
interface_ui.h:64
CClientUIInterface::MSG_WARNING
@ MSG_WARNING
Definition
interface_ui.h:63
CClientUIInterface::MSG_INFORMATION
@ MSG_INFORMATION
Predefined combinations for certain default usage cases.
Definition
interface_ui.h:62
CClientUIInterface::SECURE
@ SECURE
Do not print contents of message to debug log.
Definition
interface_ui.h:59
btcsignals::connection
Definition
btcsignals.h:58
btcsignals::connection::disconnect
void disconnect()
If a callback is associated with this connection, prevent it from being called in the future.
Definition
btcsignals.h:100
btcsignals::signal::connect
connection connect(Callable &&func) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
Definition
btcsignals.h:236
uiInterface
CClientUIInterface uiInterface
Definition
interface_ui.cpp:13
interface_ui.h
log.h
LogWarning
#define LogWarning(...)
Definition
log.h:126
LogInfo
#define LogInfo(...)
Definition
log.h:125
LogError
#define LogError(...)
Definition
log.h:127
tinyformat::format
void format(std::ostream &out, FormatStringCheck< sizeof...(Args)> fmt, const Args &... args)
Format list of arguments to the stream according to given format string.
Definition
tinyformat.h:1079
noui_InitMessageConn
btcsignals::connection noui_InitMessageConn
Definition
noui.cpp:18
noui_ThreadSafeQuestion
bool noui_ThreadSafeQuestion(const bilingual_str &, const std::string &message, unsigned int style)
Non-GUI handler, which logs and prints questions.
Definition
noui.cpp:46
noui_ThreadSafeMessageBoxConn
btcsignals::connection noui_ThreadSafeMessageBoxConn
Store connections so we can disconnect them when suppressing output.
Definition
noui.cpp:16
noui_ThreadSafeQuestionConn
btcsignals::connection noui_ThreadSafeQuestionConn
Definition
noui.cpp:17
noui_InitMessageRedirect
void noui_InitMessageRedirect(const std::string &message)
Definition
noui.cpp:75
noui_ThreadSafeMessageBox
void noui_ThreadSafeMessageBox(const bilingual_str &message, unsigned int style)
Non-GUI handler, which logs and prints messages.
Definition
noui.cpp:20
noui_ThreadSafeQuestionRedirect
bool noui_ThreadSafeQuestionRedirect(const bilingual_str &, const std::string &message, unsigned int style)
Definition
noui.cpp:69
noui_test_redirect
void noui_test_redirect()
Redirect all bitcoind signal handlers to LogInfo.
Definition
noui.cpp:80
noui_InitMessage
void noui_InitMessage(const std::string &message)
Non-GUI handler, which only logs a message.
Definition
noui.cpp:52
noui_reconnect
void noui_reconnect()
Reconnects the regular Non-GUI handlers after having used noui_test_redirect.
Definition
noui.cpp:90
noui_ThreadSafeMessageBoxRedirect
void noui_ThreadSafeMessageBoxRedirect(const bilingual_str &message, unsigned int style)
Definition
noui.cpp:64
noui.h
bilingual_str
Bilingual messages:
Definition
translation.h:24
bilingual_str::original
std::string original
Definition
translation.h:25
translation.h
Untranslated
bilingual_str Untranslated(std::string original)
Mark a bilingual_str as untranslated.
Definition
translation.h:82
Generated on
for Bitcoin Core by
1.18.0