typo fix
[pykit.git] / Viewer.cc
index 46b8419..03e8452 100644 (file)
--- a/Viewer.cc
+++ b/Viewer.cc
@@ -19,6 +19,8 @@
 #include <QPrinter>
 #include <QPrintDialog>
 #include <QWebInspector>
+#include <QWebFrame>
+#include <QWebHistory>
 
 //#include "Viewer.mpp"
 #define prefix_
@@ -94,10 +96,17 @@ prefix_ QList<QWebPluginFactory::Plugin> PDFWebPluginFactory::plugins()
 ///////////////////////////////////////////////////////////////////////////
 // pykit::Viewer
 
+namespace {
+    pykit::Viewer * instance_ (0);
+}
+
 prefix_ pykit::Viewer::Viewer(QUrl const & url, Publisher * publisher, QWidget * parent)
     : QWebView (parent)
 {
+    instance_ = this;
     QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true);
+    if (! QWebSettings::globalSettings()->testAttribute(QWebSettings::DeveloperExtrasEnabled))
+        setContextMenuPolicy(Qt::NoContextMenu);
     page()->setNetworkAccessManager(
         new InternalNetworkAccessManager(page()->networkAccessManager(), this, publisher));
 #ifdef POPPLER
@@ -107,6 +116,9 @@ prefix_ pykit::Viewer::Viewer(QUrl const & url, Publisher * publisher, QWidget *
     load(url);
     inspector_ = new QWebInspector();
     inspector_->setPage(page());
+    connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
+            this, SLOT(initJSObjects()));
+    initJSObjects();
 }
 
 prefix_ pykit::Viewer::~Viewer()
@@ -115,6 +127,26 @@ prefix_ pykit::Viewer::~Viewer()
         delete inspector_;
 }
 
+prefix_ pykit::Viewer * pykit::Viewer::instance()
+{
+    return instance_;
+}
+
+prefix_ bool pykit::Viewer::canGoBack()
+{
+    return page()->history()->canGoBack();
+}
+
+prefix_ bool pykit::Viewer::canGoForward()
+{
+    return page()->history()->canGoForward();
+}
+
+prefix_ void pykit::Viewer::initJSObjects()
+{
+    page()->mainFrame()->addToJavaScriptWindowObject("view", this);
+}
+
 prefix_ void pykit::Viewer::printRequested()
 {
     QPrinter printer;