mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 20:12:57 +01:00
Merge pull request #4802
6fd546d
Remove CChainParams::NetworkID() (jtimon)cc97210
Add fTestnetToBeDeprecatedFieldRPC to CChainParams (jtimon)e11712d
Move checkpoint data selection to chainparams (jtimon)6de50c3
qt: add network-specific style object (Wladimir J. van der Laan)
This commit is contained in:
commit
023690c0f2
@ -178,6 +178,7 @@ BITCOIN_QT_H = \
|
|||||||
qt/macdockiconhandler.h \
|
qt/macdockiconhandler.h \
|
||||||
qt/macnotificationhandler.h \
|
qt/macnotificationhandler.h \
|
||||||
qt/monitoreddatamapper.h \
|
qt/monitoreddatamapper.h \
|
||||||
|
qt/networkstyle.h \
|
||||||
qt/notificator.h \
|
qt/notificator.h \
|
||||||
qt/openuridialog.h \
|
qt/openuridialog.h \
|
||||||
qt/optionsdialog.h \
|
qt/optionsdialog.h \
|
||||||
@ -269,6 +270,7 @@ BITCOIN_QT_CPP = \
|
|||||||
qt/guiutil.cpp \
|
qt/guiutil.cpp \
|
||||||
qt/intro.cpp \
|
qt/intro.cpp \
|
||||||
qt/monitoreddatamapper.cpp \
|
qt/monitoreddatamapper.cpp \
|
||||||
|
qt/networkstyle.cpp \
|
||||||
qt/notificator.cpp \
|
qt/notificator.cpp \
|
||||||
qt/optionsdialog.cpp \
|
qt/optionsdialog.cpp \
|
||||||
qt/optionsmodel.cpp \
|
qt/optionsmodel.cpp \
|
||||||
|
@ -44,6 +44,57 @@ static void convertSeed6(std::vector<CAddress> &vSeedsOut, const SeedSpec6 *data
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// What makes a good checkpoint block?
|
||||||
|
// + Is surrounded by blocks with reasonable timestamps
|
||||||
|
// (no blocks before with a timestamp after, none after with
|
||||||
|
// timestamp before)
|
||||||
|
// + Contains no strange transactions
|
||||||
|
static Checkpoints::MapCheckpoints mapCheckpoints =
|
||||||
|
boost::assign::map_list_of
|
||||||
|
( 11111, uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"))
|
||||||
|
( 33333, uint256("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6"))
|
||||||
|
( 74000, uint256("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20"))
|
||||||
|
(105000, uint256("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97"))
|
||||||
|
(134444, uint256("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe"))
|
||||||
|
(168000, uint256("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763"))
|
||||||
|
(193000, uint256("0x000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317"))
|
||||||
|
(210000, uint256("0x000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e"))
|
||||||
|
(216116, uint256("0x00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e"))
|
||||||
|
(225430, uint256("0x00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932"))
|
||||||
|
(250000, uint256("0x000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214"))
|
||||||
|
(279000, uint256("0x0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40"))
|
||||||
|
(295000, uint256("0x00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983"))
|
||||||
|
;
|
||||||
|
static const Checkpoints::CCheckpointData data = {
|
||||||
|
&mapCheckpoints,
|
||||||
|
1397080064, // * UNIX timestamp of last checkpoint block
|
||||||
|
36544669, // * total number of transactions between genesis and last checkpoint
|
||||||
|
// (the tx=... number in the SetBestChain debug.log lines)
|
||||||
|
60000.0 // * estimated number of transactions per day after checkpoint
|
||||||
|
};
|
||||||
|
|
||||||
|
static Checkpoints::MapCheckpoints mapCheckpointsTestnet =
|
||||||
|
boost::assign::map_list_of
|
||||||
|
( 546, uint256("000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70"))
|
||||||
|
;
|
||||||
|
static const Checkpoints::CCheckpointData dataTestnet = {
|
||||||
|
&mapCheckpointsTestnet,
|
||||||
|
1337966069,
|
||||||
|
1488,
|
||||||
|
300
|
||||||
|
};
|
||||||
|
|
||||||
|
static Checkpoints::MapCheckpoints mapCheckpointsRegtest =
|
||||||
|
boost::assign::map_list_of
|
||||||
|
( 0, uint256("0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"))
|
||||||
|
;
|
||||||
|
static const Checkpoints::CCheckpointData dataRegtest = {
|
||||||
|
&mapCheckpointsRegtest,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
class CMainParams : public CChainParams {
|
class CMainParams : public CChainParams {
|
||||||
public:
|
public:
|
||||||
CMainParams() {
|
CMainParams() {
|
||||||
@ -116,6 +167,12 @@ public:
|
|||||||
fRequireStandard = true;
|
fRequireStandard = true;
|
||||||
fMineBlocksOnDemand = false;
|
fMineBlocksOnDemand = false;
|
||||||
fSkipProofOfWorkCheck = false;
|
fSkipProofOfWorkCheck = false;
|
||||||
|
fTestnetToBeDeprecatedFieldRPC = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Checkpoints::CCheckpointData& Checkpoints() const
|
||||||
|
{
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
static CMainParams mainParams;
|
static CMainParams mainParams;
|
||||||
@ -172,6 +229,11 @@ public:
|
|||||||
fAllowMinDifficultyBlocks = true;
|
fAllowMinDifficultyBlocks = true;
|
||||||
fRequireStandard = false;
|
fRequireStandard = false;
|
||||||
fMineBlocksOnDemand = false;
|
fMineBlocksOnDemand = false;
|
||||||
|
fTestnetToBeDeprecatedFieldRPC = true;
|
||||||
|
}
|
||||||
|
const Checkpoints::CCheckpointData& Checkpoints() const
|
||||||
|
{
|
||||||
|
return dataTestnet;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
static CTestNetParams testNetParams;
|
static CTestNetParams testNetParams;
|
||||||
@ -211,6 +273,11 @@ public:
|
|||||||
fAllowMinDifficultyBlocks = true;
|
fAllowMinDifficultyBlocks = true;
|
||||||
fRequireStandard = false;
|
fRequireStandard = false;
|
||||||
fMineBlocksOnDemand = true;
|
fMineBlocksOnDemand = true;
|
||||||
|
fTestnetToBeDeprecatedFieldRPC = false;
|
||||||
|
}
|
||||||
|
const Checkpoints::CCheckpointData& Checkpoints() const
|
||||||
|
{
|
||||||
|
return dataRegtest;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
static CRegTestParams regTestParams;
|
static CRegTestParams regTestParams;
|
||||||
@ -233,7 +300,13 @@ public:
|
|||||||
fAllowMinDifficultyBlocks = false;
|
fAllowMinDifficultyBlocks = false;
|
||||||
fMineBlocksOnDemand = true;
|
fMineBlocksOnDemand = true;
|
||||||
}
|
}
|
||||||
public:
|
|
||||||
|
const Checkpoints::CCheckpointData& Checkpoints() const
|
||||||
|
{
|
||||||
|
// UnitTest share the same checkpoints as MAIN
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
// Published setters to allow changing values in unit test cases
|
// Published setters to allow changing values in unit test cases
|
||||||
virtual void setSubsidyHalvingInterval(int anSubsidyHalvingInterval) { nSubsidyHalvingInterval=anSubsidyHalvingInterval; }
|
virtual void setSubsidyHalvingInterval(int anSubsidyHalvingInterval) { nSubsidyHalvingInterval=anSubsidyHalvingInterval; }
|
||||||
virtual void setEnforceBlockUpgradeMajority(int anEnforceBlockUpgradeMajority) { nEnforceBlockUpgradeMajority=anEnforceBlockUpgradeMajority; }
|
virtual void setEnforceBlockUpgradeMajority(int anEnforceBlockUpgradeMajority) { nEnforceBlockUpgradeMajority=anEnforceBlockUpgradeMajority; }
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
#include "chainparamsbase.h"
|
#include "chainparamsbase.h"
|
||||||
|
#include "checkpoints.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
#include "uint256.h"
|
#include "uint256.h"
|
||||||
|
|
||||||
@ -71,12 +72,14 @@ public:
|
|||||||
/* Make miner stop after a block is found. In RPC, don't return
|
/* Make miner stop after a block is found. In RPC, don't return
|
||||||
* until nGenProcLimit blocks are generated */
|
* until nGenProcLimit blocks are generated */
|
||||||
bool MineBlocksOnDemand() const { return fMineBlocksOnDemand; }
|
bool MineBlocksOnDemand() const { return fMineBlocksOnDemand; }
|
||||||
CBaseChainParams::Network NetworkID() const { return networkID; }
|
/* In the future use NetworkIDString() for RPC fields */
|
||||||
|
bool TestnetToBeDeprecatedFieldRPC() const { return fTestnetToBeDeprecatedFieldRPC; }
|
||||||
/* Return the BIP70 network string (main, test or regtest) */
|
/* Return the BIP70 network string (main, test or regtest) */
|
||||||
std::string NetworkIDString() const { return strNetworkID; }
|
std::string NetworkIDString() const { return strNetworkID; }
|
||||||
const std::vector<CDNSSeedData>& DNSSeeds() const { return vSeeds; }
|
const std::vector<CDNSSeedData>& DNSSeeds() const { return vSeeds; }
|
||||||
const std::vector<unsigned char>& Base58Prefix(Base58Type type) const { return base58Prefixes[type]; }
|
const std::vector<unsigned char>& Base58Prefix(Base58Type type) const { return base58Prefixes[type]; }
|
||||||
const std::vector<CAddress>& FixedSeeds() const { return vFixedSeeds; }
|
const std::vector<CAddress>& FixedSeeds() const { return vFixedSeeds; }
|
||||||
|
virtual const Checkpoints::CCheckpointData& Checkpoints() const = 0;
|
||||||
protected:
|
protected:
|
||||||
CChainParams() {}
|
CChainParams() {}
|
||||||
|
|
||||||
@ -106,6 +109,7 @@ protected:
|
|||||||
bool fRequireStandard;
|
bool fRequireStandard;
|
||||||
bool fMineBlocksOnDemand;
|
bool fMineBlocksOnDemand;
|
||||||
bool fSkipProofOfWorkCheck;
|
bool fSkipProofOfWorkCheck;
|
||||||
|
bool fTestnetToBeDeprecatedFieldRPC;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Modifiable parameters interface is used by test cases to adapt the parameters in order
|
/** Modifiable parameters interface is used by test cases to adapt the parameters in order
|
||||||
|
@ -4,18 +4,16 @@
|
|||||||
|
|
||||||
#include "checkpoints.h"
|
#include "checkpoints.h"
|
||||||
|
|
||||||
|
#include "chainparams.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "uint256.h"
|
#include "uint256.h"
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <boost/assign/list_of.hpp> // for 'map_list_of()'
|
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
namespace Checkpoints {
|
namespace Checkpoints {
|
||||||
|
|
||||||
typedef std::map<int, uint256> MapCheckpoints;
|
|
||||||
|
|
||||||
// How many times we expect transactions after the last checkpoint to
|
// How many times we expect transactions after the last checkpoint to
|
||||||
// be slower. This number is a compromise, as it can't be accurate for
|
// be slower. This number is a compromise, as it can't be accurate for
|
||||||
// every system. When reindexing from a fast disk with a slow CPU, it
|
// every system. When reindexing from a fast disk with a slow CPU, it
|
||||||
@ -23,83 +21,14 @@ namespace Checkpoints {
|
|||||||
// fast multicore CPU, it won't be much higher than 1.
|
// fast multicore CPU, it won't be much higher than 1.
|
||||||
static const double SIGCHECK_VERIFICATION_FACTOR = 5.0;
|
static const double SIGCHECK_VERIFICATION_FACTOR = 5.0;
|
||||||
|
|
||||||
struct CCheckpointData {
|
|
||||||
const MapCheckpoints *mapCheckpoints;
|
|
||||||
int64_t nTimeLastCheckpoint;
|
|
||||||
int64_t nTransactionsLastCheckpoint;
|
|
||||||
double fTransactionsPerDay;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool fEnabled = true;
|
bool fEnabled = true;
|
||||||
|
|
||||||
// What makes a good checkpoint block?
|
|
||||||
// + Is surrounded by blocks with reasonable timestamps
|
|
||||||
// (no blocks before with a timestamp after, none after with
|
|
||||||
// timestamp before)
|
|
||||||
// + Contains no strange transactions
|
|
||||||
static MapCheckpoints mapCheckpoints =
|
|
||||||
boost::assign::map_list_of
|
|
||||||
( 11111, uint256("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"))
|
|
||||||
( 33333, uint256("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6"))
|
|
||||||
( 74000, uint256("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20"))
|
|
||||||
(105000, uint256("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97"))
|
|
||||||
(134444, uint256("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe"))
|
|
||||||
(168000, uint256("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763"))
|
|
||||||
(193000, uint256("0x000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317"))
|
|
||||||
(210000, uint256("0x000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e"))
|
|
||||||
(216116, uint256("0x00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e"))
|
|
||||||
(225430, uint256("0x00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932"))
|
|
||||||
(250000, uint256("0x000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214"))
|
|
||||||
(279000, uint256("0x0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40"))
|
|
||||||
(295000, uint256("0x00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983"))
|
|
||||||
;
|
|
||||||
static const CCheckpointData data = {
|
|
||||||
&mapCheckpoints,
|
|
||||||
1397080064, // * UNIX timestamp of last checkpoint block
|
|
||||||
36544669, // * total number of transactions between genesis and last checkpoint
|
|
||||||
// (the tx=... number in the SetBestChain debug.log lines)
|
|
||||||
60000.0 // * estimated number of transactions per day after checkpoint
|
|
||||||
};
|
|
||||||
|
|
||||||
static MapCheckpoints mapCheckpointsTestnet =
|
|
||||||
boost::assign::map_list_of
|
|
||||||
( 546, uint256("000000002a936ca763904c3c35fce2f3556c559c0214345d31b1bcebf76acb70"))
|
|
||||||
;
|
|
||||||
static const CCheckpointData dataTestnet = {
|
|
||||||
&mapCheckpointsTestnet,
|
|
||||||
1337966069,
|
|
||||||
1488,
|
|
||||||
300
|
|
||||||
};
|
|
||||||
|
|
||||||
static MapCheckpoints mapCheckpointsRegtest =
|
|
||||||
boost::assign::map_list_of
|
|
||||||
( 0, uint256("0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"))
|
|
||||||
;
|
|
||||||
static const CCheckpointData dataRegtest = {
|
|
||||||
&mapCheckpointsRegtest,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
};
|
|
||||||
|
|
||||||
const CCheckpointData &Checkpoints() {
|
|
||||||
if (Params().NetworkID() == CBaseChainParams::TESTNET)
|
|
||||||
return dataTestnet;
|
|
||||||
else if (Params().NetworkID() == CBaseChainParams::MAIN)
|
|
||||||
return data;
|
|
||||||
else if (Params().NetworkID() == CBaseChainParams::UNITTEST) // UnitTest share the same checkpoints as MAIN
|
|
||||||
return data;
|
|
||||||
else
|
|
||||||
return dataRegtest;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CheckBlock(int nHeight, const uint256& hash)
|
bool CheckBlock(int nHeight, const uint256& hash)
|
||||||
{
|
{
|
||||||
if (!fEnabled)
|
if (!fEnabled)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
const MapCheckpoints& checkpoints = *Checkpoints().mapCheckpoints;
|
const MapCheckpoints& checkpoints = *Params().Checkpoints().mapCheckpoints;
|
||||||
|
|
||||||
MapCheckpoints::const_iterator i = checkpoints.find(nHeight);
|
MapCheckpoints::const_iterator i = checkpoints.find(nHeight);
|
||||||
if (i == checkpoints.end()) return true;
|
if (i == checkpoints.end()) return true;
|
||||||
@ -119,7 +48,7 @@ namespace Checkpoints {
|
|||||||
// Work is defined as: 1.0 per transaction before the last checkpoint, and
|
// Work is defined as: 1.0 per transaction before the last checkpoint, and
|
||||||
// fSigcheckVerificationFactor per transaction after.
|
// fSigcheckVerificationFactor per transaction after.
|
||||||
|
|
||||||
const CCheckpointData &data = Checkpoints();
|
const CCheckpointData &data = Params().Checkpoints();
|
||||||
|
|
||||||
if (pindex->nChainTx <= data.nTransactionsLastCheckpoint) {
|
if (pindex->nChainTx <= data.nTransactionsLastCheckpoint) {
|
||||||
double nCheapBefore = pindex->nChainTx;
|
double nCheapBefore = pindex->nChainTx;
|
||||||
@ -143,7 +72,7 @@ namespace Checkpoints {
|
|||||||
if (!fEnabled)
|
if (!fEnabled)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const MapCheckpoints& checkpoints = *Checkpoints().mapCheckpoints;
|
const MapCheckpoints& checkpoints = *Params().Checkpoints().mapCheckpoints;
|
||||||
|
|
||||||
return checkpoints.rbegin()->first;
|
return checkpoints.rbegin()->first;
|
||||||
}
|
}
|
||||||
@ -153,7 +82,7 @@ namespace Checkpoints {
|
|||||||
if (!fEnabled)
|
if (!fEnabled)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
const MapCheckpoints& checkpoints = *Checkpoints().mapCheckpoints;
|
const MapCheckpoints& checkpoints = *Params().Checkpoints().mapCheckpoints;
|
||||||
|
|
||||||
BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, checkpoints)
|
BOOST_REVERSE_FOREACH(const MapCheckpoints::value_type& i, checkpoints)
|
||||||
{
|
{
|
||||||
|
@ -5,16 +5,26 @@
|
|||||||
#ifndef BITCOIN_CHECKPOINT_H
|
#ifndef BITCOIN_CHECKPOINT_H
|
||||||
#define BITCOIN_CHECKPOINT_H
|
#define BITCOIN_CHECKPOINT_H
|
||||||
|
|
||||||
|
#include "uint256.h"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
class CBlockIndex;
|
class CBlockIndex;
|
||||||
class uint256;
|
|
||||||
|
|
||||||
/** Block-chain checkpoints are compiled-in sanity checks.
|
/** Block-chain checkpoints are compiled-in sanity checks.
|
||||||
* They are updated every release or three.
|
* They are updated every release or three.
|
||||||
*/
|
*/
|
||||||
namespace Checkpoints
|
namespace Checkpoints
|
||||||
{
|
{
|
||||||
|
typedef std::map<int, uint256> MapCheckpoints;
|
||||||
|
|
||||||
|
struct CCheckpointData {
|
||||||
|
const MapCheckpoints *mapCheckpoints;
|
||||||
|
int64_t nTimeLastCheckpoint;
|
||||||
|
int64_t nTransactionsLastCheckpoint;
|
||||||
|
double fTransactionsPerDay;
|
||||||
|
};
|
||||||
|
|
||||||
// Returns true if block passes checkpoint checks
|
// Returns true if block passes checkpoint checks
|
||||||
bool CheckBlock(int nHeight, const uint256& hash);
|
bool CheckBlock(int nHeight, const uint256& hash);
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "guiconstants.h"
|
#include "guiconstants.h"
|
||||||
#include "guiutil.h"
|
#include "guiutil.h"
|
||||||
#include "intro.h"
|
#include "intro.h"
|
||||||
|
#include "networkstyle.h"
|
||||||
#include "optionsmodel.h"
|
#include "optionsmodel.h"
|
||||||
#include "splashscreen.h"
|
#include "splashscreen.h"
|
||||||
#include "utilitydialog.h"
|
#include "utilitydialog.h"
|
||||||
@ -190,9 +191,9 @@ public:
|
|||||||
/// Create options model
|
/// Create options model
|
||||||
void createOptionsModel();
|
void createOptionsModel();
|
||||||
/// Create main window
|
/// Create main window
|
||||||
void createWindow(bool isaTestNet);
|
void createWindow(const NetworkStyle *networkStyle);
|
||||||
/// Create splash screen
|
/// Create splash screen
|
||||||
void createSplashScreen(bool isaTestNet);
|
void createSplashScreen(const NetworkStyle *networkStyle);
|
||||||
|
|
||||||
/// Request core initialization
|
/// Request core initialization
|
||||||
void requestInitialize();
|
void requestInitialize();
|
||||||
@ -331,18 +332,18 @@ void BitcoinApplication::createOptionsModel()
|
|||||||
optionsModel = new OptionsModel();
|
optionsModel = new OptionsModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitcoinApplication::createWindow(bool isaTestNet)
|
void BitcoinApplication::createWindow(const NetworkStyle *networkStyle)
|
||||||
{
|
{
|
||||||
window = new BitcoinGUI(isaTestNet, 0);
|
window = new BitcoinGUI(networkStyle, 0);
|
||||||
|
|
||||||
pollShutdownTimer = new QTimer(window);
|
pollShutdownTimer = new QTimer(window);
|
||||||
connect(pollShutdownTimer, SIGNAL(timeout()), window, SLOT(detectShutdown()));
|
connect(pollShutdownTimer, SIGNAL(timeout()), window, SLOT(detectShutdown()));
|
||||||
pollShutdownTimer->start(200);
|
pollShutdownTimer->start(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitcoinApplication::createSplashScreen(bool isaTestNet)
|
void BitcoinApplication::createSplashScreen(const NetworkStyle *networkStyle)
|
||||||
{
|
{
|
||||||
SplashScreen *splash = new SplashScreen(0, isaTestNet);
|
SplashScreen *splash = new SplashScreen(0, networkStyle);
|
||||||
// We don't hold a direct pointer to the splash screen after creation, so use
|
// We don't hold a direct pointer to the splash screen after creation, so use
|
||||||
// Qt::WA_DeleteOnClose to make sure that the window will be deleted eventually.
|
// Qt::WA_DeleteOnClose to make sure that the window will be deleted eventually.
|
||||||
splash->setAttribute(Qt::WA_DeleteOnClose);
|
splash->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
@ -572,12 +573,10 @@ int main(int argc, char *argv[])
|
|||||||
if (!PaymentServer::ipcParseCommandLine(argc, argv))
|
if (!PaymentServer::ipcParseCommandLine(argc, argv))
|
||||||
exit(0);
|
exit(0);
|
||||||
#endif
|
#endif
|
||||||
bool isaTestNet = Params().NetworkID() != CBaseChainParams::MAIN;
|
QScopedPointer<const NetworkStyle> networkStyle(NetworkStyle::instantiate(QString::fromStdString(Params().NetworkIDString())));
|
||||||
|
assert(!networkStyle.isNull());
|
||||||
// Allow for separate UI settings for testnets
|
// Allow for separate UI settings for testnets
|
||||||
if (isaTestNet)
|
QApplication::setApplicationName(networkStyle->getAppName());
|
||||||
QApplication::setApplicationName(QAPP_APP_NAME_TESTNET);
|
|
||||||
else
|
|
||||||
QApplication::setApplicationName(QAPP_APP_NAME_DEFAULT);
|
|
||||||
// Re-initialize translations after changing application name (language in network-specific settings can be different)
|
// Re-initialize translations after changing application name (language in network-specific settings can be different)
|
||||||
initTranslations(qtTranslatorBase, qtTranslator, translatorBase, translator);
|
initTranslations(qtTranslatorBase, qtTranslator, translatorBase, translator);
|
||||||
|
|
||||||
@ -617,11 +616,11 @@ int main(int argc, char *argv[])
|
|||||||
uiInterface.InitMessage.connect(InitMessage);
|
uiInterface.InitMessage.connect(InitMessage);
|
||||||
|
|
||||||
if (GetBoolArg("-splash", true) && !GetBoolArg("-min", false))
|
if (GetBoolArg("-splash", true) && !GetBoolArg("-min", false))
|
||||||
app.createSplashScreen(isaTestNet);
|
app.createSplashScreen(networkStyle.data());
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
app.createWindow(isaTestNet);
|
app.createWindow(networkStyle.data());
|
||||||
app.requestInitialize();
|
app.requestInitialize();
|
||||||
#if defined(Q_OS_WIN) && QT_VERSION >= 0x050000
|
#if defined(Q_OS_WIN) && QT_VERSION >= 0x050000
|
||||||
WinShutdownMonitor::registerShutdownBlockReason(QObject::tr("Bitcoin Core didn't yet exit safely..."), (HWND)app.getMainWinId());
|
WinShutdownMonitor::registerShutdownBlockReason(QObject::tr("Bitcoin Core didn't yet exit safely..."), (HWND)app.getMainWinId());
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include "clientmodel.h"
|
#include "clientmodel.h"
|
||||||
#include "guiconstants.h"
|
#include "guiconstants.h"
|
||||||
#include "guiutil.h"
|
#include "guiutil.h"
|
||||||
|
#include "networkstyle.h"
|
||||||
#include "notificator.h"
|
#include "notificator.h"
|
||||||
#include "openuridialog.h"
|
#include "openuridialog.h"
|
||||||
#include "optionsdialog.h"
|
#include "optionsdialog.h"
|
||||||
@ -59,7 +60,7 @@
|
|||||||
|
|
||||||
const QString BitcoinGUI::DEFAULT_WALLET = "~Default";
|
const QString BitcoinGUI::DEFAULT_WALLET = "~Default";
|
||||||
|
|
||||||
BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
|
BitcoinGUI::BitcoinGUI(const NetworkStyle *networkStyle, QWidget *parent) :
|
||||||
QMainWindow(parent),
|
QMainWindow(parent),
|
||||||
clientModel(0),
|
clientModel(0),
|
||||||
walletFrame(0),
|
walletFrame(0),
|
||||||
@ -112,26 +113,13 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
|
|||||||
} else {
|
} else {
|
||||||
windowTitle += tr("Node");
|
windowTitle += tr("Node");
|
||||||
}
|
}
|
||||||
|
windowTitle += " " + networkStyle->getTitleAddText();
|
||||||
if (!fIsTestnet)
|
|
||||||
{
|
|
||||||
#ifndef Q_OS_MAC
|
#ifndef Q_OS_MAC
|
||||||
QApplication::setWindowIcon(QIcon(":icons/bitcoin"));
|
QApplication::setWindowIcon(networkStyle->getAppIcon());
|
||||||
setWindowIcon(QIcon(":icons/bitcoin"));
|
setWindowIcon(networkStyle->getAppIcon());
|
||||||
#else
|
#else
|
||||||
MacDockIconHandler::instance()->setIcon(QIcon(":icons/bitcoin"));
|
MacDockIconHandler::instance()->setIcon(networkStyle->getAppIcon());
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
windowTitle += " " + tr("[testnet]");
|
|
||||||
#ifndef Q_OS_MAC
|
|
||||||
QApplication::setWindowIcon(QIcon(":icons/bitcoin_testnet"));
|
|
||||||
setWindowIcon(QIcon(":icons/bitcoin_testnet"));
|
|
||||||
#else
|
|
||||||
MacDockIconHandler::instance()->setIcon(QIcon(":icons/bitcoin_testnet"));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
setWindowTitle(windowTitle);
|
setWindowTitle(windowTitle);
|
||||||
|
|
||||||
#if defined(Q_OS_MAC) && QT_VERSION < 0x050000
|
#if defined(Q_OS_MAC) && QT_VERSION < 0x050000
|
||||||
@ -161,7 +149,7 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
|
|||||||
|
|
||||||
// Create actions for the toolbar, menu bar and tray/dock icon
|
// Create actions for the toolbar, menu bar and tray/dock icon
|
||||||
// Needs walletFrame to be initialized
|
// Needs walletFrame to be initialized
|
||||||
createActions(fIsTestnet);
|
createActions(networkStyle);
|
||||||
|
|
||||||
// Create application menu bar
|
// Create application menu bar
|
||||||
createMenuBar();
|
createMenuBar();
|
||||||
@ -170,7 +158,7 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
|
|||||||
createToolBars();
|
createToolBars();
|
||||||
|
|
||||||
// Create system tray icon and notification
|
// Create system tray icon and notification
|
||||||
createTrayIcon(fIsTestnet);
|
createTrayIcon(networkStyle);
|
||||||
|
|
||||||
// Create status bar
|
// Create status bar
|
||||||
statusBar();
|
statusBar();
|
||||||
@ -248,7 +236,7 @@ BitcoinGUI::~BitcoinGUI()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitcoinGUI::createActions(bool fIsTestnet)
|
void BitcoinGUI::createActions(const NetworkStyle *networkStyle)
|
||||||
{
|
{
|
||||||
QActionGroup *tabGroup = new QActionGroup(this);
|
QActionGroup *tabGroup = new QActionGroup(this);
|
||||||
|
|
||||||
@ -295,10 +283,7 @@ void BitcoinGUI::createActions(bool fIsTestnet)
|
|||||||
quitAction->setStatusTip(tr("Quit application"));
|
quitAction->setStatusTip(tr("Quit application"));
|
||||||
quitAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
|
quitAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q));
|
||||||
quitAction->setMenuRole(QAction::QuitRole);
|
quitAction->setMenuRole(QAction::QuitRole);
|
||||||
if (!fIsTestnet)
|
aboutAction = new QAction(networkStyle->getAppIcon(), tr("&About Bitcoin Core"), this);
|
||||||
aboutAction = new QAction(QIcon(":/icons/bitcoin"), tr("&About Bitcoin Core"), this);
|
|
||||||
else
|
|
||||||
aboutAction = new QAction(QIcon(":/icons/bitcoin_testnet"), tr("&About Bitcoin Core"), this);
|
|
||||||
aboutAction->setStatusTip(tr("Show information about Bitcoin Core"));
|
aboutAction->setStatusTip(tr("Show information about Bitcoin Core"));
|
||||||
aboutAction->setMenuRole(QAction::AboutRole);
|
aboutAction->setMenuRole(QAction::AboutRole);
|
||||||
#if QT_VERSION < 0x050000
|
#if QT_VERSION < 0x050000
|
||||||
@ -311,10 +296,7 @@ void BitcoinGUI::createActions(bool fIsTestnet)
|
|||||||
optionsAction = new QAction(QIcon(":/icons/options"), tr("&Options..."), this);
|
optionsAction = new QAction(QIcon(":/icons/options"), tr("&Options..."), this);
|
||||||
optionsAction->setStatusTip(tr("Modify configuration options for Bitcoin"));
|
optionsAction->setStatusTip(tr("Modify configuration options for Bitcoin"));
|
||||||
optionsAction->setMenuRole(QAction::PreferencesRole);
|
optionsAction->setMenuRole(QAction::PreferencesRole);
|
||||||
if (!fIsTestnet)
|
toggleHideAction = new QAction(networkStyle->getAppIcon(), tr("&Show / Hide"), this);
|
||||||
toggleHideAction = new QAction(QIcon(":/icons/bitcoin"), tr("&Show / Hide"), this);
|
|
||||||
else
|
|
||||||
toggleHideAction = new QAction(QIcon(":/icons/bitcoin_testnet"), tr("&Show / Hide"), this);
|
|
||||||
toggleHideAction->setStatusTip(tr("Show or hide the main Window"));
|
toggleHideAction->setStatusTip(tr("Show or hide the main Window"));
|
||||||
|
|
||||||
encryptWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Encrypt Wallet..."), this);
|
encryptWalletAction = new QAction(QIcon(":/icons/lock_closed"), tr("&Encrypt Wallet..."), this);
|
||||||
@ -505,22 +487,13 @@ void BitcoinGUI::setWalletActionsEnabled(bool enabled)
|
|||||||
openAction->setEnabled(enabled);
|
openAction->setEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitcoinGUI::createTrayIcon(bool fIsTestnet)
|
void BitcoinGUI::createTrayIcon(const NetworkStyle *networkStyle)
|
||||||
{
|
{
|
||||||
#ifndef Q_OS_MAC
|
#ifndef Q_OS_MAC
|
||||||
trayIcon = new QSystemTrayIcon(this);
|
trayIcon = new QSystemTrayIcon(this);
|
||||||
|
QString toolTip = tr("Bitcoin Core client") + " " + networkStyle->getTitleAddText();
|
||||||
if (!fIsTestnet)
|
trayIcon->setToolTip(toolTip);
|
||||||
{
|
trayIcon->setIcon(networkStyle->getAppIcon());
|
||||||
trayIcon->setToolTip(tr("Bitcoin Core client"));
|
|
||||||
trayIcon->setIcon(QIcon(":/icons/bitcoin"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
trayIcon->setToolTip(tr("Bitcoin Core client") + " " + tr("[testnet]"));
|
|
||||||
trayIcon->setIcon(QIcon(":/icons/bitcoin_testnet"));
|
|
||||||
}
|
|
||||||
|
|
||||||
trayIcon->show();
|
trayIcon->show();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include <QSystemTrayIcon>
|
#include <QSystemTrayIcon>
|
||||||
|
|
||||||
class ClientModel;
|
class ClientModel;
|
||||||
|
class NetworkStyle;
|
||||||
class Notificator;
|
class Notificator;
|
||||||
class OptionsModel;
|
class OptionsModel;
|
||||||
class RPCConsole;
|
class RPCConsole;
|
||||||
@ -46,7 +47,7 @@ class BitcoinGUI : public QMainWindow
|
|||||||
public:
|
public:
|
||||||
static const QString DEFAULT_WALLET;
|
static const QString DEFAULT_WALLET;
|
||||||
|
|
||||||
explicit BitcoinGUI(bool fIsTestnet = false, QWidget *parent = 0);
|
explicit BitcoinGUI(const NetworkStyle *networkStyle, QWidget *parent = 0);
|
||||||
~BitcoinGUI();
|
~BitcoinGUI();
|
||||||
|
|
||||||
/** Set the client model.
|
/** Set the client model.
|
||||||
@ -114,13 +115,13 @@ private:
|
|||||||
int spinnerFrame;
|
int spinnerFrame;
|
||||||
|
|
||||||
/** Create the main UI actions. */
|
/** Create the main UI actions. */
|
||||||
void createActions(bool fIsTestnet);
|
void createActions(const NetworkStyle *networkStyle);
|
||||||
/** Create the menu bar and sub-menus. */
|
/** Create the menu bar and sub-menus. */
|
||||||
void createMenuBar();
|
void createMenuBar();
|
||||||
/** Create the toolbars */
|
/** Create the toolbars */
|
||||||
void createToolBars();
|
void createToolBars();
|
||||||
/** Create system tray icon and notification */
|
/** Create system tray icon and notification */
|
||||||
void createTrayIcon(bool fIsTestnet);
|
void createTrayIcon(const NetworkStyle *networkStyle);
|
||||||
/** Create system tray menu (or setup the dock menu) */
|
/** Create system tray menu (or setup the dock menu) */
|
||||||
void createTrayIconMenu();
|
void createTrayIconMenu();
|
||||||
|
|
||||||
|
47
src/qt/networkstyle.cpp
Normal file
47
src/qt/networkstyle.cpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright (c) 2014 The Bitcoin developers
|
||||||
|
// Distributed under the MIT software license, see the accompanying
|
||||||
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
#include "networkstyle.h"
|
||||||
|
|
||||||
|
#include "guiconstants.h"
|
||||||
|
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
static const struct {
|
||||||
|
const char *networkId;
|
||||||
|
const char *appName;
|
||||||
|
const char *appIcon;
|
||||||
|
const char *titleAddText;
|
||||||
|
const char *splashImage;
|
||||||
|
} network_styles[] = {
|
||||||
|
{"main", QAPP_APP_NAME_DEFAULT, ":/icons/bitcoin", "", ":/images/splash"},
|
||||||
|
{"test", QAPP_APP_NAME_TESTNET, ":/icons/bitcoin_testnet", QT_TRANSLATE_NOOP("SplashScreen", "[testnet]"), ":/images/splash_testnet"},
|
||||||
|
{"regtest", QAPP_APP_NAME_TESTNET, ":/icons/bitcoin_testnet", "[regtest]", ":/images/splash_testnet"}
|
||||||
|
};
|
||||||
|
static const unsigned network_styles_count = sizeof(network_styles)/sizeof(*network_styles);
|
||||||
|
|
||||||
|
// titleAddText needs to be const char* for tr()
|
||||||
|
NetworkStyle::NetworkStyle(const QString &appName, const QString &appIcon, const char *titleAddText, const QString &splashImage):
|
||||||
|
appName(appName),
|
||||||
|
appIcon(appIcon),
|
||||||
|
titleAddText(qApp->translate("SplashScreen", titleAddText)),
|
||||||
|
splashImage(splashImage)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const NetworkStyle *NetworkStyle::instantiate(const QString &networkId)
|
||||||
|
{
|
||||||
|
for (unsigned x=0; x<network_styles_count; ++x)
|
||||||
|
{
|
||||||
|
if (networkId == network_styles[x].networkId)
|
||||||
|
{
|
||||||
|
return new NetworkStyle(
|
||||||
|
network_styles[x].appName,
|
||||||
|
network_styles[x].appIcon,
|
||||||
|
network_styles[x].titleAddText,
|
||||||
|
network_styles[x].splashImage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
33
src/qt/networkstyle.h
Normal file
33
src/qt/networkstyle.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// Copyright (c) 2014 The Bitcoin developers
|
||||||
|
// Distributed under the MIT software license, see the accompanying
|
||||||
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
#ifndef H_NETWORKSTYLE
|
||||||
|
#define H_NETWORKSTYLE
|
||||||
|
|
||||||
|
#include <QIcon>
|
||||||
|
#include <QPixmap>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
/* Coin network-specific GUI style information */
|
||||||
|
class NetworkStyle
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/** Get style associated with provided BIP70 network id, or 0 if not known */
|
||||||
|
static const NetworkStyle *instantiate(const QString &networkId);
|
||||||
|
|
||||||
|
const QString &getAppName() const { return appName; }
|
||||||
|
const QIcon &getAppIcon() const { return appIcon; }
|
||||||
|
const QString &getTitleAddText() const { return titleAddText; }
|
||||||
|
const QPixmap &getSplashImage() const { return splashImage; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
NetworkStyle(const QString &appName, const QString &appIcon, const char *titleAddText, const QString &splashImage);
|
||||||
|
|
||||||
|
QString appName;
|
||||||
|
QIcon appIcon;
|
||||||
|
QString titleAddText;
|
||||||
|
QPixmap splashImage;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // H_NETWORKSTYLE
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "clientversion.h"
|
#include "clientversion.h"
|
||||||
#include "init.h"
|
#include "init.h"
|
||||||
|
#include "networkstyle.h"
|
||||||
#include "ui_interface.h"
|
#include "ui_interface.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
@ -19,7 +20,7 @@
|
|||||||
#include <QDesktopWidget>
|
#include <QDesktopWidget>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
SplashScreen::SplashScreen(Qt::WindowFlags f, bool isTestNet) :
|
SplashScreen::SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle) :
|
||||||
QWidget(0, f), curAlignment(0)
|
QWidget(0, f), curAlignment(0)
|
||||||
{
|
{
|
||||||
// set reference point, paddings
|
// set reference point, paddings
|
||||||
@ -34,17 +35,12 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, bool isTestNet) :
|
|||||||
QString titleText = tr("Bitcoin Core");
|
QString titleText = tr("Bitcoin Core");
|
||||||
QString versionText = QString("Version %1").arg(QString::fromStdString(FormatFullVersion()));
|
QString versionText = QString("Version %1").arg(QString::fromStdString(FormatFullVersion()));
|
||||||
QString copyrightText = QChar(0xA9)+QString(" 2009-%1 ").arg(COPYRIGHT_YEAR) + QString(tr("The Bitcoin Core developers"));
|
QString copyrightText = QChar(0xA9)+QString(" 2009-%1 ").arg(COPYRIGHT_YEAR) + QString(tr("The Bitcoin Core developers"));
|
||||||
QString testnetAddText = QString(tr("[testnet]")); // define text to place as single text object
|
QString titleAddText = networkStyle->getTitleAddText();
|
||||||
|
|
||||||
QString font = "Arial";
|
QString font = "Arial";
|
||||||
|
|
||||||
// load the bitmap for writing some text over it
|
// load the bitmap for writing some text over it
|
||||||
if(isTestNet) {
|
pixmap = networkStyle->getSplashImage();
|
||||||
pixmap = QPixmap(":/images/splash_testnet");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
pixmap = QPixmap(":/images/splash");
|
|
||||||
}
|
|
||||||
|
|
||||||
QPainter pixPaint(&pixmap);
|
QPainter pixPaint(&pixmap);
|
||||||
pixPaint.setPen(QColor(100,100,100));
|
pixPaint.setPen(QColor(100,100,100));
|
||||||
@ -78,23 +74,20 @@ SplashScreen::SplashScreen(Qt::WindowFlags f, bool isTestNet) :
|
|||||||
pixPaint.setFont(QFont(font, 10*fontFactor));
|
pixPaint.setFont(QFont(font, 10*fontFactor));
|
||||||
pixPaint.drawText(pixmap.width()-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText);
|
pixPaint.drawText(pixmap.width()-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText);
|
||||||
|
|
||||||
// draw testnet string if testnet is on
|
// draw additional text if special network
|
||||||
if(isTestNet) {
|
if(!titleAddText.isEmpty()) {
|
||||||
QFont boldFont = QFont(font, 10*fontFactor);
|
QFont boldFont = QFont(font, 10*fontFactor);
|
||||||
boldFont.setWeight(QFont::Bold);
|
boldFont.setWeight(QFont::Bold);
|
||||||
pixPaint.setFont(boldFont);
|
pixPaint.setFont(boldFont);
|
||||||
fm = pixPaint.fontMetrics();
|
fm = pixPaint.fontMetrics();
|
||||||
int testnetAddTextWidth = fm.width(testnetAddText);
|
int titleAddTextWidth = fm.width(titleAddText);
|
||||||
pixPaint.drawText(pixmap.width()-testnetAddTextWidth-10,15,testnetAddText);
|
pixPaint.drawText(pixmap.width()-titleAddTextWidth-10,15,titleAddText);
|
||||||
}
|
}
|
||||||
|
|
||||||
pixPaint.end();
|
pixPaint.end();
|
||||||
|
|
||||||
// Set window title
|
// Set window title
|
||||||
if(isTestNet)
|
setWindowTitle(titleText + " " + titleAddText);
|
||||||
setWindowTitle(titleText + " " + testnetAddText);
|
|
||||||
else
|
|
||||||
setWindowTitle(titleText);
|
|
||||||
|
|
||||||
// Resize window and move to center of desktop, disallow resizing
|
// Resize window and move to center of desktop, disallow resizing
|
||||||
QRect r(QPoint(), pixmap.size());
|
QRect r(QPoint(), pixmap.size());
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
#include <QSplashScreen>
|
#include <QSplashScreen>
|
||||||
|
|
||||||
|
class NetworkStyle;
|
||||||
|
|
||||||
/** Class for the splashscreen with information of the running client.
|
/** Class for the splashscreen with information of the running client.
|
||||||
*
|
*
|
||||||
* @note this is intentionally not a QSplashScreen. Bitcoin Core initialization
|
* @note this is intentionally not a QSplashScreen. Bitcoin Core initialization
|
||||||
@ -18,7 +20,7 @@ class SplashScreen : public QWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SplashScreen(Qt::WindowFlags f, bool isTestNet);
|
explicit SplashScreen(Qt::WindowFlags f, const NetworkStyle *networkStyle);
|
||||||
~SplashScreen();
|
~SplashScreen();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -239,7 +239,7 @@ Value getmininginfo(const Array& params, bool fHelp)
|
|||||||
obj.push_back(Pair("genproclimit", (int)GetArg("-genproclimit", -1)));
|
obj.push_back(Pair("genproclimit", (int)GetArg("-genproclimit", -1)));
|
||||||
obj.push_back(Pair("networkhashps", getnetworkhashps(params, false)));
|
obj.push_back(Pair("networkhashps", getnetworkhashps(params, false)));
|
||||||
obj.push_back(Pair("pooledtx", (uint64_t)mempool.size()));
|
obj.push_back(Pair("pooledtx", (uint64_t)mempool.size()));
|
||||||
obj.push_back(Pair("testnet", Params().NetworkID() == CBaseChainParams::TESTNET));
|
obj.push_back(Pair("testnet", Params().TestnetToBeDeprecatedFieldRPC()));
|
||||||
obj.push_back(Pair("chain", Params().NetworkIDString()));
|
obj.push_back(Pair("chain", Params().NetworkIDString()));
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
obj.push_back(Pair("generate", getgenerate(params, false)));
|
obj.push_back(Pair("generate", getgenerate(params, false)));
|
||||||
|
@ -87,7 +87,7 @@ Value getinfo(const Array& params, bool fHelp)
|
|||||||
obj.push_back(Pair("connections", (int)vNodes.size()));
|
obj.push_back(Pair("connections", (int)vNodes.size()));
|
||||||
obj.push_back(Pair("proxy", (proxy.IsValid() ? proxy.ToStringIPPort() : string())));
|
obj.push_back(Pair("proxy", (proxy.IsValid() ? proxy.ToStringIPPort() : string())));
|
||||||
obj.push_back(Pair("difficulty", (double)GetDifficulty()));
|
obj.push_back(Pair("difficulty", (double)GetDifficulty()));
|
||||||
obj.push_back(Pair("testnet", Params().NetworkID() == CBaseChainParams::TESTNET));
|
obj.push_back(Pair("testnet", Params().TestnetToBeDeprecatedFieldRPC()));
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
if (pwalletMain) {
|
if (pwalletMain) {
|
||||||
obj.push_back(Pair("keypoololdest", pwalletMain->GetOldestKeyPoolTime()));
|
obj.push_back(Pair("keypoololdest", pwalletMain->GetOldestKeyPoolTime()));
|
||||||
|
Loading…
Reference in New Issue
Block a user