Fixes for loading tesla json files (if you somehow get some)

This commit is contained in:
Collin Kidder
2020-04-02 19:55:04 -04:00
parent 43979a6d58
commit ccab975a70
4 changed files with 39 additions and 53 deletions
+4 -25
View File
@@ -1505,28 +1505,12 @@ DBCFile* DBCHandler::loadDBCFile(int idx)
return nullptr; return nullptr;
} }
DBCFile* DBCHandler::loadJSONFile(int idx) DBCFile* DBCHandler::loadJSONFile(QString filename)
{ {
if (idx > -1 && idx < loadedFiles.count()) removeDBCFile(idx);
QString filename;
QFileDialog dialog;
QSettings settings; QSettings settings;
DBCFile *thisFile; DBCFile *thisFile;
DBC_MESSAGE *pMsg; DBC_MESSAGE *pMsg;
QStringList filters;
filters.append(QString(tr("JSON File (*.json *.JSON)")));
dialog.setDirectory(settings.value("DBC/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
//right now there is only one file type that can be loaded here so just do it.
createBlankFile(); createBlankFile();
thisFile = &loadedFiles.last(); thisFile = &loadedFiles.last();
QFile *inFile = new QFile(filename); QFile *inFile = new QFile(filename);
@@ -1543,7 +1527,7 @@ DBCFile* DBCHandler::loadJSONFile(int idx)
QJsonDocument jsonDoc = QJsonDocument::fromJson(wholeFileData); QJsonDocument jsonDoc = QJsonDocument::fromJson(wholeFileData);
if (jsonDoc.isNull()) if (jsonDoc.isNull())
{ {
qDebug() << "Couldn't load the json file, shit the bed, don't know why I did it."; qDebug() << "Couldn't load and parse the JSON file for some reason.";
return nullptr; return nullptr;
} }
qDebug() << "Loaded JSON"; qDebug() << "Loaded JSON";
@@ -1594,8 +1578,8 @@ DBCFile* DBCHandler::loadJSONFile(int idx)
sig.name = QString(sigIter.key().toUtf8()); sig.name = QString(sigIter.key().toUtf8());
sig.factor = sigObj.find("scale").value().toDouble(); sig.factor = sigObj.find("scale").value().toDouble();
sig.bias = sigObj.find("offset").value().toDouble(); sig.bias = sigObj.find("offset").value().toDouble();
sig.max = sigObj.find("max").value().toInt(); sig.max = sigObj.find("max").value().toDouble();
sig.min = sigObj.find("min").value().toInt(); sig.min = sigObj.find("min").value().toDouble();
sig.startBit = sigObj.find("start_position").value().toInt(); sig.startBit = sigObj.find("start_position").value().toInt();
sig.unitName = sigObj.find("units").value().toString(); sig.unitName = sigObj.find("units").value().toString();
sig.signalSize = sigObj.find("width").value().toInt(); sig.signalSize = sigObj.find("width").value().toInt();
@@ -1669,12 +1653,7 @@ DBCFile* DBCHandler::loadJSONFile(int idx)
} }
} }
} }
settings.setValue("DBC/LoadSaveDirectory", dialog.directory().path());
return thisFile; return thisFile;
}
return nullptr;
} }
void DBCHandler::removeDBCFile(int idx) void DBCHandler::removeDBCFile(int idx)
+1 -1
View File
@@ -113,7 +113,7 @@ public:
DBCFile* getFileByIdx(int idx); DBCFile* getFileByIdx(int idx);
DBCFile* getFileByName(QString name); DBCFile* getFileByName(QString name);
int createBlankFile(); int createBlankFile();
DBCFile* loadJSONFile(int); DBCFile* loadJSONFile(QString);
static DBCHandler *getReference(); static DBCHandler *getReference();
private: private:
+34 -20
View File
@@ -1,6 +1,7 @@
#include "dbcloadsavewindow.h" #include "dbcloadsavewindow.h"
#include "ui_dbcloadsavewindow.h" #include "ui_dbcloadsavewindow.h"
#include <QComboBox> #include <QComboBox>
#include <QFileDialog>
#include <QMessageBox> #include <QMessageBox>
#include <qevent.h> #include <qevent.h>
#include "helpwindow.h" #include "helpwindow.h"
@@ -67,7 +68,6 @@ DBCLoadSaveWindow::DBCLoadSaveWindow(const QVector<CANFrame> *frames, QWidget *p
connect(ui->btnNewDBC, &QAbstractButton::clicked, this, &DBCLoadSaveWindow::newFile); connect(ui->btnNewDBC, &QAbstractButton::clicked, this, &DBCLoadSaveWindow::newFile);
connect(ui->tableFiles, &QTableWidget::cellChanged, this, &DBCLoadSaveWindow::cellChanged); connect(ui->tableFiles, &QTableWidget::cellChanged, this, &DBCLoadSaveWindow::cellChanged);
connect(ui->tableFiles, &QTableWidget::cellDoubleClicked, this, &DBCLoadSaveWindow::cellDoubleClicked); connect(ui->tableFiles, &QTableWidget::cellDoubleClicked, this, &DBCLoadSaveWindow::cellDoubleClicked);
connect(ui->btnLoadJSON, &QAbstractButton::clicked, this, &DBCLoadSaveWindow::loadJSON);
editorWindow = new DBCMainEditor(frames, this); editorWindow = new DBCMainEditor(frames, this);
currentlyEditingFile = nullptr; currentlyEditingFile = nullptr;
@@ -153,7 +153,38 @@ void DBCLoadSaveWindow::newFile()
void DBCLoadSaveWindow::loadFile() void DBCLoadSaveWindow::loadFile()
{ {
DBCFile *file = dbcHandler->loadDBCFile(-1); DBCFile *file = nullptr;
QString filename;
QFileDialog dialog;
QSettings settings;
QStringList filters;
filters.append(QString(tr("DBC File (*.dbc)")));
filters.append(QString(tr("Tesla JSON File (*.json)")));
dialog.setDirectory(settings.value("DBC/LoadSaveDirectory", dialog.directory().path()).toString());
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilters(filters);
dialog.setViewMode(QFileDialog::Detail);
if (dialog.exec() == QDialog::Accepted)
{
filename = dialog.selectedFiles()[0];
//right now there is only one file type that can be loaded here so just do it.
settings.setValue("DBC/LoadSaveDirectory", dialog.directory().path());
if (dialog.selectedNameFilter() == filters[0])
{
if (!filename.contains('.')) filename += ".dbc";
file = dbcHandler->loadDBCFile(filename);
}
if (dialog.selectedNameFilter() == filters[1])
{
if (!filename.contains('.')) filename += ".json";
file = dbcHandler->loadJSONFile(filename);
}
}
if(file) { if(file) {
inhibitCellProcessing=true; inhibitCellProcessing=true;
int idx = ui->tableFiles->rowCount(); int idx = ui->tableFiles->rowCount();
@@ -187,24 +218,7 @@ void DBCLoadSaveWindow::loadFile()
void DBCLoadSaveWindow::loadJSON() void DBCLoadSaveWindow::loadJSON()
{ {
DBCFile *file = dbcHandler->loadJSONFile(-1);
if(file) {
int idx = ui->tableFiles->rowCount();
ui->tableFiles->insertRow(ui->tableFiles->rowCount());
ui->tableFiles->setItem(idx, 0, new QTableWidgetItem(file->getFullFilename()));
ui->tableFiles->setItem(idx, 1, new QTableWidgetItem("-1"));
DBC_ATTRIBUTE *attr = file->findAttributeByName("isj1939dbc");
QTableWidgetItem *item = new QTableWidgetItem("");
ui->tableFiles->setItem(idx, 2, item);
if (attr && attr->defaultValue > 0)
{
item->setCheckState(Qt::Checked);
}
else
{
item->setCheckState(Qt::Unchecked);
}
}
} }
void DBCLoadSaveWindow::saveFile() void DBCLoadSaveWindow::saveFile()
-7
View File
@@ -24,13 +24,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="btnLoadJSON">
<property name="text">
<string>Load Tesla JSON (shhhh....)</string>
</property>
</widget>
</item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
<item> <item>