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.cc65
1 files changed, 58 insertions, 7 deletions
diff --git a/gr-qtgui/lib/displayform.cc b/gr-qtgui/lib/displayform.cc
index 08ced9c913..e2475cb95e 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)
@@ -58,11 +60,11 @@ DisplayForm::DisplayForm(int nplots, QWidget* parent)
_marker_alpha_menu.push_back(new MarkerAlphaMenu(i, this));
connect(_line_title_act[i], SIGNAL(whichTrigger(int, const QString&)),
- this, SLOT(setTitle(int, const QString&)));
+ this, SLOT(setLineLabel(int, const QString&)));
for(int j = 0; j < _line_color_menu[i]->getNumActions(); j++) {
connect(_line_color_menu[i], SIGNAL(whichTrigger(int, const QString&)),
- this, SLOT(setColor(int, const QString&)));
+ this, SLOT(setLineColor(int, const QString&)));
}
for(int j = 0; j < _line_width_menu[i]->getNumActions(); j++) {
@@ -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
@@ -145,7 +153,7 @@ DisplayForm::mousePressEvent( QMouseEvent * e)
// Update the line titles if changed externally
for(int i = 0; i < _nplots; i++) {
- _lines_menu[i]->setTitle(_displayPlot->title(i));
+ _lines_menu[i]->setTitle(_displayPlot->lineLabel(i));
}
_menu->exec(e->globalPos());
}
@@ -185,16 +193,22 @@ DisplayForm::setUpdateTime(double t)
}
void
-DisplayForm::setTitle(int which, const QString &title)
+DisplayForm::setTitle(const QString &title)
+{
+ _displayPlot->setTitle(title);
+}
+
+void
+DisplayForm::setLineLabel(int which, const QString &label)
{
- _displayPlot->setTitle(which, title);
+ _displayPlot->setLineLabel(which, label);
}
void
-DisplayForm::setColor(int which, const QString &color)
+DisplayForm::setLineColor(int which, const QString &color)
{
QColor c = QColor(color);
- _displayPlot->setColor(which, c);
+ _displayPlot->setLineColor(which, c);
_displayPlot->replot();
}
@@ -273,3 +287,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;
+}