mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-10 17:17:14 +01:00
This is just the first of multiple settings that will be stored in the bitcoin persistent setting file and shared with bitcoind, instead of being stored as Qt settings backed by the windows registry or platform specific config files which are ignored by bitcoind. Co-Authored-By: furszy <matiasfurszyfer@protonmail.com>
119 lines
3.2 KiB
C++
119 lines
3.2 KiB
C++
// Copyright (c) 2011-2021 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 <interfaces/node.h>
|
|
#include <qt/initexecutor.h>
|
|
|
|
#include <assert.h>
|
|
#include <memory>
|
|
#include <optional>
|
|
|
|
#include <QApplication>
|
|
|
|
class BitcoinGUI;
|
|
class ClientModel;
|
|
class NetworkStyle;
|
|
class OptionsModel;
|
|
class PaymentServer;
|
|
class PlatformStyle;
|
|
class SplashScreen;
|
|
class WalletController;
|
|
class WalletModel;
|
|
namespace interfaces {
|
|
class Init;
|
|
} // namespace interfaces
|
|
|
|
|
|
/** Main Bitcoin application object */
|
|
class BitcoinApplication: public QApplication
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit BitcoinApplication();
|
|
~BitcoinApplication();
|
|
|
|
#ifdef ENABLE_WALLET
|
|
/// Create payment server
|
|
void createPaymentServer();
|
|
#endif
|
|
/// parameter interaction/setup based on rules
|
|
void parameterSetup();
|
|
/// Create options model
|
|
[[nodiscard]] bool createOptionsModel(bool resetSettings);
|
|
/// Initialize prune setting
|
|
void InitPruneSetting(int64_t prune_MiB);
|
|
/// Create main window
|
|
void createWindow(const NetworkStyle *networkStyle);
|
|
/// Create splash screen
|
|
void createSplashScreen(const NetworkStyle *networkStyle);
|
|
/// Create or spawn node
|
|
void createNode(interfaces::Init& init);
|
|
/// Basic initialization, before starting initialization/shutdown thread. Return true on success.
|
|
bool baseInitialize();
|
|
|
|
/// Request core initialization
|
|
void requestInitialize();
|
|
|
|
/// 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; }
|
|
|
|
public Q_SLOTS:
|
|
void initializeResult(bool success, interfaces::BlockAndHeaderTipInfo tip_info);
|
|
/// Request core shutdown
|
|
void requestShutdown();
|
|
/// Handle runaway exceptions. Shows a message box with the problem and quits the program.
|
|
void handleRunawayException(const QString &message);
|
|
|
|
/**
|
|
* A helper function that shows a message box
|
|
* with details about a non-fatal exception.
|
|
*/
|
|
void handleNonFatalException(const QString& message);
|
|
|
|
Q_SIGNALS:
|
|
void requestedInitialize();
|
|
void requestedShutdown();
|
|
void splashFinished();
|
|
void windowShown(BitcoinGUI* window);
|
|
|
|
protected:
|
|
bool event(QEvent* e) override;
|
|
|
|
private:
|
|
std::optional<InitExecutor> m_executor;
|
|
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;
|
|
std::unique_ptr<interfaces::Node> m_node;
|
|
|
|
void startThread();
|
|
};
|
|
|
|
int GuiMain(int argc, char* argv[]);
|
|
|
|
#endif // BITCOIN_QT_BITCOIN_H
|