Here a totally superfluously patch:
a splash screen which shows up while loading LyX. ;)

I've added a parameter which enlarges the time the splash
screen is shown.

Maybe someone has a nice idea for a splash screen picture.
We could also print text on it, something like this
"This is LyX 1.5 alpha! You will die if you rely."

Peter
Index: src/frontends/qt4/QSplash.C
===================================================================
--- src/frontends/qt4/QSplash.C (revision 0)
+++ src/frontends/qt4/QSplash.C (revision 0)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+/**
+ * \file QSplash.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Peter Kümmel
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#include <config.h>
+
+#include <splash.h>
+#include <support/filetools.h> // LibFileSearch
+#include "qt_helpers.h"
+#include <string>
+
+#include <QSplashScreen.h>
+#include <QTime>
+
+namespace lyx {
+
+QSplashScreen* qsp = 0;
+
+void Splash::init()
+{
+       if (qsp == 0)
+               qsp = new QSplashScreen;
+}
+
+void Splash::show()
+{      
+       if (qsp == 0)
+               init();
+       std::string const file = support::libFileSearch("images", "banner", 
"ppm");
+       if (file.empty())
+               return;
+
+       QPixmap pm(toqstr(file));
+       qsp->setPixmap(pm);
+       qsp->show();
+}
+
+void Splash::finish(int secs)
+{
+       if (qsp == 0)
+               return;
+       QTime t = QTime::currentTime().addSecs(secs);
+       while (t > QTime::currentTime())
+       {
+       }
+       delete qsp;
+}
+
+
+} // namespace lyx
+
+

Property changes on: src/frontends/qt4/QSplash.C
___________________________________________________________________
Name: svn:eol-style
   + native

Index: src/frontends/qt4/GuiApplication.C
===================================================================
--- src/frontends/qt4/GuiApplication.C  (revision 15912)
+++ src/frontends/qt4/GuiApplication.C  (working copy)
@@ -13,6 +13,7 @@
 #include <config.h>
 
 #include "GuiApplication.h"
+#include "splash.h"
 
 #include "qt_helpers.h"
 #include "QLImage.h"
@@ -93,6 +94,10 @@
 GuiApplication::GuiApplication(int & argc, char ** argv)
        : QApplication(argc, argv), Application(argc, argv)
 {
+       // show splashscreen as early as possible: 
+       // after the creation of QApplication
+       lyx::Splash::show();
+
 #ifdef Q_WS_X11
        // doubleClickInterval() is 400 ms on X11 which is just too long.
        // On Windows and Mac OS X, the operating system's value is used.
Index: src/splash.h
===================================================================
--- src/splash.h        (revision 0)
+++ src/splash.h        (revision 0)
@@ -0,0 +1,29 @@
+// -*- C++ -*-
+/**
+ * \file splash.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Peter Kümmel
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef SPLASH_H
+#define SPLASH_H
+
+
+namespace lyx {
+
+struct Splash
+{
+       static void show();
+       static void finish(int secs);
+
+private:
+       static void init();
+};
+
+} // namespace lyx
+
+#endif // SPLASH_H

Property changes on: src/splash.h
___________________________________________________________________
Name: svn:eol-style
   + native

Index: src/lyx_main.C
===================================================================
--- src/lyx_main.C      (revision 15912)
+++ src/lyx_main.C      (working copy)
@@ -42,6 +42,7 @@
 #include "MenuBackend.h"
 #include "mover.h"
 #include "ToolbarBackend.h"
+#include "splash.h"
 
 #include "frontends/Alert.h"
 #include "frontends/Application.h"
@@ -328,6 +329,10 @@
                initGuiFont();
                // FIXME: this global pointer should probably go.
                theApp = pimpl_->application_.get();
+
+               // show the startup banner some more seconds and then delete it
+               lyx::Splash::finish(2);
+
                restoreGuiSession(files);
                // Start the real execution loop.
 

Reply via email to