@@ -36,7 +36,7 @@ StatAnalysis::StatAnalysis(QWidget* parent, bool isStandalone) : QMainWindow(par
3636 restoreState (settingsFile->value (QStringLiteral (" windowState" )).toByteArray ());
3737
3838 QIcon img;
39- img = QIcon (" :/assets/buttons/openImage .png" );
39+ img = QIcon (" :/assets/buttons/openFile .png" );
4040 QAction* openAction = new QAction (img, tr (" &Open" ), this );
4141 openAction->setShortcuts (QKeySequence::Open);
4242 openAction->setStatusTip (tr (" Open tracking data" ));
@@ -64,12 +64,28 @@ StatAnalysis::StatAnalysis(QWidget* parent, bool isStandalone) : QMainWindow(par
6464 QList<int > objects = trackingData->getId (0 , trackingData->maxFrameIndex );
6565 initPlots (objects);
6666 emit ui->objectAll ->clicked (true );
67- scale->setText (QString (" 1px = %1m and 1 timestep = %2s" ).arg (QString::number (ruler), QString::number (timeScale)));
67+ scale->setText (QStringLiteral (" 1px = %1m and 1 timestep = %2s" ).arg (QString::number (ruler), QString::number (timeScale)));
6868 }
6969 }
7070 });
7171 ui->toolBar ->addAction (optionAction);
7272
73+ img = QIcon (" :/assets/buttons/save.png" );
74+ QAction* saveAction = new QAction (img, tr (" &Save" ), this );
75+ saveAction->setShortcuts (QKeySequence::Open);
76+ saveAction->setStatusTip (tr (" Save current graph" ));
77+ connect (saveAction, &QAction::triggered, this , [this ]() {
78+ QString file = QFileDialog::getSaveFileName (this , tr (" Save current graph" ), memoryDir, tr (" Image (*.png)" ));
79+ if (!file.isEmpty ()) {
80+ QWidget* chartView = ui->tabPlot ->currentWidget ();
81+ QPixmap p (chartView->size ());
82+ chartView->render (&p);
83+ p.save (file, " PNG" );
84+ memoryDir = file;
85+ }
86+ });
87+ ui->toolBar ->addAction (saveAction);
88+
7389 connect (ui->objectAll , &QPushButton::clicked, this , [this ](bool state) {
7490 for (int i = 0 ; i < ui->objectList ->rowCount (); i++) {
7591 QCheckBox* object = qobject_cast<QCheckBox*>(ui->objectList ->cellWidget (i, 0 ));
@@ -221,7 +237,7 @@ void StatAnalysis::initPlots(const QList<int>& objects) {
221237 velocity.append (x);
222238 std::sort (x.begin (), x.end ());
223239 QBoxPlotSeries* displacements = new QBoxPlotSeries ();
224- QBoxSet* set = new QBoxSet (" " ); // " " Avoid number label on xaxis
240+ QBoxSet* set = new QBoxSet (QStringLiteral ( " " ) ); // " " Avoid number label on xaxis
225241 set->setValue (QBoxSet::LowerExtreme, x.first () * ruler);
226242 set->setValue (QBoxSet::UpperExtreme, x.last () * ruler);
227243 set->setValue (QBoxSet::Median, median (0 , x.size (), x) * ruler);
0 commit comments