add 'view' global JS object to main frame
[pykit.git] / main.cc
diff --git a/main.cc b/main.cc
index fcebd20..c4d4910 100644 (file)
--- a/main.cc
+++ b/main.cc
 #include <QApplication>
 #include <QSplashScreen>
 #include <QSettings>
+#include <QDir>
+#include <QFileInfo>
+#include <QFontDatabase>
+#include <QWebSettings>
 #include <boost/scoped_ptr.hpp>
 #include "MainWindow.hh"
 #include "PythonPublisher.hh"
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
 
+extern void qt_drt_overwritePluginDirectories();
+
+namespace {
+    QSize parseSize(QString const & s)
+    {
+        QStringList coords (s.split(" "));
+        if (coords.size() != 2)
+            return QSize();
+        return QSize(coords[0].toInt(), coords[1].toInt());
+    }
+}
+
 int main(int argc, char *argv[])
 {
     try {
@@ -36,6 +52,9 @@ int main(int argc, char *argv[])
         app.setApplicationVersion(settings.value("version").toString());
         app.setOrganizationDomain(settings.value("organization").toString());
         app.setOrganizationName(settings.value("organization").toString());
+        char * pluginsPath (getenv("PYKIT_PLUGIN_PATH"));
+        if (pluginsPath)
+            app.setLibraryPaths(QString(pluginsPath).split(":"));
 
         QString splashPath (settings.value("splash").toString());
         boost::scoped_ptr<QSplashScreen> splash;
@@ -48,19 +67,43 @@ int main(int argc, char *argv[])
         QString iconPath (settings.value("icon").toString());
 
         settings.endGroup();
+
+        settings.beginGroup("Fonts");
+        QString loadFontDir (settings.value("loaddir").toString());
+        if (!loadFontDir.isEmpty()) {
+            QDir dir (loadFontDir);
+            if (dir.exists()) {
+                QFileInfoList files (dir.entryInfoList(QDir::Files));
+                for (QFileInfoList::iterator i (files.begin()), i_end (files.end());
+                     i != i_end; ++i)
+                    QFontDatabase::addApplicationFont(i->absoluteFilePath());
+            }
+            else
+                std::cerr << "WARNING: Font directory not found" << std::endl;
+        }
+        settings.endGroup();
+
         settings.beginGroup("Viewer");
 
-        pykit::PythonPublisher publisher (settings.value("init").toString().toStdString());
+        pykit::PythonPublisher publisher;
+        qt_drt_overwritePluginDirectories();
 
         QString url (settings.value("home").toString());
         if (arguments.size()>1)
             url = arguments.at(1);
+
+        if (settings.value("debug").toBool())
+            QWebSettings::globalSettings()->setAttribute(
+                QWebSettings::DeveloperExtrasEnabled, true);
         pykit::MainWindow window (QUrl(url), &publisher);
         window.setWindowTitle(app.applicationName());
         if (!iconPath.isEmpty())
             window.setWindowIcon(QIcon(iconPath));
         window.setWindowIconText(window.windowTitle());
 
+        window.setMinimumSize(parseSize(settings.value("minsize").toString()));
+        window.resize(parseSize(settings.value("size").toString()));
+
         window.show();
         if (splash)
             splash->finish(&window);
@@ -85,5 +128,5 @@ int main(int argc, char *argv[])
 // c-file-style: "j32"
 // indent-tabs-mode: nil
 // ispell-local-dictionary: "american"
-// compile-command: "scons -U"
+// compile-command: "make"
 // End: