*/
#include "bitcoingui.h"
#include "clientmodel.h"
-#include "util.h"
+#include "walletmodel.h"
+#include "optionsmodel.h"
+#include "qtwin.h"
+
+#include "headers.h"
#include "init.h"
-#include "main.h"
-#include "externui.h"
#include <QApplication>
#include <QMessageBox>
#include <QThread>
+#include <QLocale>
+#include <QTranslator>
+#include <QSplashScreen>
+#include <QDebug>
// 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)
{
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())
{
{
}
+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.
*/
int main(int argc, char *argv[])
{
+ 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);
+
+ QSplashScreen splash(QPixmap(":/images/splash"), Qt::WindowStaysOnTopHint);
+ 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.
+ BitcoinGUI window;
+ splash.finish(&window);
+ OptionsModel optionsModel(pwalletMain);
+ ClientModel clientModel(&optionsModel);
+ WalletModel walletModel(pwalletMain, &optionsModel);
+
+ guiref = &window;
+ window.setClientModel(&clientModel);
+ window.setWalletModel(&walletModel);
+
+ if (QtWin::isCompositionEnabled())
+ {
+#ifdef Q_WS_WIN32
+ // Windows-specific customization
+ window.setAttribute(Qt::WA_TranslucentBackground);
+ window.setAttribute(Qt::WA_NoSystemBackground, false);
+ QPalette pal = window.palette();
+ QColor bg = pal.window().color();
+ bg.setAlpha(0);
+ pal.setColor(QPalette::Window, bg);
+ window.setPalette(pal);
+ window.ensurePolished();
+ window.setAttribute(Qt::WA_StyledBackground, false);
+#endif
+ QtWin::extendFrameIntoClientArea(&window);
+ window.setContentsMargins(0, 0, 0, 0);
+ }
+
+ window.show();
+
+ app.exec();
+
+ guiref = 0;
+ }
Shutdown(NULL);
-
- return retval;
}
else
{
} catch (...) {
PrintException(NULL, "Runaway exception");
}
+ return 0;
}