Bitcoin
rpcconsole.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2019 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 #ifndef BITCOIN_QT_RPCCONSOLE_H
6 #define BITCOIN_QT_RPCCONSOLE_H
7 
8 #include <qt/guiutil.h>
9 #include <qt/peertablemodel.h>
10 
11 #include <net.h>
12 
13 #include <QWidget>
14 #include <QCompleter>
15 #include <QThread>
16 
17 class ClientModel;
18 class PlatformStyle;
19 class RPCTimerInterface;
20 class WalletModel;
21 
22 namespace interfaces {
23  class Node;
24 }
25 
26 namespace Ui {
27  class RPCConsole;
28 }
29 
30 QT_BEGIN_NAMESPACE
31 class QMenu;
32 class QItemSelection;
33 QT_END_NAMESPACE
34 
36 class RPCConsole: public QWidget
37 {
38  Q_OBJECT
39 
40 public:
41  explicit RPCConsole(interfaces::Node& node, const PlatformStyle *platformStyle, QWidget *parent);
42  ~RPCConsole();
43 
44  static bool RPCParseCommandLine(interfaces::Node* node, std::string &strResult, const std::string &strCommand, bool fExecute, std::string * const pstrFilteredOut = nullptr, const WalletModel* wallet_model = nullptr);
45  static bool RPCExecuteCommandLine(interfaces::Node& node, std::string &strResult, const std::string &strCommand, std::string * const pstrFilteredOut = nullptr, const WalletModel* wallet_model = nullptr) {
46  return RPCParseCommandLine(&node, strResult, strCommand, true, pstrFilteredOut, wallet_model);
47  }
48 
49  void setClientModel(ClientModel *model);
50  void addWallet(WalletModel * const walletModel);
51  void removeWallet(WalletModel* const walletModel);
52 
53  enum MessageClass {
59  };
60 
61  enum TabTypes {
62  TAB_INFO = 0,
64  TAB_GRAPH = 2,
66  };
67 
68  std::vector<TabTypes> tabs() const { return {TAB_INFO, TAB_CONSOLE, TAB_GRAPH, TAB_PEERS}; }
69 
70  TabTypes tabFocus() const;
71  QString tabTitle(TabTypes tab_type) const;
72 
73 protected:
74  virtual bool eventFilter(QObject* obj, QEvent *event);
75  void keyPressEvent(QKeyEvent *);
76 
77 private Q_SLOTS:
79  void on_tabWidget_currentChanged(int index);
83  void on_sldGraphRange_valueChanged(int value);
85  void updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut);
86  void resizeEvent(QResizeEvent *event);
87  void showEvent(QShowEvent *event);
88  void hideEvent(QHideEvent *event);
90  void showPeersTableContextMenu(const QPoint& point);
92  void showBanTableContextMenu(const QPoint& point);
96  void clearSelectedNode();
97 
98 public Q_SLOTS:
99  void clear(bool clearHistory = true);
100  void fontBigger();
101  void fontSmaller();
102  void setFontSize(int newSize);
104  void message(int category, const QString &msg) { message(category, msg, false); }
105  void message(int category, const QString &message, bool html);
107  void setNumConnections(int count);
109  void setNetworkActive(bool networkActive);
111  void setNumBlocks(int count, const QDateTime& blockDate, double nVerificationProgress, bool headers);
113  void setMempoolSize(long numberOfTxs, size_t dynUsage);
115  void browseHistory(int offset);
117  void scrollToEnd();
119  void peerSelected(const QItemSelection &selected, const QItemSelection &deselected);
123  void peerLayoutChanged();
125  void disconnectSelectedNode();
127  void banSelectedNode(int bantime);
129  void unbanSelectedNode();
131  void setTabFocus(enum TabTypes tabType);
132 
133 Q_SIGNALS:
134  // For RPC command executor
135  void cmdRequest(const QString &command, const WalletModel* wallet_model);
136 
137 private:
138  void startExecutor();
139  void setTrafficGraphRange(int mins);
141  void updateNodeDetail(const CNodeCombinedStats *stats);
142 
144  {
150 
151  };
152 
156  QStringList history;
157  int historyPtr = 0;
159  QList<NodeId> cachedNodeids;
162  QMenu *peersTableContextMenu = nullptr;
163  QMenu *banTableContextMenu = nullptr;
165  QCompleter *autoCompleter = nullptr;
166  QThread thread;
168 
170  void updateNetworkState();
171 };
172 
173 #endif // BITCOIN_QT_RPCCONSOLE_H
Definition: rpcconsole.h:146
TabTypes
Definition: rpcconsole.h:61
Definition: rpcconsole.h:148
Definition: rpcconsole.h:56
void on_sldGraphRange_valueChanged(int value)
Definition: rpcconsole.cpp:1002
Definition: rpcconsole.h:57
QThread thread
Definition: rpcconsole.h:166
void cmdRequest(const QString &command, const WalletModel *wallet_model)
Definition: moc_rpcconsole.cpp:325
void peerSelected(const QItemSelection &selected, const QItemSelection &deselected)
Definition: rpcconsole.cpp:1021
~RPCConsole()
Definition: rpcconsole.cpp:504
void setFontSize(int newSize)
Definition: rpcconsole.cpp:741
void peerLayoutChanged()
Definition: rpcconsole.cpp:1044
void updateNodeDetail(const CNodeCombinedStats *stats)
Definition: rpcconsole.cpp:1101
Definition: walletmodel.h:125
virtual bool eventFilter(QObject *obj, QEvent *event)
Definition: rpcconsole.cpp:513
int historyPtr
Definition: rpcconsole.h:157
Definition: rpcconsole.h:149
Definition: rpcconsole.h:64
void startExecutor()
Definition: rpcconsole.cpp:965
void banSelectedNode(int bantime)
Definition: rpcconsole.cpp:1202
Definition: rpcconsole.h:62
void setTabFocus(enum TabTypes tabType)
Definition: rpcconsole.cpp:1273
Definition: rpcconsole.h:55
void setMempoolSize(long numberOfTxs, size_t dynUsage)
Definition: rpcconsole.cpp:875
void updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut)
Definition: rpcconsole.cpp:1015
const PlatformStyle *const platformStyle
Definition: rpcconsole.h:160
Definition: addressbookpage.h:14
void setTrafficGraphRange(int mins)
Definition: rpcconsole.cpp:1009
RPCConsole(interfaces::Node &node, const PlatformStyle *platformStyle, QWidget *parent)
Definition: rpcconsole.cpp:444
void showPeersTableContextMenu(const QPoint &point)
Definition: rpcconsole.cpp:1174
void on_lineEdit_returnPressed()
Definition: rpcconsole.cpp:885
void addWallet(WalletModel *const walletModel)
void showEvent(QShowEvent *event)
Definition: rpcconsole.cpp:1152
void setNumBlocks(int count, const QDateTime &blockDate, double nVerificationProgress, bool headers)
Definition: rpcconsole.cpp:867
ColumnWidths
Definition: rpcconsole.h:143
Definition: rpcconsole.h:54
QString tabTitle(TabTypes tab_type) const
Definition: rpcconsole.cpp:1278
std::vector< TabTypes > tabs() const
Definition: rpcconsole.h:68
void scrollToEnd()
Definition: rpcconsole.cpp:996
Definition: rpcconsole.h:147
void disconnectSelectedNode()
Definition: rpcconsole.cpp:1188
void setClientModel(ClientModel *model)
Definition: rpcconsole.cpp:558
Definition: rpcconsole.h:36
QCompleter * autoCompleter
Definition: rpcconsole.h:165
QMenu * banTableContextMenu
Definition: rpcconsole.h:163
void showOrHideBanTableIfRequired()
Definition: rpcconsole.cpp:1258
Definition: rpcconsole.h:63
void browseHistory(int offset)
Definition: rpcconsole.cpp:944
void updateNetworkState()
Definition: rpcconsole.cpp:841
MessageClass
Definition: rpcconsole.h:53
Definition: rpcconsole.h:65
void clearSelectedNode()
Definition: rpcconsole.cpp:1250
void resizeEvent(QResizeEvent *event)
Definition: rpcconsole.cpp:1147
void hideEvent(QHideEvent *event)
Definition: rpcconsole.cpp:1163
RPCTimerInterface * rpcTimerInterface
Definition: rpcconsole.h:161
Definition: dummywallet.cpp:11
void on_tabWidget_currentChanged(int index)
Definition: rpcconsole.cpp:984
void peerLayoutAboutToChange()
Definition: rpcconsole.cpp:1033
void setNetworkActive(bool networkActive)
Definition: rpcconsole.cpp:862
QMenu * peersTableContextMenu
Definition: rpcconsole.h:162
QString cmdBeforeBrowsing
Definition: rpcconsole.h:158
void showBanTableContextMenu(const QPoint &point)
Definition: rpcconsole.cpp:1181
Top-level interface for a bitcoin node (bitcoind process).
Definition: node.h:36
void clear(bool clearHistory=true)
Definition: rpcconsole.cpp:766
Definition: rpcconsole.h:145
void message(int category, const QString &msg)
Definition: rpcconsole.h:104
void keyPressEvent(QKeyEvent *)
Definition: rpcconsole.cpp:817
Definition: rpcconsole.h:58
static bool RPCParseCommandLine(interfaces::Node *node, std::string &strResult, const std::string &strCommand, bool fExecute, std::string *const pstrFilteredOut=nullptr, const WalletModel *wallet_model=nullptr)
Definition: rpcconsole.cpp:149
WalletModel * m_last_wallet_model
Definition: rpcconsole.h:167
Definition: clientmodel.h:44
void fontSmaller()
Definition: rpcconsole.cpp:736
Definition: server.h:58
Ui::RPCConsole *const ui
Definition: rpcconsole.h:154
Definition: ui_debugwindow.h:1089
void fontBigger()
Definition: rpcconsole.cpp:731
static int count
Definition: tests.c:45
void setNumConnections(int count)
Definition: rpcconsole.cpp:854
void removeWallet(WalletModel *const walletModel)
Definition: platformstyle.h:13
void on_openDebugLogfileButton_clicked()
Definition: rpcconsole.cpp:991
interfaces::Node & m_node
Definition: rpcconsole.h:153
int consoleFontSize
Definition: rpcconsole.h:164
TabTypes tabFocus() const
Definition: rpcconsole.cpp:1268
Definition: peertablemodel.h:27
QStringList history
Definition: rpcconsole.h:156
static bool RPCExecuteCommandLine(interfaces::Node &node, std::string &strResult, const std::string &strCommand, std::string *const pstrFilteredOut=nullptr, const WalletModel *wallet_model=nullptr)
Definition: rpcconsole.h:45
QList< NodeId > cachedNodeids
Definition: rpcconsole.h:159
void unbanSelectedNode()
Definition: rpcconsole.cpp:1229
ClientModel * clientModel
Definition: rpcconsole.h:155