git / moonbite-core / src/qt/bitcoin.h · raw

// Copyright (c) 2011-2020 The Bitcoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#ifndef BITCOIN_QT_BITCOIN_H#define BITCOIN_QT_BITCOIN_H#if defined(HAVE_CONFIG_H)#include <config/bitcoin-config.h>#endif#include <QApplication>#include <assert.h>#include <memory>#include <interfaces/node.h>class BitcoinGUI;class ClientModel;class NetworkStyle;class OptionsModel;class PaymentServer;class PlatformStyle;class SplashScreen;class WalletController;class WalletModel;/** Class encapsulating Bitcoin Core startup and shutdown. * Allows running startup and shutdown in a different thread from the UI thread. */class BitcoinCore: public QObject{    Q_OBJECTpublic:    explicit BitcoinCore(interfaces::Node& node);public Q_SLOTS:    void initialize();    void shutdown();Q_SIGNALS:    void initializeResult(bool success, interfaces::BlockAndHeaderTipInfo tip_info);    void shutdownResult();    void runawayException(const QString &message);private:    /// Pass fatal exception message to UI thread    void handleRunawayException(const std::exception *e);    interfaces::Node& m_node;};/** Main Bitcoin application object */class BitcoinApplication: public QApplication{    Q_OBJECTpublic:    explicit BitcoinApplication();    ~BitcoinApplication();#ifdef ENABLE_WALLET    /// Create payment server    void createPaymentServer();#endif    /// parameter interaction/setup based on rules    void parameterSetup();    /// Create options model    void createOptionsModel(bool resetSettings);    /// Initialize prune setting    void InitializePruneSetting(bool prune);    /// Create main window    void createWindow(const NetworkStyle *networkStyle);    /// Create splash screen    void createSplashScreen(const NetworkStyle *networkStyle);    /// Basic initialization, before starting initialization/shutdown thread. Return true on success.    bool baseInitialize();    /// Request core initialization    void requestInitialize();    /// Request core shutdown    void requestShutdown();    /// Get process return value    int getReturnValue() const { return returnValue; }    /// Get window identifier of QMainWindow (BitcoinGUI)    WId getMainWinId() const;    /// Setup platform style    void setupPlatformStyle();    interfaces::Node& node() const { assert(m_node); return *m_node; }    void setNode(interfaces::Node& node);public Q_SLOTS:    void initializeResult(bool success, interfaces::BlockAndHeaderTipInfo tip_info);    void shutdownResult();    /// Handle runaway exceptions. Shows a message box with the problem and quits the program.    void handleRunawayException(const QString &message);Q_SIGNALS:    void requestedInitialize();    void requestedShutdown();    void splashFinished();    void windowShown(BitcoinGUI* window);private:    QThread *coreThread;    OptionsModel *optionsModel;    ClientModel *clientModel;    BitcoinGUI *window;    QTimer *pollShutdownTimer;#ifdef ENABLE_WALLET    PaymentServer* paymentServer{nullptr};    WalletController* m_wallet_controller{nullptr};#endif    int returnValue;    const PlatformStyle *platformStyle;    std::unique_ptr<QWidget> shutdownWindow;    SplashScreen* m_splash = nullptr;    interfaces::Node* m_node = nullptr;    void startThread();};int GuiMain(int argc, char* argv[]);#endif // BITCOIN_QT_BITCOIN_H