#ifdef POPPLER
#include "PDFWidget.hh"
#endif
+#include <QPrinter>
+#include <QPrintDialog>
+#include <QWebInspector>
+#include <QWebFrame>
+#include <QWebHistory>
//#include "Viewer.mpp"
#define prefix_
{}
prefix_ QObject * PDFWebPluginFactory::create(QString const & mimeType, QUrl const & url,
- QStringList const & /* argumentNames */,
- QStringList const & /* argumentValues */)
+ QStringList const & argumentNames,
+ QStringList const & argumentValues)
const
{
if (mimeType == "application/pdf") {
- pykit::PDFWidget * plugin = new pykit::PDFWidget(manager_);
+ int idix (argumentNames.indexOf("id"));
+ QString id;
+ if (idix>0)
+ id = argumentValues[idix];
+ pykit::PDFWidget * plugin = new pykit::PDFWidget(
+ id, manager_, dynamic_cast<QWidget*>(parent()));
plugin->load(url);
return plugin;
}
///////////////////////////////////////////////////////////////////////////
// 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
page()->setPluginFactory(new PDFWebPluginFactory (page()->networkAccessManager(), this));
#endif
+ connect(page(), SIGNAL(printRequested(QWebFrame*)), this, SLOT(printRequested()));
load(url);
+ inspector_ = new QWebInspector();
+ inspector_->setPage(page());
+ connect(page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
+ this, SLOT(initJSObjects()));
+ initJSObjects();
+}
+
+prefix_ pykit::Viewer::~Viewer()
+{
+ if (inspector_)
+ 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;
+ QPrintDialog printDialog(&printer, this);
+ if (printDialog.exec() == QPrintDialog::Accepted) {
+ print(&printer);
+ }
}
///////////////////////////////cc.e////////////////////////////////////////