]> git.cworth.org Git - vogl/blob - src/vogleditor/vogleditor_qtrimdialog.cpp
UI: Add ability to trim files directly from vogleditor
[vogl] / src / vogleditor / vogleditor_qtrimdialog.cpp
1 #include "vogleditor_qtrimdialog.h"
2 #include "ui_vogleditor_qtrimdialog.h"
3 #include <QFileDialog>
4
5 vogleditor_QTrimDialog::vogleditor_QTrimDialog(QString parentTraceFile, uint maxFrameIndex, uint maxTrimLength, QWidget *parent) :
6     QDialog(parent),
7     ui(new Ui::vogleditor_QTrimDialog),
8     m_maxFrameIndex(maxFrameIndex),
9     m_maxTrimLength(maxTrimLength),
10     m_trim_frame("0"),
11     m_trim_len("1")
12 {
13     ui->setupUi(this);
14     ui->trimFrameLineEdit->setText(m_trim_frame);
15     ui->trimLenLineEdit->setText(m_trim_len);
16
17     QString trimFilename = parentTraceFile;
18     trimFilename.insert(trimFilename.lastIndexOf("."), "-trim");
19     ui->trimFileLineEdit->setText(trimFilename);
20 }
21
22 vogleditor_QTrimDialog::~vogleditor_QTrimDialog()
23 {
24     delete ui;
25 }
26
27 void vogleditor_QTrimDialog::on_buttonBox_accepted()
28 {
29     // verify all input
30     bool bValidFrame = false;
31     uint tmpFrame = ui->trimFrameLineEdit->text().toUInt(&bValidFrame);
32     bValidFrame = bValidFrame && (tmpFrame <= m_maxFrameIndex);
33
34     bool bValidLen = false;
35     uint tmpLen = ui->trimLenLineEdit->text().toUInt(&bValidLen);
36     bValidLen = bValidLen && (tmpLen > 0 && tmpLen < m_maxTrimLength);
37
38     bool bValidFile = (ui->trimFrameLineEdit->text().isEmpty() == false);
39
40     if (bValidFrame && bValidLen && bValidFile)
41     {
42         m_trim_frame = ui->trimFrameLineEdit->text();
43         m_trim_len = ui->trimLenLineEdit->text();
44         m_trim_file = ui->trimFileLineEdit->text();
45         accept();
46     }
47 }
48
49 void vogleditor_QTrimDialog::on_buttonBox_rejected()
50 {
51     reject();
52 }
53
54 void vogleditor_QTrimDialog::on_pickTrimFileButton_pressed()
55 {
56     // open file dialog
57     QString suggestedName = ui->trimFileLineEdit->text();
58     QString selectedName = QFileDialog::getSaveFileName(this, tr("Save Trim File"), suggestedName, tr("Trace file (*.bin)"));
59
60     if (!selectedName.isEmpty())
61     {
62         ui->trimFileLineEdit->setText(selectedName);
63     }
64 }
65
66 void vogleditor_QTrimDialog::on_trimLenLineEdit_textChanged(const QString &arg1)
67 {
68     bool bConverted = false;
69     uint trimLen = arg1.toUInt(&bConverted);
70
71     // make sure the length could be converted to a UINT, and that it isn't more than the allowed length
72     if (bConverted == false || trimLen > m_maxTrimLength)
73     {
74         // turn background red
75         QPalette palette(ui->trimLenLineEdit->palette());
76         palette.setColor(QPalette::Base, Qt::red);
77         ui->trimLenLineEdit->setPalette(palette);
78     }
79     else
80     {
81         // restore background color
82         QPalette palette(ui->trimLenLineEdit->palette());
83         palette.setColor(QPalette::Base, Qt::white);
84         ui->trimLenLineEdit->setPalette(palette);
85     }
86 }
87
88 void vogleditor_QTrimDialog::on_trimFrameLineEdit_textChanged(const QString &arg1)
89 {
90     bool bConverted = false;
91     uint trimFrame = arg1.toUInt(&bConverted);
92
93     // make sure frame could be converted to a UINT, and that it isn't greater than the number of frames in the trace
94     if (bConverted == false || trimFrame > m_maxFrameIndex)
95     {
96         // turn background red
97         QPalette palette(ui->trimFrameLineEdit->palette());
98         palette.setColor(QPalette::Base, Qt::red);
99         ui->trimFrameLineEdit->setPalette(palette);
100     }
101     else
102     {
103         // restore background color
104         QPalette palette(ui->trimFrameLineEdit->palette());
105         palette.setColor(QPalette::Base, Qt::white);
106         ui->trimFrameLineEdit->setPalette(palette);
107     }
108 }