disable loading of external plugins
[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 <QDir>
19 #include <QFileInfo>
20 #include <QFontDatabase>
21 #include <boost/scoped_ptr.hpp>
22 #include "MainWindow.hh"
23 #include "PythonPublisher.hh"
24
25 //#include "main.mpp"
26 #define prefix_
27 ///////////////////////////////cc.p////////////////////////////////////////
28
29 extern void qt_drt_overwritePluginDirectories();
30
31 int main(int argc, char *argv[])
32 {
33     try {
34         QApplication app (argc, argv);
35
36         QSettings settings ("pykit.ini", QSettings::IniFormat);
37         QStringList arguments (app.arguments());
38         settings.beginGroup("AppData");
39
40         app.setApplicationName(settings.value("name").toString());
41         app.setApplicationVersion(settings.value("version").toString());
42         app.setOrganizationDomain(settings.value("organization").toString());
43         app.setOrganizationName(settings.value("organization").toString());
44
45         QString splashPath (settings.value("splash").toString());
46         boost::scoped_ptr<QSplashScreen> splash;
47         if (!splashPath.isEmpty()) {
48             QPixmap splashPixmap (settings.value("splash").toString());
49             splash.reset(new QSplashScreen (splashPixmap));
50             splash->show();
51         }
52
53         QString iconPath (settings.value("icon").toString());
54
55         settings.endGroup();
56
57         settings.beginGroup("Fonts");
58         QString loadFontDir (settings.value("loaddir").toString());
59         if (!loadFontDir.isEmpty()) {
60             QDir dir (loadFontDir);
61             if (dir.exists()) {
62                 QFileInfoList files (dir.entryInfoList(QDir::Files));
63                 for (QFileInfoList::iterator i (files.begin()), i_end (files.end());
64                      i != i_end; ++i)
65                     QFontDatabase::addApplicationFont(i->absoluteFilePath());
66             }
67             else
68                 std::cerr << "WARNING: Font directory not found" << std::endl;
69         }
70         settings.endGroup();
71
72         settings.beginGroup("Viewer");
73
74         pykit::PythonPublisher publisher;
75         qt_drt_overwritePluginDirectories();
76
77         QString url (settings.value("home").toString());
78         if (arguments.size()>1)
79             url = arguments.at(1);
80         pykit::MainWindow window (QUrl(url), &publisher);
81         window.setWindowTitle(app.applicationName());
82         if (!iconPath.isEmpty())
83             window.setWindowIcon(QIcon(iconPath));
84         window.setWindowIconText(window.windowTitle());
85
86         window.show();
87         if (splash)
88             splash->finish(&window);
89
90         return app.exec();
91     }
92     catch (std::exception & ex) {
93         std::cerr << "Exception:\n" << ex.what() << "\n";
94         throw;
95     }
96 }
97
98 ///////////////////////////////cc.e////////////////////////////////////////
99 #undef prefix_
100 //#include "main.mpp"
101
102 \f
103 // Local Variables:
104 // mode: c++
105 // fill-column: 100
106 // comment-column: 40
107 // c-file-style: "j32"
108 // indent-tabs-mode: nil
109 // ispell-local-dictionary: "american"
110 // compile-command: "scons -U"
111 // End: