From 3e95c57317c8cea5f40a546b8dff9d2b63211611 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 27 Feb 2020 09:37:09 +0100 Subject: Add SVG option to gui --- gui/base.qrc | 1 + gui/basewindow.cc | 27 +++++++++++++++++++++++++++ gui/basewindow.h | 2 ++ gui/resources/save_svg.png | Bin 0 -> 1569 bytes 4 files changed, 30 insertions(+) create mode 100644 gui/resources/save_svg.png (limited to 'gui') diff --git a/gui/base.qrc b/gui/base.qrc index 0671fa9e..509a584f 100644 --- a/gui/base.qrc +++ b/gui/base.qrc @@ -30,5 +30,6 @@ resources/group.png resources/camera.png resources/film.png + resources/save_svg.png diff --git a/gui/basewindow.cc b/gui/basewindow.cc index 7f767c58..91edc310 100644 --- a/gui/basewindow.cc +++ b/gui/basewindow.cc @@ -266,6 +266,11 @@ void BaseMainWindow::createMenusAndBars() actionMovie->setChecked(false); connect(actionMovie, &QAction::triggered, this, &BaseMainWindow::saveMovie); + actionSaveSVG = new QAction("Save SVG", this); + actionSaveSVG->setIcon(QIcon(":/icons/resources/save_svg.png")); + actionSaveSVG->setStatusTip("Saving a SVG"); + connect(actionSaveSVG, &QAction::triggered, this, &BaseMainWindow::saveSVG); + // set initial state fpgaView->enableDisableDecals(actionDisplayBel->isChecked(), actionDisplayWire->isChecked(), actionDisplayPip->isChecked(), actionDisplayGroups->isChecked()); @@ -334,6 +339,7 @@ void BaseMainWindow::createMenusAndBars() deviceViewToolBar->addSeparator(); deviceViewToolBar->addAction(actionScreenshot); deviceViewToolBar->addAction(actionMovie); + deviceViewToolBar->addAction(actionSaveSVG); // Add status bar with progress bar statusBar = new QStatusBar(); @@ -416,6 +422,27 @@ void BaseMainWindow::saveMovie() fpgaView->movieStop(); } } + +void BaseMainWindow::saveSVG() +{ + QString fileName = QFileDialog::getSaveFileName(this, QString("Save SVG"), QString(), QString("*.svg")); + if (!fileName.isEmpty()) { + if (!fileName.endsWith(".svg")) + fileName += ".svg"; + bool ok; + QString options = + QInputDialog::getText(this, "Save SVG", tr("Save options:"), QLineEdit::Normal, "scale=500", &ok); + if (ok) { + try { + ctx->writeSVG(fileName.toStdString(), options.toStdString()); + log("Saving SVG successful.\n"); + } catch (const log_execution_error_exception &ex) { + log("Saving SVG failed.\n"); + } + } + } +} + void BaseMainWindow::pack_finished(bool status) { disableActions(); diff --git a/gui/basewindow.h b/gui/basewindow.h index fe9dfdf2..f90991e1 100644 --- a/gui/basewindow.h +++ b/gui/basewindow.h @@ -85,6 +85,7 @@ class BaseMainWindow : public QMainWindow void screenshot(); void saveMovie(); + void saveSVG(); Q_SIGNALS: void contextChanged(Context *ctx); @@ -134,6 +135,7 @@ class BaseMainWindow : public QMainWindow QAction *actionScreenshot; QAction *actionMovie; + QAction *actionSaveSVG; }; NEXTPNR_NAMESPACE_END diff --git a/gui/resources/save_svg.png b/gui/resources/save_svg.png new file mode 100644 index 00000000..c7a5da5e Binary files /dev/null and b/gui/resources/save_svg.png differ -- cgit v1.2.3