LCOV - code coverage report
Current view: top level - src/qt - rpcconsole.h (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 2 5 40.0 %
Date: 2020-09-26 01:30:44 Functions: 1 4 25.0 %

          Line data    Source code
       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             : 
      35             : /** Local Bitcoin RPC console. */
      36             : class RPCConsole: public QWidget
      37             : {
      38           0 :     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          31 :     static bool RPCExecuteCommandLine(interfaces::Node& node, std::string &strResult, const std::string &strCommand, std::string * const pstrFilteredOut = nullptr, const WalletModel* wallet_model = nullptr) {
      46          31 :         return RPCParseCommandLine(&node, strResult, strCommand, true, pstrFilteredOut, wallet_model);
      47             :     }
      48             : 
      49             :     void setClientModel(ClientModel *model = nullptr, int bestblock_height = 0, int64_t bestblock_date = 0, double verification_progress = 0.0);
      50             :     void addWallet(WalletModel * const walletModel);
      51             :     void removeWallet(WalletModel* const walletModel);
      52             : 
      53             :     enum MessageClass {
      54             :         MC_ERROR,
      55             :         MC_DEBUG,
      56             :         CMD_REQUEST,
      57             :         CMD_REPLY,
      58             :         CMD_ERROR
      59             :     };
      60             : 
      61             :     enum class TabTypes {
      62             :         INFO,
      63             :         CONSOLE,
      64             :         GRAPH,
      65             :         PEERS
      66             :     };
      67             : 
      68           0 :     std::vector<TabTypes> tabs() const { return {TabTypes::INFO, TabTypes::CONSOLE, TabTypes::GRAPH, TabTypes::PEERS}; }
      69             : 
      70             :     QString tabTitle(TabTypes tab_type) const;
      71             :     QKeySequence tabShortcut(TabTypes tab_type) const;
      72             : 
      73             : protected:
      74             :     virtual bool eventFilter(QObject* obj, QEvent *event) override;
      75             :     void keyPressEvent(QKeyEvent *) override;
      76             : 
      77             : private Q_SLOTS:
      78             :     void on_lineEdit_returnPressed();
      79             :     void on_tabWidget_currentChanged(int index);
      80             :     /** open the debug.log from the current datadir */
      81             :     void on_openDebugLogfileButton_clicked();
      82             :     /** change the time range of the network traffic graph */
      83             :     void on_sldGraphRange_valueChanged(int value);
      84             :     /** update traffic statistics */
      85             :     void updateTrafficStats(quint64 totalBytesIn, quint64 totalBytesOut);
      86             :     void resizeEvent(QResizeEvent *event) override;
      87             :     void showEvent(QShowEvent *event) override;
      88             :     void hideEvent(QHideEvent *event) override;
      89             :     /** Show custom context menu on Peers tab */
      90             :     void showPeersTableContextMenu(const QPoint& point);
      91             :     /** Show custom context menu on Bans tab */
      92             :     void showBanTableContextMenu(const QPoint& point);
      93             :     /** Hides ban table if no bans are present */
      94             :     void showOrHideBanTableIfRequired();
      95             :     /** clear the selected node */
      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);
     103             :     /** Append the message to the message widget */
     104           0 :     void message(int category, const QString &msg) { message(category, msg, false); }
     105             :     void message(int category, const QString &message, bool html);
     106             :     /** Set number of connections shown in the UI */
     107             :     void setNumConnections(int count);
     108             :     /** Set network state shown in the UI */
     109             :     void setNetworkActive(bool networkActive);
     110             :     /** Set number of blocks and last block date shown in the UI */
     111             :     void setNumBlocks(int count, const QDateTime& blockDate, double nVerificationProgress, bool headers);
     112             :     /** Set size (number of transactions and memory usage) of the mempool in the UI */
     113             :     void setMempoolSize(long numberOfTxs, size_t dynUsage);
     114             :     /** Go forward or back in history */
     115             :     void browseHistory(int offset);
     116             :     /** Scroll console view to end */
     117             :     void scrollToEnd();
     118             :     /** Handle selection of peer in peers list */
     119             :     void peerSelected(const QItemSelection &selected, const QItemSelection &deselected);
     120             :     /** Handle selection caching before update */
     121             :     void peerLayoutAboutToChange();
     122             :     /** Handle updated peer information */
     123             :     void peerLayoutChanged();
     124             :     /** Disconnect a selected node on the Peers tab */
     125             :     void disconnectSelectedNode();
     126             :     /** Ban a selected node on the Peers tab */
     127             :     void banSelectedNode(int bantime);
     128             :     /** Unban a selected node on the Bans tab */
     129             :     void unbanSelectedNode();
     130             :     /** set which tab has the focus (is visible) */
     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);
     140             :     /** show detailed information on ui about selected node */
     141             :     void updateNodeDetail(const CNodeCombinedStats *stats);
     142             : 
     143             :     enum ColumnWidths
     144             :     {
     145             :         ADDRESS_COLUMN_WIDTH = 200,
     146             :         SUBVERSION_COLUMN_WIDTH = 150,
     147             :         PING_COLUMN_WIDTH = 80,
     148             :         BANSUBNET_COLUMN_WIDTH = 200,
     149             :         BANTIME_COLUMN_WIDTH = 250
     150             : 
     151             :     };
     152             : 
     153             :     interfaces::Node& m_node;
     154             :     Ui::RPCConsole* const ui;
     155             :     ClientModel *clientModel = nullptr;
     156             :     QStringList history;
     157             :     int historyPtr = 0;
     158             :     QString cmdBeforeBrowsing;
     159             :     QList<NodeId> cachedNodeids;
     160             :     const PlatformStyle* const platformStyle;
     161             :     RPCTimerInterface *rpcTimerInterface = nullptr;
     162             :     QMenu *peersTableContextMenu = nullptr;
     163             :     QMenu *banTableContextMenu = nullptr;
     164             :     int consoleFontSize = 0;
     165             :     QCompleter *autoCompleter = nullptr;
     166             :     QThread thread;
     167             :     WalletModel* m_last_wallet_model{nullptr};
     168             : 
     169             :     /** Update UI with latest network info from model. */
     170             :     void updateNetworkState();
     171             : 
     172             : private Q_SLOTS:
     173             :     void updateAlerts(const QString& warnings);
     174             : };
     175             : 
     176             : #endif // BITCOIN_QT_RPCCONSOLE_H

Generated by: LCOV version 1.15