Allow many places to load and save the last directory used for that functionality so it can easily be used again.

All frame file I/O uses the same directory load/save location but DBC files store separately as do filter files, graphing definitions, and stored text files from the various reverse engineering windows.
This commit is contained in:
Collin Kidder
2019-06-17 20:58:56 -04:00
parent f7aa796e79
commit d4a735a710
12 changed files with 77 additions and 5 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef CONFIG
#define CONFIG
#define VERSION 198
#define VERSION 199
//try to keep this in sync.
//SavvyCAN will complain if you connect a GVRET board with a revision
+8 -1
View File
@@ -7,6 +7,7 @@
#include <QFileDialog>
#include <QApplication>
#include <QPalette>
#include <QSettings>
#include "utility.h"
#include "connections/canconmanager.h"
@@ -1339,6 +1340,8 @@ void DBCFile::saveFile(QString fileName)
void DBCHandler::saveDBCFile(int idx)
{
QSettings settings;
if (loadedFiles.count() == 0) return;
if (idx < 0) return;
if (idx >= loadedFiles.count()) return;
@@ -1349,6 +1352,7 @@ void DBCHandler::saveDBCFile(int idx)
QStringList filters;
filters.append(QString(tr("DBC File (*.dbc)")));
dialog.setDirectory(settings.value("DBC/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -1360,6 +1364,7 @@ void DBCHandler::saveDBCFile(int idx)
filename = dialog.selectedFiles()[0];
if (!filename.contains('.')) filename += ".dbc";
loadedFiles[idx].saveFile(filename);
settings.setValue("DBC/LoadSaveDirectory", dialog.directory().path());
}
}
@@ -1411,10 +1416,12 @@ DBCFile* DBCHandler::loadDBCFile(int idx)
QString filename;
QFileDialog dialog;
QSettings settings;
QStringList filters;
filters.append(QString(tr("DBC File (*.dbc)")));
dialog.setDirectory(settings.value("DBC/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -1426,7 +1433,7 @@ DBCFile* DBCHandler::loadDBCFile(int idx)
DBCFile newFile;
newFile.loadFile(filename);
loadedFiles.append(newFile);
settings.setValue("DBC/LoadSaveDirectory", dialog.directory().path());
return &loadedFiles.last();
}
+10
View File
@@ -4,6 +4,7 @@
#include <QProgressDialog>
#include <QDateTime>
#include <QtEndian>
#include <QSettings>
#include <iostream>
#include "utility.h"
@@ -19,6 +20,7 @@ bool FrameFileIO::saveFrameFile(QString &fileName, const QVector<CANFrame>* fram
{
QString filename;
QFileDialog dialog(qApp->activeWindow());
QSettings settings;
bool result = false;
QStringList filters;
@@ -35,6 +37,7 @@ bool FrameFileIO::saveFrameFile(QString &fileName, const QVector<CANFrame>* fram
filters.append(QString(tr("Cabana Log(*.csv *.CSV)")));
filters.append(QString(tr("CANalyzer Ascii Log (*.asc *.ASC)")));
dialog.setDirectory(settings.value("FileIO/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -125,6 +128,7 @@ bool FrameFileIO::saveFrameFile(QString &fileName, const QVector<CANFrame>* fram
{
QStringList fileList = filename.split('/');
fileName = fileList[fileList.length() - 1];
settings.setValue("FileIO/LoadSaveDirectory", dialog.directory().path());
return true;
}
return false;
@@ -136,6 +140,7 @@ bool FrameFileIO::loadFrameFile(QString &fileName, QVector<CANFrame>* frameCache
{
QString filename;
QFileDialog dialog;
QSettings settings;
bool result = false;
QStringList filters;
@@ -159,6 +164,7 @@ bool FrameFileIO::loadFrameFile(QString &fileName, QVector<CANFrame>* frameCache
filters.append(QString(tr("Cabana Log (*.csv *.CSV)")));
filters.append(QString(tr("CANOpen Magic (*.csv *.CSV)")));
dialog.setDirectory(settings.value("FileIO/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -203,6 +209,7 @@ bool FrameFileIO::loadFrameFile(QString &fileName, QVector<CANFrame>* frameCache
{
QStringList fileList = filename.split('/');
fileName = fileList[fileList.length() - 1];
settings.setValue("FileIO/LoadSaveDirectory", dialog.directory().path());
return true;
}
else
@@ -1575,10 +1582,12 @@ bool FrameFileIO::openContinuousNative()
{
QString filename;
QFileDialog dialog(qApp->activeWindow());
QSettings settings;
QStringList filters;
filters.append(QString(tr("GVRET Logs (*.csv *.CSV)")));
dialog.setDirectory(settings.value("FileIO/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -1595,6 +1604,7 @@ bool FrameFileIO::openContinuousNative()
}
continuousFile.write("Time Stamp,ID,Extended,Dir,Bus,LEN,D1,D2,D3,D4,D5,D6,D7,D8");
continuousFile.write("\n");
settings.setValue("FileIO/LoadSaveDirectory", dialog.directory().path());
return true;
}
return false;
+6
View File
@@ -173,10 +173,12 @@ void FramePlaybackWindow::saveFilters()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Filter list (*.ftl)")));
dialog.setDirectory(settings.value("Filters/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -203,6 +205,7 @@ void FramePlaybackWindow::saveFilters()
}
outFile->close();
dialog.setDirectory(settings.value("Filters/LoadSaveDirectory", dialog.directory().path()).toString());
}
}
@@ -212,10 +215,12 @@ void FramePlaybackWindow::loadFilters()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Filter List (*.ftl)")));
dialog.setDirectory(settings.value("Filters/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -264,6 +269,7 @@ void FramePlaybackWindow::loadFilters()
}
}
inFile->close();
dialog.setDirectory(settings.value("Filters/LoadSaveDirectory", dialog.directory().path()).toString());
}
}
+6 -1
View File
@@ -241,10 +241,12 @@ void FrameSenderWindow::saveGrid()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Frame Sender Definition (*.fsd)")));
dialog.setDirectory(settings.value("FrameSender/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -258,6 +260,7 @@ void FrameSenderWindow::saveGrid()
{
if (!filename.contains('.')) filename += ".fsd";
saveSenderFile(filename);
settings.setValue("FrameSender/LoadSaveDirectory", dialog.directory().path());
}
}
}
@@ -266,10 +269,12 @@ void FrameSenderWindow::loadGrid()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Frame Sender Definition (*.fsd)")));
dialog.setDirectory(settings.value("FrameSender/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -281,6 +286,7 @@ void FrameSenderWindow::loadGrid()
if (dialog.selectedNameFilter() == filters[0])
{
loadSenderFile(filename);
settings.setValue("FrameSender/LoadSaveDirectory", dialog.directory().path());
}
}
@@ -325,7 +331,6 @@ void FrameSenderWindow::saveSenderFile(QString filename)
outFile->close();
delete outFile;
}
void FrameSenderWindow::loadSenderFile(QString filename)
+9 -2
View File
@@ -650,10 +650,12 @@ void MainWindow::handleSaveFilters()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Filter list (*.ftl)")));
dialog.setDirectory(settings.value("Filters/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -664,6 +666,7 @@ void MainWindow::handleSaveFilters()
filename = dialog.selectedFiles()[0];
if (!filename.contains('.')) filename += ".ftl";
if (dialog.selectedNameFilter() == filters[0]) model->saveFilterFile(filename);
settings.setValue("Filters/LoadSaveDirectory", dialog.directory().path());
}
}
@@ -671,10 +674,12 @@ void MainWindow::handleLoadFilters()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Filter List (*.ftl)")));
dialog.setDirectory(settings.value("Filters/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -684,19 +689,20 @@ void MainWindow::handleLoadFilters()
filename = dialog.selectedFiles()[0];
//right now there is only one file type that can be loaded here so just do it.
model->loadFilterFile(filename);
settings.setValue("Filters/LoadSaveDirectory", dialog.directory().path());
}
}
//lbStatusDatabase.setText(fileList[fileList.length() - 1] + tr(" loaded."));
void MainWindow::handleSaveDecoded()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Text File (*.txt)")));
dialog.setDirectory(settings.value("FileIO/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -707,6 +713,7 @@ void MainWindow::handleSaveDecoded()
filename = dialog.selectedFiles()[0];
if (!filename.contains('.')) filename += ".txt";
saveDecodedTextFile(filename);
settings.setValue("FileIO/LoadSaveDirectory", dialog.directory().path());
}
}
+3
View File
@@ -367,6 +367,7 @@ void FileComparatorWindow::saveDetails()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Text File (*.txt)")));
@@ -375,10 +376,12 @@ void FileComparatorWindow::saveDetails()
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(settings.value("FileComparator/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
settings.setValue("FileComparator/LoadSaveDirectory", dialog.directory().path());
if (!filename.contains('.')) filename += ".txt";
QFile *outFile = new QFile(filename);
+6
View File
@@ -297,6 +297,7 @@ void FlowViewWindow::saveFileGraph()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("PDF Files (*.pdf)")));
@@ -307,6 +308,7 @@ void FlowViewWindow::saveFileGraph()
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(settings.value("FlowView/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
@@ -327,6 +329,7 @@ void FlowViewWindow::saveFileGraph()
if (!filename.contains('.')) filename += ".jpg";
ui->graphView->saveJpg(filename, 1024, 768);
}
settings.setValue("FlowView/LoadSaveDirectory", dialog.directory().path());
}
}
@@ -334,6 +337,7 @@ void FlowViewWindow::saveFileFlow()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("PNG Files (*.png)")));
@@ -343,6 +347,7 @@ void FlowViewWindow::saveFileFlow()
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(settings.value("FlowView/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
@@ -358,6 +363,7 @@ void FlowViewWindow::saveFileFlow()
if (!filename.contains('.')) filename += ".jpg";
ui->flowView->saveImage(filename, 1024, 768);
}
settings.setValue("FlowView/LoadSaveDirectory", dialog.directory().path());
}
}
+3
View File
@@ -477,6 +477,7 @@ void FrameInfoWindow::saveDetails()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Text File (*.txt)")));
@@ -485,9 +486,11 @@ void FrameInfoWindow::saveDetails()
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(settings.value("FrameInfo/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
settings.setValue("FrameInfo/LoadSaveDirectory", dialog.directory().path());
filename = dialog.selectedFiles()[0];
if (!filename.contains('.')) filename += ".txt";
if (dialog.selectedNameFilter() == filters[0])
+15
View File
@@ -633,6 +633,7 @@ void GraphingWindow::saveGraphs()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("PDF Files (*.pdf)")));
@@ -643,10 +644,12 @@ void GraphingWindow::saveGraphs()
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(settings.value("Graphing/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path());
if (dialog.selectedNameFilter() == filters[0])
{
@@ -670,6 +673,7 @@ void GraphingWindow::saveSpreadsheet()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Spreadsheet (*.csv)")));
@@ -678,10 +682,13 @@ void GraphingWindow::saveSpreadsheet()
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(settings.value("Graphing/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path());
if (!filename.contains('.')) filename += ".csv";
QFile *outFile = new QFile(filename);
@@ -789,6 +796,7 @@ void GraphingWindow::saveDefinitions()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Graph definition (*.gdf)")));
@@ -797,10 +805,13 @@ void GraphingWindow::saveDefinitions()
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(settings.value("Graphing/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path());
if (!filename.contains('.')) filename += ".gdf";
QFile *outFile = new QFile(filename);
@@ -847,6 +858,7 @@ void GraphingWindow::loadDefinitions()
{
QString filename;
QFileDialog dialog;
QSettings settings;
QStringList filters;
filters.append(QString(tr("Graph definition (*.gdf)")));
@@ -857,10 +869,13 @@ void GraphingWindow::loadDefinitions()
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setDirectory(settings.value("Graphing/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
settings.setValue("Graphing/LoadSaveDirectory", dialog.directory().path());
QFile *inFile = new QFile(filename);
QByteArray line;
+4
View File
@@ -145,6 +145,7 @@ void UDSScanWindow::saveResults()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Text File (*.txt)")));
@@ -153,10 +154,13 @@ void UDSScanWindow::saveResults()
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setDirectory(settings.value("UDSScan/LoadSaveDirectory", dialog.directory().path()).toString());
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
settings.setValue("UDSScan/LoadSaveDirectory", dialog.directory().path());
if (!filename.contains('.')) filename += ".txt";
if (dialog.selectedNameFilter() == filters[0])
{
+6
View File
@@ -180,11 +180,13 @@ void ScriptingWindow::loadNewScript()
{
QString filename;
QFileDialog dialog;
QSettings settings;
ScriptContainer *container;
QStringList filters;
filters.append(QString(tr("Javascript File (*.js)")));
dialog.setDirectory(settings.value("ScriptingWindow/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -215,6 +217,7 @@ void ScriptingWindow::loadNewScript()
ui->listLoadedScripts->setCurrentRow(ui->listLoadedScripts->count() - 1);
changeCurrentScript();
settings.setValue("ScriptingWindow/LoadSaveDirectory", dialog.directory().path());
}
}
}
@@ -287,10 +290,12 @@ void ScriptingWindow::saveScript()
{
QString filename;
QFileDialog dialog(this);
QSettings settings;
QStringList filters;
filters.append(QString(tr("Javascript File (*.js)")));
dialog.setDirectory(settings.value("ScriptingWindow/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
@@ -312,6 +317,7 @@ void ScriptingWindow::saveScript()
outFile->write(editor->toPlainText().toUtf8());
outFile->close();
delete outFile;
settings.setValue("ScriptingWindow/LoadSaveDirectory", dialog.directory().path());
}
}
}