More implementation of DBC editor - essentially functional now. Added message name and comment to messages when using interpret frames mode.
This commit is contained in:
@@ -184,6 +184,7 @@ QVariant CANFrameModel::data(const QModelIndex &index, int role) const
|
|||||||
if (msg != NULL)
|
if (msg != NULL)
|
||||||
{
|
{
|
||||||
tempString.append("\r\n");
|
tempString.append("\r\n");
|
||||||
|
tempString.append(msg->name + " " + msg->comment + "\r\n");
|
||||||
for (int j = 0; j < msg->msgSignals.length(); j++)
|
for (int j = 0; j < msg->msgSignals.length(); j++)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
+17
-6
@@ -5,7 +5,7 @@
|
|||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
DBCMainEditor::DBCMainEditor(DBCHandler *handler, QWidget *parent) :
|
DBCMainEditor::DBCMainEditor(DBCHandler *handler, const QVector<CANFrame> *frames, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::DBCMainEditor)
|
ui(new Ui::DBCMainEditor)
|
||||||
{
|
{
|
||||||
@@ -14,6 +14,7 @@ DBCMainEditor::DBCMainEditor(DBCHandler *handler, QWidget *parent) :
|
|||||||
readSettings();
|
readSettings();
|
||||||
|
|
||||||
dbcHandler = handler;
|
dbcHandler = handler;
|
||||||
|
referenceFrames = frames;
|
||||||
|
|
||||||
QStringList headers;
|
QStringList headers;
|
||||||
headers << "Node Name" << "Comment";
|
headers << "Node Name" << "Comment";
|
||||||
@@ -208,16 +209,16 @@ void DBCMainEditor::onCellChangedMessage(int row,int col)
|
|||||||
QString msgName;
|
QString msgName;
|
||||||
int msgLen;
|
int msgLen;
|
||||||
QString msgComment;
|
QString msgComment;
|
||||||
|
DBC_MESSAGE newMsg;
|
||||||
DBC_NODE *node = dbcHandler->findNodeByIdx(ui->NodesTable->currentRow());
|
DBC_NODE *node = dbcHandler->findNodeByIdx(ui->NodesTable->currentRow());
|
||||||
if (node == NULL) dbcHandler->findNodeByIdx(0);
|
if (node == NULL) dbcHandler->findNodeByIdx(0);
|
||||||
|
|
||||||
switch(col)
|
switch(col)
|
||||||
{
|
{
|
||||||
case 0: //msg id
|
case 0: //msg id
|
||||||
msgID = ui->MessagesTable->item(row, col)->text().toInt(NULL, 16);
|
msgID = ui->MessagesTable->item(row, col)->text().toInt(NULL, 16);
|
||||||
if (row == ui->MessagesTable->rowCount() - 1) //new record
|
if (row == ui->MessagesTable->rowCount() - 1) //new record
|
||||||
{
|
{
|
||||||
DBC_MESSAGE newMsg;
|
|
||||||
if (dbcHandler->findMsgByID(msgID) != NULL)
|
if (dbcHandler->findMsgByID(msgID) != NULL)
|
||||||
{
|
{
|
||||||
QMessageBox msg;
|
QMessageBox msg;
|
||||||
@@ -229,6 +230,15 @@ void DBCMainEditor::onCellChangedMessage(int row,int col)
|
|||||||
newMsg.ID = msgID;
|
newMsg.ID = msgID;
|
||||||
newMsg.name = "";
|
newMsg.name = "";
|
||||||
newMsg.sender = node;
|
newMsg.sender = node;
|
||||||
|
newMsg.len = 0;
|
||||||
|
for (int i = 0; i < referenceFrames->length(); i++)
|
||||||
|
{
|
||||||
|
if (referenceFrames->at(i).ID == msgID)
|
||||||
|
{
|
||||||
|
newMsg.len = referenceFrames->at(i).len;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
dbcHandler->dbc_messages.append(newMsg);
|
dbcHandler->dbc_messages.append(newMsg);
|
||||||
}
|
}
|
||||||
else //editing an existing record
|
else //editing an existing record
|
||||||
@@ -239,6 +249,8 @@ void DBCMainEditor::onCellChangedMessage(int row,int col)
|
|||||||
inhibitCellChanged = true;
|
inhibitCellChanged = true;
|
||||||
replacement = new QTableWidgetItem(QString::number(msgID, 16));
|
replacement = new QTableWidgetItem(QString::number(msgID, 16));
|
||||||
ui->MessagesTable->setItem(row, col, replacement);
|
ui->MessagesTable->setItem(row, col, replacement);
|
||||||
|
replacement = new QTableWidgetItem(QString::number(newMsg.len));
|
||||||
|
ui->MessagesTable->setItem(row, 2, replacement);
|
||||||
inhibitCellChanged = false;
|
inhibitCellChanged = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -246,8 +258,7 @@ void DBCMainEditor::onCellChangedMessage(int row,int col)
|
|||||||
msgName = ui->MessagesTable->item(row, col)->text().simplified().replace(' ', '_');
|
msgName = ui->MessagesTable->item(row, col)->text().simplified().replace(' ', '_');
|
||||||
if (msgName.length() == 0) return;
|
if (msgName.length() == 0) return;
|
||||||
if (row == ui->MessagesTable->rowCount() - 1) //new record
|
if (row == ui->MessagesTable->rowCount() - 1) //new record
|
||||||
{
|
{
|
||||||
DBC_MESSAGE newMsg;
|
|
||||||
if (dbcHandler->findMsgByName(msgName) != NULL)
|
if (dbcHandler->findMsgByName(msgName) != NULL)
|
||||||
{
|
{
|
||||||
QMessageBox msg;
|
QMessageBox msg;
|
||||||
|
|||||||
+2
-1
@@ -15,7 +15,7 @@ class DBCMainEditor : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DBCMainEditor(DBCHandler *handler, QWidget *parent = 0);
|
explicit DBCMainEditor(DBCHandler *handler, const QVector<CANFrame> *frames, QWidget *parent = 0);
|
||||||
~DBCMainEditor();
|
~DBCMainEditor();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
@@ -31,6 +31,7 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
Ui::DBCMainEditor *ui;
|
Ui::DBCMainEditor *ui;
|
||||||
DBCHandler *dbcHandler;
|
DBCHandler *dbcHandler;
|
||||||
|
const QVector<CANFrame> *referenceFrames;
|
||||||
DBCSignalEditor *sigEditor;
|
DBCSignalEditor *sigEditor;
|
||||||
int currRow;
|
int currRow;
|
||||||
bool inhibitCellChanged;
|
bool inhibitCellChanged;
|
||||||
|
|||||||
+45
-4
@@ -44,7 +44,7 @@ DBCSignalEditor::DBCSignalEditor(DBCHandler *handler, QWidget *parent) :
|
|||||||
ui->signalsList->setContextMenuPolicy(Qt::CustomContextMenu);
|
ui->signalsList->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(ui->valuesTable, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomMenuValues(QPoint)));
|
connect(ui->valuesTable, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomMenuValues(QPoint)));
|
||||||
ui->valuesTable->setContextMenuPolicy(Qt::CustomContextMenu);
|
ui->valuesTable->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
|
connect(ui->valuesTable, SIGNAL(cellChanged(int,int)), this, SLOT(onValuesCellChanged(int,int)));
|
||||||
|
|
||||||
//now with 100% more lambda expressions just to make it interesting (and shorter, and easier...)
|
//now with 100% more lambda expressions just to make it interesting (and shorter, and easier...)
|
||||||
connect(ui->cbIntelFormat, &QCheckBox::toggled,
|
connect(ui->cbIntelFormat, &QCheckBox::toggled,
|
||||||
@@ -140,7 +140,7 @@ DBCSignalEditor::DBCSignalEditor(DBCHandler *handler, QWidget *parent) :
|
|||||||
{
|
{
|
||||||
currentSignal->name = ui->txtName->text();
|
currentSignal->name = ui->txtName->text();
|
||||||
//need to update the list too.
|
//need to update the list too.
|
||||||
//ui->signalsList->currentItem()->setText(currentSignal->name);
|
ui->signalsList->currentItem()->setText(currentSignal->name);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
@@ -190,13 +190,43 @@ void DBCSignalEditor::showEvent(QShowEvent* event)
|
|||||||
refreshSignalsList();
|
refreshSignalsList();
|
||||||
currentSignal = NULL;
|
currentSignal = NULL;
|
||||||
if (dbcMessage->msgSignals.count() > 0)
|
if (dbcMessage->msgSignals.count() > 0)
|
||||||
{
|
{
|
||||||
currentSignal = &dbcMessage->msgSignals[0];
|
currentSignal = &dbcMessage->msgSignals[0];
|
||||||
fillSignalForm(currentSignal);
|
fillSignalForm(currentSignal);
|
||||||
fillValueTable(currentSignal);
|
fillValueTable(currentSignal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DBCSignalEditor::onValuesCellChanged(int row,int col)
|
||||||
|
{
|
||||||
|
if (inhibitCellChanged) return;
|
||||||
|
if (row == ui->valuesTable->rowCount() - 1)
|
||||||
|
{
|
||||||
|
DBC_VAL newVal;
|
||||||
|
newVal.value = 0;
|
||||||
|
newVal.descript = "No Description";
|
||||||
|
currentSignal->valList.append(newVal);
|
||||||
|
qDebug() << "Created new entry in value list";
|
||||||
|
|
||||||
|
//QTableWidgetItem *widgetVal = new QTableWidgetItem(QString::number(newVal.value));
|
||||||
|
//ui->valuesTable->setItem(row, 0, widgetVal);
|
||||||
|
//QTableWidgetItem *widgetDesc = new QTableWidgetItem(newVal.descript);
|
||||||
|
//ui->valuesTable->setItem(row, 1, widgetDesc);
|
||||||
|
|
||||||
|
//add the blank at the end again
|
||||||
|
ui->valuesTable->insertRow(ui->valuesTable->rowCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (col == 0)
|
||||||
|
{
|
||||||
|
currentSignal->valList[row].value = ui->valuesTable->item(row, col)->text().toInt();
|
||||||
|
}
|
||||||
|
else if (col == 1)
|
||||||
|
{
|
||||||
|
currentSignal->valList[row].descript = ui->valuesTable->item(row, col)->text();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DBCSignalEditor::onCustomMenuSignals(QPoint point)
|
void DBCSignalEditor::onCustomMenuSignals(QPoint point)
|
||||||
{
|
{
|
||||||
QMenu *menu = new QMenu(this);
|
QMenu *menu = new QMenu(this);
|
||||||
@@ -365,10 +395,16 @@ void DBCSignalEditor::fillSignalForm(DBC_SIGNAL *sig)
|
|||||||
void DBCSignalEditor::fillValueTable(DBC_SIGNAL *sig)
|
void DBCSignalEditor::fillValueTable(DBC_SIGNAL *sig)
|
||||||
{
|
{
|
||||||
int rowIdx;
|
int rowIdx;
|
||||||
|
|
||||||
|
inhibitCellChanged = true;
|
||||||
|
|
||||||
ui->valuesTable->clearContents();
|
ui->valuesTable->clearContents();
|
||||||
ui->valuesTable->setRowCount(0);
|
ui->valuesTable->setRowCount(0);
|
||||||
|
|
||||||
if (sig == NULL) return;
|
if (sig == NULL) {
|
||||||
|
inhibitCellChanged = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < sig->valList.count(); i++)
|
for (int i = 0; i < sig->valList.count(); i++)
|
||||||
{
|
{
|
||||||
@@ -379,6 +415,11 @@ void DBCSignalEditor::fillValueTable(DBC_SIGNAL *sig)
|
|||||||
ui->valuesTable->setItem(rowIdx, 0, val);
|
ui->valuesTable->setItem(rowIdx, 0, val);
|
||||||
ui->valuesTable->setItem(rowIdx, 1, desc);
|
ui->valuesTable->setItem(rowIdx, 1, desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Add a blank row at the end to allow for adding records easily
|
||||||
|
ui->valuesTable->insertRow(ui->valuesTable->rowCount());
|
||||||
|
|
||||||
|
inhibitCellChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DBCSignalEditor::clickSignalList(int row)
|
void DBCSignalEditor::clickSignalList(int row)
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void clickSignalList(int);
|
void clickSignalList(int);
|
||||||
void bitfieldClicked(int x, int y);
|
void bitfieldClicked(int x, int y);
|
||||||
|
void onValuesCellChanged(int row,int col);
|
||||||
void onCustomMenuSignals(QPoint);
|
void onCustomMenuSignals(QPoint);
|
||||||
void onCustomMenuValues(QPoint);
|
void onCustomMenuValues(QPoint);
|
||||||
void addNewSignal();
|
void addNewSignal();
|
||||||
@@ -32,6 +33,7 @@ private:
|
|||||||
DBCHandler *dbcHandler;
|
DBCHandler *dbcHandler;
|
||||||
DBC_MESSAGE *dbcMessage;
|
DBC_MESSAGE *dbcMessage;
|
||||||
DBC_SIGNAL *currentSignal;
|
DBC_SIGNAL *currentSignal;
|
||||||
|
bool inhibitCellChanged;
|
||||||
|
|
||||||
void refreshSignalsList();
|
void refreshSignalsList();
|
||||||
void fillSignalForm(DBC_SIGNAL *sig);
|
void fillSignalForm(DBC_SIGNAL *sig);
|
||||||
|
|||||||
+1
-1
@@ -872,7 +872,7 @@ void MainWindow::showDBCEditor()
|
|||||||
{
|
{
|
||||||
if (!dbcMainEditor)
|
if (!dbcMainEditor)
|
||||||
{
|
{
|
||||||
dbcMainEditor = new DBCMainEditor(dbcHandler);
|
dbcMainEditor = new DBCMainEditor(dbcHandler, model->getListReference());
|
||||||
}
|
}
|
||||||
dbcMainEditor->show();
|
dbcMainEditor->show();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user