X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Fbitcoin.cpp;h=3450bb4570040e44410df1dd61f3676ffd682d21;hb=fe1725a141334dab82ca007fb6fc983c358e35b2;hp=20c185ed27e7b49a2ae0ca1d462ce3e0b3984845;hpb=72075edafb62ebff58063af123d3c8bf1370f0e2;p=novacoin.git diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 20c185e..3450bb4 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -1,5 +1,5 @@ /* - * W.J. van der Laan 20011-2012 + * W.J. van der Laan 2011-2012 */ #include "bitcoingui.h" #include "clientmodel.h" @@ -27,29 +27,28 @@ QSplashScreen *splashref; int MyMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y) { - // Message from main thread - if(guiref) - { - guiref->error(QString::fromStdString(caption), - QString::fromStdString(message)); - } - else - { - QMessageBox::critical(0, QString::fromStdString(caption), - QString::fromStdString(message), - QMessageBox::Ok, QMessageBox::Ok); - } + // Message from AppInit2(), always in main thread before main window is constructed + QMessageBox::critical(0, QString::fromStdString(caption), + QString::fromStdString(message), + QMessageBox::Ok, QMessageBox::Ok); return 4; } int ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y) { + bool modal = style & wxMODAL; + + if (modal) + while (!guiref) + sleep(1); + // Message from network thread if(guiref) { QMetaObject::invokeMethod(guiref, "error", Qt::QueuedConnection, Q_ARG(QString, QString::fromStdString(caption)), - Q_ARG(QString, QString::fromStdString(message))); + Q_ARG(QString, QString::fromStdString(message)), + Q_ARG(bool, modal)); } else { @@ -134,6 +133,9 @@ std::string _(const char* psz) #ifndef BITCOIN_QT_TEST int main(int argc, char *argv[]) { +#if !defined(MAC_OSX) && !defined(WIN32) +// TODO: implement qtipcserver.cpp for Mac and Windows + // Do this early as we don't want to bother initializing if we are just calling IPC for (int i = 1; i < argc; i++) { @@ -152,6 +154,7 @@ int main(int argc, char *argv[]) } } } +#endif // Internal string conversion is all UTF-8 QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); @@ -160,8 +163,28 @@ int main(int argc, char *argv[]) Q_INIT_RESOURCE(bitcoin); QApplication app(argc, argv); + // Command-line options take precedence: ParseParameters(argc, argv); + // ... then bitcoin.conf: + if (!ReadConfigFile(mapArgs, mapMultiArgs)) + { + fprintf(stderr, "Error: Specified directory does not exist\n"); + return 1; + } + + // Application identification (must be set before OptionsModel is initialized, + // as it is used to locate QSettings) + app.setOrganizationName("Bitcoin"); + app.setOrganizationDomain("bitcoin.org"); + if(GetBoolArg("-testnet")) // Separate UI settings for testnet + app.setApplicationName("Bitcoin-Qt-testnet"); + else + app.setApplicationName("Bitcoin-Qt"); + + // ... then GUI settings: + OptionsModel optionsModel; + // Get desired locale ("en_US") from command line or system locale QString lang_territory = QString::fromStdString(GetArg("-lang", QLocale::system().name().toStdString())); // Load language files for configured locale: @@ -188,12 +211,13 @@ int main(int argc, char *argv[]) if (!translator.isEmpty()) app.installTranslator(&translator); - app.setApplicationName(QApplication::translate("main", "Bitcoin-Qt")); - QSplashScreen splash(QPixmap(":/images/splash"), 0); - splash.show(); - splash.setAutoFillBackground(true); - splashref = &splash; + if (GetBoolArg("-splash", true) && !GetBoolArg("-min")) + { + splash.show(); + splash.setAutoFillBackground(true); + splashref = &splash; + } app.processEvents(); @@ -206,9 +230,13 @@ int main(int argc, char *argv[]) { // Put this in a block, so that BitcoinGUI is cleaned up properly before // calling Shutdown() in case of exceptions. + + optionsModel.Upgrade(); // Must be done after AppInit2 + BitcoinGUI window; - splash.finish(&window); - OptionsModel optionsModel(pwalletMain); + if (splashref) + splash.finish(&window); + ClientModel clientModel(&optionsModel); WalletModel walletModel(pwalletMain, &optionsModel); @@ -228,6 +256,10 @@ int main(int argc, char *argv[]) // Place this here as guiref has to be defined if we dont want to lose URLs ipcInit(); + +#if !defined(MAC_OSX) && !defined(WIN32) +// TODO: implement qtipcserver.cpp for Mac and Windows + // Check for URL in argv for (int i = 1; i < argc; i++) { @@ -242,7 +274,7 @@ int main(int argc, char *argv[]) } } } - +#endif app.exec(); guiref = 0;