Editing of nodes, messages, signals all works now.
Dynamically updates DBC tree if info changes.
This commit is contained in:
+46
-8
@@ -31,9 +31,9 @@ DBCMainEditor::DBCMainEditor( const QVector<CANFrame> *frames, QWidget *parent)
|
|||||||
nodeEditor = new DBCNodeEditor(this);
|
nodeEditor = new DBCNodeEditor(this);
|
||||||
|
|
||||||
//all three might potentially change the data stored and force the tree to be updated
|
//all three might potentially change the data stored and force the tree to be updated
|
||||||
connect(sigEditor, &DBCSignalEditor::updatedTreeInfo, this, &DBCMainEditor::updatedTreeInfo);
|
connect(sigEditor, &DBCSignalEditor::updatedTreeInfo, this, &DBCMainEditor::updatedSignal);
|
||||||
connect(msgEditor, &DBCMessageEditor::updatedTreeInfo, this, &DBCMainEditor::updatedTreeInfo);
|
connect(msgEditor, &DBCMessageEditor::updatedTreeInfo, this, &DBCMainEditor::updatedMessage);
|
||||||
connect(nodeEditor, &DBCNodeEditor::updatedTreeInfo, this, &DBCMainEditor::updatedTreeInfo);
|
connect(nodeEditor, &DBCNodeEditor::updatedTreeInfo, this, &DBCMainEditor::updatedNode);
|
||||||
|
|
||||||
nodeIcon = QIcon(":/icons/images/node.png");
|
nodeIcon = QIcon(":/icons/images/node.png");
|
||||||
messageIcon = QIcon(":/icons/images/message.png");
|
messageIcon = QIcon(":/icons/images/message.png");
|
||||||
@@ -266,6 +266,9 @@ void DBCMainEditor::onTreeDoubleClicked(const QModelIndex &index)
|
|||||||
void DBCMainEditor::refreshTree()
|
void DBCMainEditor::refreshTree()
|
||||||
{
|
{
|
||||||
ui->treeDBC->clear();
|
ui->treeDBC->clear();
|
||||||
|
nodeToItem.clear();
|
||||||
|
messageToItem.clear();
|
||||||
|
signalToItem.clear();
|
||||||
|
|
||||||
if (dbcFile->findNodeByName("Vector__XXX") == nullptr)
|
if (dbcFile->findNodeByName("Vector__XXX") == nullptr)
|
||||||
{
|
{
|
||||||
@@ -275,18 +278,20 @@ void DBCMainEditor::refreshTree()
|
|||||||
dbcFile->dbc_nodes.append(newNode);
|
dbcFile->dbc_nodes.append(newNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (DBC_NODE node, dbcFile->dbc_nodes)
|
for (int n = 0; n < dbcFile->dbc_nodes.count(); n++)
|
||||||
{
|
{
|
||||||
|
DBC_NODE *node = &dbcFile->dbc_nodes[n];
|
||||||
QTreeWidgetItem *nodeItem = new QTreeWidgetItem();
|
QTreeWidgetItem *nodeItem = new QTreeWidgetItem();
|
||||||
QString nodeInfo = node.name;
|
QString nodeInfo = node->name;
|
||||||
if (node.comment.count() > 0) nodeInfo.append(" - ").append(node.comment);
|
if (node->comment.count() > 0) nodeInfo.append(" - ").append(node->comment);
|
||||||
nodeItem->setText(0, nodeInfo);
|
nodeItem->setText(0, nodeInfo);
|
||||||
nodeItem->setIcon(0, nodeIcon);
|
nodeItem->setIcon(0, nodeIcon);
|
||||||
nodeItem->setData(0, Qt::UserRole, 1);
|
nodeItem->setData(0, Qt::UserRole, 1);
|
||||||
|
nodeToItem.insert(node, nodeItem);
|
||||||
for (int x = 0; x < dbcFile->messageHandler->getCount(); x++)
|
for (int x = 0; x < dbcFile->messageHandler->getCount(); x++)
|
||||||
{
|
{
|
||||||
DBC_MESSAGE *msg = dbcFile->messageHandler->findMsgByIdx(x);
|
DBC_MESSAGE *msg = dbcFile->messageHandler->findMsgByIdx(x);
|
||||||
if (msg->sender->name == node.name)
|
if (msg->sender->name == node->name)
|
||||||
{
|
{
|
||||||
QTreeWidgetItem *msgItem = new QTreeWidgetItem(nodeItem);
|
QTreeWidgetItem *msgItem = new QTreeWidgetItem(nodeItem);
|
||||||
QString msgInfo = Utility::formatCANID(msg->ID) + " " + msg->name;
|
QString msgInfo = Utility::formatCANID(msg->ID) + " " + msg->name;
|
||||||
@@ -294,6 +299,7 @@ void DBCMainEditor::refreshTree()
|
|||||||
msgItem->setText(0, msgInfo);
|
msgItem->setText(0, msgInfo);
|
||||||
msgItem->setIcon(0, messageIcon);
|
msgItem->setIcon(0, messageIcon);
|
||||||
msgItem->setData(0, Qt::UserRole, 2);
|
msgItem->setData(0, Qt::UserRole, 2);
|
||||||
|
messageToItem.insert(msg, msgItem);
|
||||||
for (int i = 0; i < msg->sigHandler->getCount(); i++)
|
for (int i = 0; i < msg->sigHandler->getCount(); i++)
|
||||||
{
|
{
|
||||||
DBC_SIGNAL *sig = msg->sigHandler->findSignalByIdx(i);
|
DBC_SIGNAL *sig = msg->sigHandler->findSignalByIdx(i);
|
||||||
@@ -305,6 +311,7 @@ void DBCMainEditor::refreshTree()
|
|||||||
else if (sig->isMultiplexor) sigItem->setIcon(0, multiplexorSignalIcon);
|
else if (sig->isMultiplexor) sigItem->setIcon(0, multiplexorSignalIcon);
|
||||||
else sigItem->setIcon(0, signalIcon);
|
else sigItem->setIcon(0, signalIcon);
|
||||||
sigItem->setData(0, Qt::UserRole, 3);
|
sigItem->setData(0, Qt::UserRole, 3);
|
||||||
|
signalToItem.insert(sig, sigItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -313,7 +320,38 @@ void DBCMainEditor::refreshTree()
|
|||||||
ui->treeDBC->sortItems(0, Qt::SortOrder::AscendingOrder); //sort the display list for ease in viewing by mere mortals, helps me a lot.
|
ui->treeDBC->sortItems(0, Qt::SortOrder::AscendingOrder); //sort the display list for ease in viewing by mere mortals, helps me a lot.
|
||||||
}
|
}
|
||||||
|
|
||||||
void DBCMainEditor::updatedTreeInfo(QString oldData, QString newData, int type)
|
void DBCMainEditor::updatedNode(DBC_NODE *node)
|
||||||
{
|
{
|
||||||
|
if (nodeToItem.contains(node))
|
||||||
|
{
|
||||||
|
QTreeWidgetItem *item = nodeToItem[node];
|
||||||
|
QString nodeInfo = node->name;
|
||||||
|
if (node->comment.count() > 0) nodeInfo.append(" - ").append(node->comment);
|
||||||
|
item->setText(0, nodeInfo);
|
||||||
|
}
|
||||||
|
else qDebug() << "That node doesn't exist. That's a bug dude.";
|
||||||
|
}
|
||||||
|
|
||||||
|
void DBCMainEditor::updatedMessage(DBC_MESSAGE *msg)
|
||||||
|
{
|
||||||
|
if (messageToItem.contains(msg))
|
||||||
|
{
|
||||||
|
QTreeWidgetItem *item = messageToItem.value(msg);
|
||||||
|
QString msgInfo = Utility::formatCANID(msg->ID) + " " + msg->name;
|
||||||
|
if (msg->comment.count() > 0) msgInfo.append(" - ").append(msg->comment);
|
||||||
|
item->setText(0, msgInfo);
|
||||||
|
}
|
||||||
|
else qDebug() << "Shit?! That mesage doesn't exist. That's a bug dude.";
|
||||||
|
}
|
||||||
|
|
||||||
|
void DBCMainEditor::updatedSignal(DBC_SIGNAL *sig)
|
||||||
|
{
|
||||||
|
if (signalToItem.contains(sig))
|
||||||
|
{
|
||||||
|
QTreeWidgetItem *item = signalToItem.value(sig);
|
||||||
|
QString sigInfo = sig->name;
|
||||||
|
if (sig->comment.count() > 0) sigInfo.append(" - ").append(sig->comment);
|
||||||
|
item->setText(0, sigInfo);
|
||||||
|
}
|
||||||
|
else qDebug() << "Shit?! That signal doesn't exist. That's a bug dude.";
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-1
@@ -25,7 +25,9 @@ public:
|
|||||||
void setFileIdx(int idx);
|
void setFileIdx(int idx);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updatedTreeInfo(QString oldData, QString newData, int type);
|
void updatedNode(DBC_NODE *node);
|
||||||
|
void updatedMessage(DBC_MESSAGE *msg);
|
||||||
|
void updatedSignal(DBC_SIGNAL *sig);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onTreeDoubleClicked(const QModelIndex &index);
|
void onTreeDoubleClicked(const QModelIndex &index);
|
||||||
@@ -51,6 +53,9 @@ private:
|
|||||||
QIcon multiplexedSignalIcon;
|
QIcon multiplexedSignalIcon;
|
||||||
QList<QTreeWidgetItem *> searchItems;
|
QList<QTreeWidgetItem *> searchItems;
|
||||||
int searchItemPos;
|
int searchItemPos;
|
||||||
|
QMap<DBC_NODE*, QTreeWidgetItem *> nodeToItem;
|
||||||
|
QMap<DBC_MESSAGE*, QTreeWidgetItem *> messageToItem;
|
||||||
|
QMap<DBC_SIGNAL*, QTreeWidgetItem *> signalToItem;
|
||||||
|
|
||||||
void showEvent(QShowEvent* event);
|
void showEvent(QShowEvent* event);
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
|
|||||||
@@ -18,6 +18,37 @@ DBCMessageEditor::DBCMessageEditor(QWidget *parent) :
|
|||||||
dbcHandler = DBCHandler::getReference();
|
dbcHandler = DBCHandler::getReference();
|
||||||
dbcMessage = nullptr;
|
dbcMessage = nullptr;
|
||||||
|
|
||||||
|
connect(ui->lineComment, &QLineEdit::editingFinished,
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
if (dbcMessage == nullptr) return;
|
||||||
|
dbcMessage->comment = ui->lineComment->text();
|
||||||
|
emit updatedTreeInfo(dbcMessage);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->lineFrameID, &QLineEdit::editingFinished,
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
if (dbcMessage == nullptr) return;
|
||||||
|
dbcMessage->ID = Utility::ParseStringToNum(ui->lineFrameID->text());
|
||||||
|
emit updatedTreeInfo(dbcMessage);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->lineMsgName, &QLineEdit::editingFinished,
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
if (dbcMessage == nullptr) return;
|
||||||
|
dbcMessage->name = ui->lineMsgName->text().simplified().replace(' ', '_');
|
||||||
|
emit updatedTreeInfo(dbcMessage);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->lineFrameLen, &QLineEdit::editingFinished,
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
if (dbcMessage == nullptr) return;
|
||||||
|
dbcMessage->len = Utility::ParseStringToNum(ui->lineFrameLen->text());
|
||||||
|
});
|
||||||
|
|
||||||
connect(ui->btnTextColor, &QAbstractButton::clicked,
|
connect(ui->btnTextColor, &QAbstractButton::clicked,
|
||||||
[=]()
|
[=]()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public:
|
|||||||
void refreshView();
|
void refreshView();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void updatedTreeInfo(QString oldData, QString newData, int type);
|
void updatedTreeInfo(DBC_MESSAGE *msg);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::DBCMessageEditor *ui;
|
Ui::DBCMessageEditor *ui;
|
||||||
|
|||||||
@@ -18,6 +18,22 @@ DBCNodeEditor::DBCNodeEditor(QWidget *parent) :
|
|||||||
dbcHandler = DBCHandler::getReference();
|
dbcHandler = DBCHandler::getReference();
|
||||||
dbcNode = nullptr;
|
dbcNode = nullptr;
|
||||||
|
|
||||||
|
connect(ui->lineComment, &QLineEdit::editingFinished,
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
if (dbcNode == nullptr) return;
|
||||||
|
dbcNode->comment = ui->lineComment->text();
|
||||||
|
emit updatedTreeInfo(dbcNode);
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->lineMsgName, &QLineEdit::editingFinished,
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
if (dbcNode == nullptr) return;
|
||||||
|
dbcNode->name = ui->lineMsgName->text();
|
||||||
|
emit updatedTreeInfo(dbcNode);
|
||||||
|
});
|
||||||
|
|
||||||
installEventFilter(this);
|
installEventFilter(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ public:
|
|||||||
void refreshView();
|
void refreshView();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void updatedTreeInfo(QString oldData, QString newData, int type);
|
void updatedTreeInfo(DBC_NODE *node);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::DBCNodeEditor *ui;
|
Ui::DBCNodeEditor *ui;
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ DBCSignalEditor::DBCSignalEditor(QWidget *parent) :
|
|||||||
{
|
{
|
||||||
if (currentSignal == nullptr) return;
|
if (currentSignal == nullptr) return;
|
||||||
currentSignal->comment = ui->txtComment->text().simplified().replace(' ', '_');
|
currentSignal->comment = ui->txtComment->text().simplified().replace(' ', '_');
|
||||||
//updatedTreeInfo();
|
emit updatedTreeInfo(currentSignal);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(ui->txtUnitName, &QLineEdit::editingFinished,
|
connect(ui->txtUnitName, &QLineEdit::editingFinished,
|
||||||
@@ -153,7 +153,7 @@ DBCSignalEditor::DBCSignalEditor(QWidget *parent) :
|
|||||||
QString tempNameStr = ui->txtName->text().simplified().replace(' ', '_');
|
QString tempNameStr = ui->txtName->text().simplified().replace(' ', '_');
|
||||||
if (tempNameStr.length() > 0) currentSignal->name = tempNameStr;
|
if (tempNameStr.length() > 0) currentSignal->name = tempNameStr;
|
||||||
//need to update the tree too.
|
//need to update the tree too.
|
||||||
//updatedTreeInfo();
|
emit updatedTreeInfo(currentSignal);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(ui->txtMultiplexValue, &QLineEdit::editingFinished,
|
connect(ui->txtMultiplexValue, &QLineEdit::editingFinished,
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public:
|
|||||||
void refreshView();
|
void refreshView();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void updatedTreeInfo(QString oldData, QString newData, int type);
|
void updatedTreeInfo(DBC_SIGNAL *sig);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void bitfieldClicked(int x, int y);
|
void bitfieldClicked(int x, int y);
|
||||||
|
|||||||
@@ -109,13 +109,6 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QListWidget" name="listSample"/>
|
<widget class="QListWidget" name="listSample"/>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="btnClose">
|
|
||||||
<property name="text">
|
|
||||||
<string>Close</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
+1
-8
@@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>311</width>
|
<width>311</width>
|
||||||
<height>128</height>
|
<height>88</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@@ -38,13 +38,6 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="btnClose">
|
|
||||||
<property name="text">
|
|
||||||
<string>Close</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
|
|||||||
Reference in New Issue
Block a user