Refactored code so that frame file loading/saving is all done through
a unified interface. Updated file filters. Notched up version number.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#ifndef CONFIG
|
||||
#define CONFIG
|
||||
|
||||
#define VERSION 147
|
||||
#define VERSION 148
|
||||
|
||||
//try to keep this in sync.
|
||||
//SavvyCAN will complain if you connect a GVRET board with a revision
|
||||
|
||||
@@ -58,11 +58,11 @@ void FileComparatorWindow::writeSettings()
|
||||
void FileComparatorWindow::loadInterestedFile()
|
||||
{
|
||||
interestedFrames.clear();
|
||||
QString result = FrameFileIO::loadFrameFile(&interestedFrames);
|
||||
if (result.length() > 0)
|
||||
QString resultingFileName;
|
||||
if (FrameFileIO::loadFrameFile(resultingFileName, &interestedFrames))
|
||||
{
|
||||
ui->lblFirstFile->setText(result);
|
||||
interestedFilename = result;
|
||||
ui->lblFirstFile->setText(resultingFileName);
|
||||
interestedFilename = resultingFileName;
|
||||
if (interestedFrames.count() > 0 && referenceFrames.count() > 0) calculateDetails();
|
||||
}
|
||||
}
|
||||
@@ -70,8 +70,8 @@ void FileComparatorWindow::loadInterestedFile()
|
||||
void FileComparatorWindow::loadReferenceFile()
|
||||
{
|
||||
//secondFileFrames.clear();
|
||||
QString result = FrameFileIO::loadFrameFile(&referenceFrames);
|
||||
if (result.length() > 0)
|
||||
QString resultingFileName;
|
||||
if (FrameFileIO::loadFrameFile(resultingFileName, &referenceFrames))
|
||||
{
|
||||
ui->lblRefFrames->setText(QString::number(referenceFrames.length()));
|
||||
if (interestedFrames.count() > 0 && referenceFrames.count() > 0) calculateDetails();
|
||||
|
||||
+105
-13
@@ -7,21 +7,113 @@ FrameFileIO::FrameFileIO()
|
||||
|
||||
}
|
||||
|
||||
QString FrameFileIO::loadFrameFile(QVector<CANFrame>* frameCache)
|
||||
bool FrameFileIO::saveFrameFile(QString &fileName, const QVector<CANFrame>* frameCache)
|
||||
{
|
||||
QString filename;
|
||||
QFileDialog dialog(qApp->activeWindow());
|
||||
bool result = false;
|
||||
|
||||
QStringList filters;
|
||||
filters.append(QString(tr("GVRET Logs (*.csv *.CSV)")));
|
||||
filters.append(QString(tr("CRTD Logs (*.txt *.TXT)")));
|
||||
filters.append(QString(tr("Generic ID/Data CSV (*.csv *.CSV)")));
|
||||
filters.append(QString(tr("BusMaster Log (*.log *.LOG)")));
|
||||
filters.append(QString(tr("Microchip Log (*.can *.CAN)")));
|
||||
filters.append(QString(tr("Vector Trace Files (*.trace *.TRACE)")));
|
||||
filters.append(QString(tr("IXXAT MiniLog (*.csv *.CSV)")));
|
||||
filters.append(QString(tr("CAN-DO Log (*.can *.avc *.evc *.qcc *.CAN *.AVC *.EVC *.QCC)")));
|
||||
|
||||
dialog.setFileMode(QFileDialog::AnyFile);
|
||||
dialog.setNameFilters(filters);
|
||||
dialog.setViewMode(QFileDialog::Detail);
|
||||
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||
|
||||
if (dialog.exec() == QDialog::Accepted)
|
||||
{
|
||||
filename = dialog.selectedFiles()[0];
|
||||
|
||||
QProgressDialog progress(qApp->activeWindow());
|
||||
progress.setWindowModality(Qt::WindowModal);
|
||||
progress.setLabelText("Saving file...");
|
||||
progress.setCancelButton(0);
|
||||
progress.setRange(0,0);
|
||||
progress.setMinimumDuration(0);
|
||||
progress.show();
|
||||
|
||||
qApp->processEvents();
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[0])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = saveNativeCSVFile(filename, frameCache);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[1])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".txt";
|
||||
result = saveCRTDFile(filename, frameCache);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[2])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = saveGenericCSVFile(filename, frameCache);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[3])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".log";
|
||||
result = saveLogFile(filename, frameCache);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[4])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".log";
|
||||
result = saveMicrochipFile(filename, frameCache);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[5])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".trace";
|
||||
result = saveTraceFile(filename, frameCache);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[6])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = saveIXXATFile(filename, frameCache);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[7])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".can";
|
||||
result = saveCANDOFile(filename, frameCache);
|
||||
}
|
||||
|
||||
progress.cancel();
|
||||
|
||||
if (result)
|
||||
{
|
||||
QStringList fileList = filename.split('/');
|
||||
fileName = fileList[fileList.length() - 1];
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FrameFileIO::loadFrameFile(QString &fileName, QVector<CANFrame>* frameCache)
|
||||
{
|
||||
QString filename;
|
||||
QFileDialog dialog;
|
||||
bool result = false;
|
||||
|
||||
QStringList filters;
|
||||
filters.append(QString(tr("GVRET Logs (*.csv)")));
|
||||
filters.append(QString(tr("CRTD Logs (*.txt)")));
|
||||
filters.append(QString(tr("Generic ID/Data CSV (*.csv)")));
|
||||
filters.append(QString(tr("BusMaster Log (*.log)")));
|
||||
filters.append(QString(tr("Microchip Log (*.can)")));
|
||||
filters.append(QString(tr("Vector trace files (*.trace)")));
|
||||
filters.append(QString(tr("IXXAT MiniLog (*.csv)")));
|
||||
filters.append(QString(tr("CAN-DO Log (*.*)")));
|
||||
filters.append(QString(tr("GVRET Logs (*.csv *.CSV)")));
|
||||
filters.append(QString(tr("CRTD Logs (*.txt *.TXT)")));
|
||||
filters.append(QString(tr("Generic ID/Data CSV (*.csv *.CSV)")));
|
||||
filters.append(QString(tr("BusMaster Log (*.log *.LOG)")));
|
||||
filters.append(QString(tr("Microchip Log (*.can *.CAN)")));
|
||||
filters.append(QString(tr("Vector trace files (*.trace *.TRACE)")));
|
||||
filters.append(QString(tr("IXXAT MiniLog (*.csv *.CSV)")));
|
||||
filters.append(QString(tr("CAN-DO Log (*.avc *.can *.evc *.qcc *.AVC *.CAN *.EVC *.QCC)")));
|
||||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
dialog.setNameFilters(filters);
|
||||
@@ -55,12 +147,12 @@ QString FrameFileIO::loadFrameFile(QVector<CANFrame>* frameCache)
|
||||
if (result)
|
||||
{
|
||||
QStringList fileList = filename.split('/');
|
||||
filename = fileList[fileList.length() - 1];
|
||||
return filename;
|
||||
fileName = fileList[fileList.length() - 1];
|
||||
return true;
|
||||
}
|
||||
else return QString("");
|
||||
else return false;
|
||||
}
|
||||
return QString("");
|
||||
return false;
|
||||
}
|
||||
|
||||
//CRTD format from Mark Webb-Johnson / OVMS project
|
||||
|
||||
+2
-1
@@ -38,7 +38,8 @@ public:
|
||||
static bool saveTraceFile(QString, const QVector<CANFrame>*);
|
||||
static bool saveIXXATFile(QString, const QVector<CANFrame>*);
|
||||
static bool saveCANDOFile(QString, const QVector<CANFrame>*);
|
||||
static QString loadFrameFile(QVector<CANFrame>*);
|
||||
static bool loadFrameFile(QString &, QVector<CANFrame>*);
|
||||
static bool saveFrameFile(QString &, const QVector<CANFrame>*);
|
||||
|
||||
private:
|
||||
static QString unQuote(QString);
|
||||
|
||||
+15
-220
@@ -525,247 +525,42 @@ void MainWindow::changeBaudRates()
|
||||
void MainWindow::handleLoadFile()
|
||||
{
|
||||
QString filename;
|
||||
QFileDialog dialog(this);
|
||||
bool result = false;
|
||||
QVector<CANFrame> tempFrames;
|
||||
|
||||
QStringList filters;
|
||||
filters.append(QString(tr("GVRET Logs (*.csv)")));
|
||||
filters.append(QString(tr("CRTD Logs (*.txt)")));
|
||||
filters.append(QString(tr("Generic ID/Data CSV (*.csv)")));
|
||||
filters.append(QString(tr("BusMaster Log (*.log)")));
|
||||
filters.append(QString(tr("Microchip Log (*.can)")));
|
||||
filters.append(QString(tr("Vector Trace Files (*.trace)")));
|
||||
filters.append(QString(tr("IXXAT MiniLog (*.csv)")));
|
||||
filters.append(QString(tr("CAN-DO Log (*.*)")));
|
||||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
dialog.setNameFilters(filters);
|
||||
dialog.setViewMode(QFileDialog::Detail);
|
||||
|
||||
if (dialog.exec() == QDialog::Accepted)
|
||||
if (FrameFileIO::loadFrameFile(filename, &tempFrames))
|
||||
{
|
||||
filename = dialog.selectedFiles()[0];
|
||||
ui->canFramesView->scrollToTop();
|
||||
model->clearFrames();
|
||||
model->insertFrames(tempFrames);
|
||||
loadedFileName = filename;
|
||||
model->recalcOverwrite();
|
||||
ui->lbNumFrames->setText(QString::number(model->rowCount()));
|
||||
if (ui->cbAutoScroll->isChecked()) ui->canFramesView->scrollToBottom();
|
||||
|
||||
QVector<CANFrame> tempFrames;
|
||||
|
||||
QProgressDialog progress(this);
|
||||
progress.setWindowModality(Qt::WindowModal);
|
||||
progress.setLabelText("Loading file...");
|
||||
progress.setCancelButton(0);
|
||||
progress.setRange(0,0);
|
||||
progress.setMinimumDuration(0);
|
||||
progress.show();
|
||||
|
||||
qApp->processEvents();
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[0]) result = FrameFileIO::loadNativeCSVFile(filename, &tempFrames);
|
||||
if (dialog.selectedNameFilter() == filters[1]) result = FrameFileIO::loadCRTDFile(filename, &tempFrames);
|
||||
if (dialog.selectedNameFilter() == filters[2]) result = FrameFileIO::loadGenericCSVFile(filename, &tempFrames);
|
||||
if (dialog.selectedNameFilter() == filters[3]) result = FrameFileIO::loadLogFile(filename, &tempFrames);
|
||||
if (dialog.selectedNameFilter() == filters[4]) result = FrameFileIO::loadMicrochipFile(filename, &tempFrames);
|
||||
if (dialog.selectedNameFilter() == filters[5]) result = FrameFileIO::loadTraceFile(filename, &tempFrames);
|
||||
if (dialog.selectedNameFilter() == filters[6]) result = FrameFileIO::loadIXXATFile(filename, &tempFrames);
|
||||
if (dialog.selectedNameFilter() == filters[7]) result = FrameFileIO::loadCANDOFile(filename, &tempFrames);
|
||||
|
||||
progress.cancel();
|
||||
|
||||
if (result)
|
||||
{
|
||||
model->insertFrames(tempFrames);
|
||||
QStringList fileList = filename.split('/');
|
||||
loadedFileName = fileList[fileList.length() - 1];
|
||||
|
||||
model->recalcOverwrite();
|
||||
ui->lbNumFrames->setText(QString::number(model->rowCount()));
|
||||
if (ui->cbAutoScroll->isChecked()) ui->canFramesView->scrollToBottom();
|
||||
|
||||
updateFileStatus();
|
||||
emit framesUpdated(-2);
|
||||
}
|
||||
updateFileStatus();
|
||||
emit framesUpdated(-2);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::handleSaveFile()
|
||||
{
|
||||
QString filename;
|
||||
QFileDialog dialog(this);
|
||||
bool result = false;
|
||||
|
||||
QStringList filters;
|
||||
filters.append(QString(tr("GVRET Logs (*.csv)")));
|
||||
filters.append(QString(tr("CRTD Logs (*.txt)")));
|
||||
filters.append(QString(tr("Generic ID/Data CSV (*.csv)")));
|
||||
filters.append(QString(tr("BusMaster Log (*.log)")));
|
||||
filters.append(QString(tr("Microchip Log (*.can)")));
|
||||
filters.append(QString(tr("Vector Trace Files (*.trace)")));
|
||||
filters.append(QString(tr("IXXAT MiniLog (*.csv)")));
|
||||
filters.append(QString(tr("CAN-DO Log (*.can)")));
|
||||
|
||||
dialog.setFileMode(QFileDialog::AnyFile);
|
||||
dialog.setNameFilters(filters);
|
||||
dialog.setViewMode(QFileDialog::Detail);
|
||||
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||
|
||||
if (dialog.exec() == QDialog::Accepted)
|
||||
if (FrameFileIO::saveFrameFile(filename, model->getListReference()))
|
||||
{
|
||||
const QVector<CANFrame> *frames = model->getListReference();
|
||||
filename = dialog.selectedFiles()[0];
|
||||
|
||||
QProgressDialog progress(this);
|
||||
progress.setWindowModality(Qt::WindowModal);
|
||||
progress.setLabelText("Saving file...");
|
||||
progress.setCancelButton(0);
|
||||
progress.setRange(0,0);
|
||||
progress.setMinimumDuration(0);
|
||||
progress.show();
|
||||
|
||||
qApp->processEvents();
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[0])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = FrameFileIO::saveNativeCSVFile(filename, frames);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[1])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".txt";
|
||||
result = FrameFileIO::saveCRTDFile(filename, frames);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[2])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = FrameFileIO::saveGenericCSVFile(filename, frames);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[3])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".log";
|
||||
result = FrameFileIO::saveLogFile(filename, frames);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[4])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".log";
|
||||
result = FrameFileIO::saveMicrochipFile(filename, frames);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[5])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".trace";
|
||||
result = FrameFileIO::saveTraceFile(filename, frames);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[6])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = FrameFileIO::saveIXXATFile(filename, frames);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[7])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".can";
|
||||
result = FrameFileIO::saveCANDOFile(filename, frames);
|
||||
}
|
||||
|
||||
progress.cancel();
|
||||
|
||||
if (result)
|
||||
{
|
||||
QStringList fileList = filename.split('/');
|
||||
loadedFileName = fileList[fileList.length() - 1];
|
||||
updateFileStatus();
|
||||
}
|
||||
loadedFileName = filename;
|
||||
updateFileStatus();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::handleSaveFilteredFile()
|
||||
{
|
||||
QString filename;
|
||||
QFileDialog dialog(this);
|
||||
bool result = false;
|
||||
|
||||
QStringList filters;
|
||||
filters.append(QString(tr("GVRET Logs (*.csv)")));
|
||||
filters.append(QString(tr("CRTD Logs (*.txt)")));
|
||||
filters.append(QString(tr("Generic ID/Data CSV (*.csv)")));
|
||||
filters.append(QString(tr("BusMaster Log (*.log)")));
|
||||
filters.append(QString(tr("Microchip Log (*.log)")));
|
||||
filters.append(QString(tr("Vector Trace Files (*.trace)")));
|
||||
filters.append(QString(tr("IXXAT MiniLog (*.csv)")));
|
||||
filters.append(QString(tr("CAN-DO Log (*.can)")));
|
||||
|
||||
dialog.setFileMode(QFileDialog::AnyFile);
|
||||
dialog.setNameFilters(filters);
|
||||
dialog.setViewMode(QFileDialog::Detail);
|
||||
dialog.setAcceptMode(QFileDialog::AcceptSave);
|
||||
|
||||
if (dialog.exec() == QDialog::Accepted)
|
||||
if (FrameFileIO::saveFrameFile(filename, model->getFilteredListReference()))
|
||||
{
|
||||
const QVector<CANFrame> *frames = model->getFilteredListReference();
|
||||
filename = dialog.selectedFiles()[0];
|
||||
|
||||
QProgressDialog progress(this);
|
||||
progress.setWindowModality(Qt::WindowModal);
|
||||
progress.setLabelText("Saving filtered file...");
|
||||
progress.setCancelButton(0);
|
||||
progress.setRange(0,0);
|
||||
progress.setMinimumDuration(0);
|
||||
progress.show();
|
||||
|
||||
qApp->processEvents();
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[0])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = FrameFileIO::saveNativeCSVFile(filename, frames);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[1])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".txt";
|
||||
result = FrameFileIO::saveCRTDFile(filename, frames);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[2])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = FrameFileIO::saveGenericCSVFile(filename, frames);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[3])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".log";
|
||||
result = FrameFileIO::saveLogFile(filename, frames);
|
||||
}
|
||||
if (dialog.selectedNameFilter() == filters[4])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".log";
|
||||
result = FrameFileIO::saveMicrochipFile(filename, frames);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[5])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".trace";
|
||||
result = FrameFileIO::saveTraceFile(filename, frames);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[6])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".csv";
|
||||
result = FrameFileIO::saveIXXATFile(filename, frames);
|
||||
}
|
||||
|
||||
if (dialog.selectedNameFilter() == filters[7])
|
||||
{
|
||||
if (!filename.contains('.')) filename += ".can";
|
||||
result = FrameFileIO::saveCANDOFile(filename, frames);
|
||||
}
|
||||
|
||||
progress.cancel();
|
||||
|
||||
if (result)
|
||||
{
|
||||
QStringList fileList = filename.split('/');
|
||||
loadedFileName = fileList[fileList.length() - 1];
|
||||
updateFileStatus();
|
||||
}
|
||||
loadedFileName = filename;
|
||||
updateFileStatus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user