Files
@ aa3c57d8443c
Branch filter:
Location: tempo-plotter/snapshotview.cpp
aa3c57d8443c
2.7 KiB
text/x-c++hdr
implemented snapshot export
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | #include "snapshotview.h"
#include "ui_snapshotview.h"
#include <QSaveFile>
SnapShotView::SnapShotView(QWidget *parent, SnapShot* snapShot) :
QMainWindow(parent),
ui(new Ui::SnapShotView),
renameDialog(this)
{
_snapShot = snapShot;
ui->setupUi(this);
ui->menuSnapshot->addAction(snapShot->deleteAction());
this->setWindowTitle(snapShot->name());
unsigned numOfChannels = snapShot->data.size();
for (unsigned ci = 0; ci < numOfChannels; ci++)
{
QwtPlotCurve* curve = new QwtPlotCurve();
curves.append(curve);
curve->setSamples(snapShot->data[ci]);
curve->setPen(Plot::makeColor(ci));
curve->attach(ui->plot);
}
renameDialog.setWindowTitle("Rename Snapshot");
renameDialog.setLabelText("Enter new name:");
connect(ui->actionRename, &QAction::triggered,
this, &SnapShotView::showRenameDialog);
connect(ui->actionExport, &QAction::triggered,
this, &SnapShotView::save);
}
SnapShotView::~SnapShotView()
{
for (auto curve : curves)
{
delete curve;
}
delete ui;
}
void SnapShotView::closeEvent(QCloseEvent *event)
{
QMainWindow::closeEvent(event);
emit closed();
}
void SnapShotView::showRenameDialog()
{
renameDialog.setTextValue(_snapShot->name());
renameDialog.open(this, SLOT(renameSnapshot(QString)));
}
void SnapShotView::renameSnapshot(QString name)
{
_snapShot->setName(name);
setWindowTitle(name);
}
void SnapShotView::save()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("Export CSV File"));
// TODO: remove code duplication (MainWindow::onExportCsv)
QSaveFile file(fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text))
{
QTextStream fileStream(&file);
unsigned numOfChannels = _snapShot->data.size();
unsigned numOfSamples = _snapShot->data[0].size();
// print header
for (unsigned int ci = 0; ci < numOfChannels; ci++)
{
fileStream << "Channel " << ci;
if (ci != numOfChannels-1) fileStream << ",";
}
fileStream << '\n';
// print rows
for (unsigned int i = 0; i < numOfSamples; i++)
{
for (unsigned int ci = 0; ci < numOfChannels; ci++)
{
fileStream << _snapShot->data[ci][i].y();
if (ci != numOfChannels-1) fileStream << ",";
}
fileStream << '\n';
}
if (!file.commit())
{
qCritical() << "File save error during snapshot save: " << file.error();
}
}
else
{
qCritical() << "File open error during snapshot save: " << file.error();
}
}
|