X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Fbitcoin.cpp;h=311fab3c9b98c07737582990bad7af52b42be8da;hb=91d7e847e051c9aa8be87a72d2763872b6b4f385;hp=78a20c51c0ddd713dee27adb17996134fdf85f61;hpb=8fe2308b34c444f74fed453133e0ada34ed9dd23;p=novacoin.git diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 78a20c5..311fab3 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -4,6 +4,7 @@ #include "bitcoingui.h" #include "clientmodel.h" #include "walletmodel.h" +#include "optionsmodel.h" #include "headers.h" #include "init.h" @@ -11,11 +12,15 @@ #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) { @@ -36,12 +41,19 @@ int MyMessageBox(const std::string& message, const std::string& caption, int sty 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 { @@ -86,6 +98,17 @@ 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(); + } } /* @@ -98,14 +121,47 @@ std::string _(const char* psz) 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 file for system locale - QString locale = QLocale::system().name(); - QTranslator translator; - translator.load("bitcoin_"+locale); - app.installTranslator(&translator); + // 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); + if (!GetBoolArg("-min")) + { + splash.show(); + splash.setAutoFillBackground(true); + splashref = &splash; + } + + app.processEvents(); app.setQuitOnLastWindowClosed(false); @@ -115,10 +171,14 @@ int main(int argc, char *argv[]) { { // Put this in a block, so that BitcoinGUI is cleaned up properly before - // calling shutdown. + // calling Shutdown(). BitcoinGUI window; - ClientModel clientModel(pwalletMain); - WalletModel walletModel(pwalletMain); + if (splashref) + splash.finish(&window); + OptionsModel optionsModel(pwalletMain); + ClientModel clientModel(&optionsModel); + WalletModel walletModel(pwalletMain, &optionsModel); + guiref = &window; window.setClientModel(&clientModel); window.setWalletModel(&walletModel);