From 143a58bccce1b8a4de9f80ce9402ac07c16471ce Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Thu, 28 Nov 2013 11:57:25 +0100 Subject: Added QGraphicsWebView to yosys-svgviewer --- libs/svgviewer/svgview.cpp | 56 +++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 16 deletions(-) (limited to 'libs/svgviewer/svgview.cpp') diff --git a/libs/svgviewer/svgview.cpp b/libs/svgviewer/svgview.cpp index d41f542d0..8c11098b6 100644 --- a/libs/svgviewer/svgview.cpp +++ b/libs/svgviewer/svgview.cpp @@ -56,6 +56,7 @@ SvgView::SvgView(QWidget *parent) : QGraphicsView(parent) , m_renderer(Native) , m_svgItem(0) + , m_webview(0) , m_backgroundItem(0) , m_outlineItem(0) { @@ -91,35 +92,44 @@ void SvgView::openFile(const QFile &file) QGraphicsScene *s = scene(); + fn = file.fileName(); + if (fn[0] != '/') { + char cwd_buffer[4096]; + if (getcwd(cwd_buffer, 4096) != NULL) + fn = cwd_buffer + ("/" + fn); + } + bool drawBackground = (m_backgroundItem ? m_backgroundItem->isVisible() : false); bool drawOutline = (m_outlineItem ? m_outlineItem->isVisible() : true); + bool useWebview = (m_webview ? m_webview->isVisible() : false); s->clear(); resetTransform(); -#if 0 - QGraphicsWebView *webview = new QGraphicsWebView(); - QString fn = file.fileName(); - if (fn[0] != '/') { - char cwd_buffer[4096]; - if (getcwd(cwd_buffer, 4096) != NULL) - fn = cwd_buffer + ("/" + fn); - } - webview->load(QUrl::fromLocalFile(fn)); - webview->setResizesToContents(true); - m_svgItem = webview; -#else m_svgItem = new QGraphicsSvgItem(file.fileName()); -#endif m_svgItem->setFlags(QGraphicsItem::ItemClipsToShape); m_svgItem->setCacheMode(QGraphicsItem::NoCache); + m_svgItem->setVisible(!useWebview); m_svgItem->setZValue(1); + s->addItem(m_svgItem); + + if (useWebview) { + m_webview = new QGraphicsWebView(); + m_webview->load(QUrl::fromLocalFile(fn)); + m_webview->setResizesToContents(true); + m_webview->setZoomFactor(0.75); + m_webview->setVisible(useWebview); + m_webview->setZValue(1); + s->addItem(m_webview); + } else + m_webview = NULL; m_backgroundItem = new QGraphicsRectItem(m_svgItem->boundingRect()); m_backgroundItem->setBrush(Qt::white); m_backgroundItem->setPen(Qt::NoPen); m_backgroundItem->setVisible(drawBackground); m_backgroundItem->setZValue(0); + s->addItem(m_backgroundItem); m_outlineItem = new QGraphicsRectItem(m_svgItem->boundingRect()); QPen outline(Qt::black, 2, Qt::DashLine); @@ -128,9 +138,6 @@ void SvgView::openFile(const QFile &file) m_outlineItem->setBrush(Qt::NoBrush); m_outlineItem->setVisible(drawOutline); m_outlineItem->setZValue(2); - - s->addItem(m_backgroundItem); - s->addItem(m_svgItem); s->addItem(m_outlineItem); s->setSceneRect(m_outlineItem->boundingRect().adjusted(-10, -10, 10, 10)); @@ -158,6 +165,23 @@ void SvgView::setHighQualityAntialiasing(bool highQualityAntialiasing) #endif } +void SvgView::setViewInteractive(bool enable) +{ + if (!m_svgItem) + return; + if (!m_webview) { + m_webview = new QGraphicsWebView(); + m_webview->load(QUrl::fromLocalFile(fn)); + m_webview->setResizesToContents(true); + m_webview->setZoomFactor(0.75); + m_webview->setVisible(false); + m_webview->setZValue(1); + m_svgItem->scene()->addItem(m_webview); + } + m_svgItem->setVisible(!enable); + m_webview->setVisible(enable); +} + void SvgView::setViewBackground(bool enable) { if (!m_backgroundItem) -- cgit v1.2.3