Files
        @ c8ad43700b6a
    
        
              Branch filter: 
        
    Location: tempo-plotter/snapshotview.cpp
        
            
            c8ad43700b6a
            2.8 KiB
            text/x-c++hdr
        
        
    
    refactored mainwindow to use plot menu items from Plot.menuActions
    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 107 108 109 110 111 112 113  | #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);
    for (auto a : ui->plot->menuActions())
    {
        ui->menuView->addAction(a);
    }
}
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"));
    if (fileName.isNull()) return; // user canceled
    // 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();
    }
}
 |