4 // Stefan Bund <info@j32.de>
7 \brief main non-inline non-template implementation */
15 #include <QApplication>
16 #include <QSplashScreen>
20 #include <QFontDatabase>
21 #include <QWebSettings>
22 #include <boost/scoped_ptr.hpp>
23 #include "MainWindow.hh"
24 #include "PythonPublisher.hh"
28 ///////////////////////////////cc.p////////////////////////////////////////
30 extern void qt_drt_overwritePluginDirectories();
33 QSize parseSize(QString const & s)
35 QStringList coords (s.split(" "));
36 if (coords.size() != 2)
38 return QSize(coords[0].toInt(), coords[1].toInt());
42 int main(int argc, char *argv[])
45 QApplication app (argc, argv);
47 QSettings settings ("pykit.ini", QSettings::IniFormat);
48 QStringList arguments (app.arguments());
49 settings.beginGroup("AppData");
51 app.setApplicationName(settings.value("name").toString());
52 app.setApplicationVersion(settings.value("version").toString());
53 app.setOrganizationDomain(settings.value("organization").toString());
54 app.setOrganizationName(settings.value("organization").toString());
55 char * pluginsPath (getenv("PYKIT_PLUGIN_PATH"));
57 app.setLibraryPaths(QString(pluginsPath).split(":"));
59 QString splashPath (settings.value("splash").toString());
60 boost::scoped_ptr<QSplashScreen> splash;
61 if (!splashPath.isEmpty()) {
62 QPixmap splashPixmap (settings.value("splash").toString());
63 splash.reset(new QSplashScreen (splashPixmap));
67 QString iconPath (settings.value("icon").toString());
71 settings.beginGroup("Fonts");
72 QString loadFontDir (settings.value("loaddir").toString());
73 if (!loadFontDir.isEmpty()) {
74 QDir dir (loadFontDir);
76 QFileInfoList files (dir.entryInfoList(QDir::Files));
77 for (QFileInfoList::iterator i (files.begin()), i_end (files.end());
79 QFontDatabase::addApplicationFont(i->absoluteFilePath());
82 std::cerr << "WARNING: Font directory not found" << std::endl;
86 settings.beginGroup("Viewer");
88 pykit::PythonPublisher publisher;
89 qt_drt_overwritePluginDirectories();
91 QString url (settings.value("home").toString());
92 if (arguments.size()>1)
93 url = arguments.at(1);
95 if (settings.value("debug").toBool())
96 QWebSettings::globalSettings()->setAttribute(
97 QWebSettings::DeveloperExtrasEnabled, true);
98 pykit::MainWindow window (QUrl(url), &publisher);
99 window.setWindowTitle(app.applicationName());
100 if (!iconPath.isEmpty())
101 window.setWindowIcon(QIcon(iconPath));
102 window.setWindowIconText(window.windowTitle());
104 window.setMinimumSize(parseSize(settings.value("minsize").toString()));
105 window.resize(parseSize(settings.value("size").toString()));
109 splash->finish(&window);
113 catch (std::exception & ex) {
114 std::cerr << "Exception:\n" << ex.what() << "\n";
119 ///////////////////////////////cc.e////////////////////////////////////////
121 //#include "main.mpp"
127 // comment-column: 40
128 // c-file-style: "j32"
129 // indent-tabs-mode: nil
130 // ispell-local-dictionary: "american"
131 // compile-command: "make"