Separate Viewer from MainWindow and implement PDF embedding
[pykit.git] / main.cc
1 // $Id$
2 //
3 // Copyright (C) 2010
4 //     Stefan Bund <info@j32.de>
5
6 /** \file
7     \brief main non-inline non-template implementation */
8
9 //#include "main.hh"
10 //#include "main.ih"
11
12 // Custom includes
13 #include <stdlib.h>
14 #include <iostream>
15 #include <QApplication>
16 #include <QSplashScreen>
17 #include <QSettings>
18 #include <boost/scoped_ptr.hpp>
19 #include "MainWindow.hh"
20 #include "PythonPublisher.hh"
21
22 //#include "main.mpp"
23 #define prefix_
24 ///////////////////////////////cc.p////////////////////////////////////////
25
26 int main(int argc, char *argv[])
27 {
28     try {
29         QApplication app (argc, argv);
30
31         QSettings settings ("pykit.ini", QSettings::IniFormat);
32         QStringList arguments (app.arguments());
33         settings.beginGroup("AppData");
34
35         app.setApplicationName(settings.value("name").toString());
36         app.setApplicationVersion(settings.value("version").toString());
37         app.setOrganizationDomain(settings.value("organization").toString());
38         app.setOrganizationName(settings.value("organization").toString());
39
40         QString splashPath (settings.value("splash").toString());
41         boost::scoped_ptr<QSplashScreen> splash;
42         if (!splashPath.isEmpty()) {
43             QPixmap splashPixmap (settings.value("splash").toString());
44             splash.reset(new QSplashScreen (splashPixmap));
45             splash->show();
46         }
47
48         QString iconPath (settings.value("icon").toString());
49
50         settings.endGroup();
51         settings.beginGroup("Viewer");
52
53         pykit::PythonPublisher publisher (settings.value("init").toString().toStdString());
54
55         QString url (settings.value("home").toString());
56         if (arguments.size()>1)
57             url = arguments.at(1);
58         pykit::MainWindow window (QUrl(url), &publisher);
59         window.setWindowTitle(app.applicationName());
60         if (!iconPath.isEmpty())
61             window.setWindowIcon(QIcon(iconPath));
62         window.setWindowIconText(window.windowTitle());
63
64         window.show();
65         if (splash)
66             splash->finish(&window);
67
68         return app.exec();
69     }
70     catch (std::exception & ex) {
71         std::cerr << "Exception:\n" << ex.what() << "\n";
72         throw;
73     }
74 }
75
76 ///////////////////////////////cc.e////////////////////////////////////////
77 #undef prefix_
78 //#include "main.mpp"
79
80 \f
81 // Local Variables:
82 // mode: c++
83 // fill-column: 100
84 // comment-column: 40
85 // c-file-style: "j32"
86 // indent-tabs-mode: nil
87 // ispell-local-dictionary: "american"
88 // compile-command: "scons -U"
89 // End: