X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Fbitcoin.cpp;h=dd326a690f2a513db036eefde84239f5c05b93f5;hb=7ca47cece7854a4efb4a8dcb68b93edbde1a76fb;hp=e00326742655c7809da6b6a822482b7acac1f2fd;hpb=ba4081c1fcaddf361abd61b2721994eff5475bb3;p=novacoin.git diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index e003267..dd326a6 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -3,17 +3,24 @@ */ #include "bitcoingui.h" #include "clientmodel.h" -#include "util.h" +#include "walletmodel.h" +#include "optionsmodel.h" + +#include "headers.h" #include "init.h" -#include "main.h" -#include "externui.h" #include #include #include +#include +#include +#include +#include +#include // Need a global reference for the notifications to find the GUI BitcoinGUI *guiref; +QSplashScreen *splashref; int MyMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y) { @@ -57,9 +64,8 @@ bool ThreadSafeAskFee(int64 nFeeRequired, const std::string& strCaption, wxWindo return true; bool payFee = false; - /* Call slot on GUI thread. - If called from another thread, use a blocking QueuedConnection. - */ + // Call slot on GUI thread. + // If called from another thread, use a blocking QueuedConnection. Qt::ConnectionType connectionType = Qt::DirectConnection; if(QThread::currentThread() != QCoreApplication::instance()->thread()) { @@ -85,30 +91,102 @@ void UIThreadCall(boost::function0 fn) void MainFrameRepaint() { + if(guiref) + QMetaObject::invokeMethod(guiref, "refreshStatusBar", Qt::QueuedConnection); +} + +void InitMessage(const std::string &message) +{ + if(splashref) + { + splashref->showMessage(QString::fromStdString(message), Qt::AlignBottom|Qt::AlignHCenter, QColor(255,255,200)); + QApplication::instance()->processEvents(); + } +} + +/* + Translate string to current locale using Qt. + */ +std::string _(const char* psz) +{ + return QCoreApplication::translate("bitcoin-core", psz).toStdString(); } int main(int argc, char *argv[]) { + QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); + QTextCodec::setCodecForCStrings(QTextCodec::codecForTr()); + + Q_INIT_RESOURCE(bitcoin); QApplication app(argc, argv); + + // Load language files for system locale: + // - First load the translator for the base language, without territory + // - Then load the more specific locale translator + QString lang_territory = QLocale::system().name(); // "en_US" + QString lang = lang_territory; + lang.truncate(lang_territory.lastIndexOf('_')); // "en" + QTranslator qtTranslatorBase, qtTranslator, translatorBase, translator; + + qtTranslatorBase.load(QLibraryInfo::location(QLibraryInfo::TranslationsPath) + "/qt_" + lang); + if (!qtTranslatorBase.isEmpty()) + app.installTranslator(&qtTranslatorBase); + + qtTranslator.load(QLibraryInfo::location(QLibraryInfo::TranslationsPath) + "/qt_" + lang_territory); + if (!qtTranslator.isEmpty()) + app.installTranslator(&qtTranslator); + + translatorBase.load(":/translations/"+lang); + if (!translatorBase.isEmpty()) + app.installTranslator(&translatorBase); + + translator.load(":/translations/"+lang_territory); + 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; + + app.processEvents(); + app.setQuitOnLastWindowClosed(false); try { if(AppInit2(argc, argv)) { - BitcoinGUI window; - ClientModel model; - guiref = &window; - window.setModel(&model); - - window.show(); - - int retval = app.exec(); - - guiref = 0; + { + // Put this in a block, so that BitcoinGUI is cleaned up properly before + // calling Shutdown() in case of exceptions. + BitcoinGUI window; + splash.finish(&window); + OptionsModel optionsModel(pwalletMain); + ClientModel clientModel(&optionsModel); + WalletModel walletModel(pwalletMain, &optionsModel); + + guiref = &window; + window.setClientModel(&clientModel); + window.setWalletModel(&walletModel); + + // If -min option passed, start window minimized. + if(GetBoolArg("-min")) + { + window.showMinimized(); + } + else + { + window.show(); + } + + app.exec(); + + guiref = 0; + } Shutdown(NULL); - - return retval; } else { @@ -119,4 +197,5 @@ int main(int argc, char *argv[]) } catch (...) { PrintException(NULL, "Runaway exception"); } + return 0; }