summaryrefslogtreecommitdiff
path: root/gr-qtgui/lib/displayform.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-qtgui/lib/displayform.cc')
-rw-r--r--gr-qtgui/lib/displayform.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/gr-qtgui/lib/displayform.cc b/gr-qtgui/lib/displayform.cc
index 92f7ca59b6..4daf5c76ef 100644
--- a/gr-qtgui/lib/displayform.cc
+++ b/gr-qtgui/lib/displayform.cc
@@ -22,6 +22,8 @@
#include <displayform.h>
#include <iostream>
+#include <QPixmap>
+#include <QFileDialog>
DisplayForm::DisplayForm(int nplots, QWidget* parent)
: QWidget(parent), _nplots(nplots), _systemSpecifiedFlag(false)
@@ -95,6 +97,12 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent)
_menu->addMenu(_lines_menu[i]);
}
+
+ _save_act = new QAction("Save", this);
+ _save_act->setStatusTip(tr("Save Figure"));
+ connect(_save_act, SIGNAL(triggered()), this, SLOT(saveFigure()));
+ _menu->addAction(_save_act);
+
Reset();
// Create a timer to update plots at the specified rate
@@ -278,3 +286,40 @@ DisplayForm::setGrid()
else
setGrid(false);
}
+
+void
+DisplayForm::saveFigure()
+{
+ QPixmap qpix = QPixmap::grabWidget(this);
+
+ QString types = QString(tr("JPEG file (*.jpg);;Portable Network Graphics file (*.png);;Bitmap file (*.bmp);;TIFF file (*.tiff)"));
+
+ QString filename, filetype;
+ QFileDialog *filebox = new QFileDialog(0, "Save Image", "./", types);
+ filebox->setViewMode(QFileDialog::Detail);
+ if(filebox->exec()) {
+ filename = filebox->selectedFiles()[0];
+ filetype = filebox->selectedNameFilter();
+ }
+ else {
+ return;
+ }
+
+ if(filetype.contains(".jpg")) {
+ qpix.save(filename, "JPEG");
+ }
+ else if(filetype.contains(".png")) {
+ qpix.save(filename, "PNG");
+ }
+ else if(filetype.contains(".bmp")) {
+ qpix.save(filename, "BMP");
+ }
+ else if(filetype.contains(".tiff")) {
+ qpix.save(filename, "TIFF");
+ }
+ else {
+ qpix.save(filename, "JPEG");
+ }
+
+ delete filebox;
+}