Cleaned up all the UI elements and error checking for rebase and duplicate

This commit is contained in:
Andy Huska
2022-10-09 10:45:30 -05:00
parent 18a9007750
commit e86cfb277a
8 changed files with 211 additions and 115 deletions
+4
View File
@@ -291,6 +291,10 @@ QString SocketCANd::decodeFrames(QString data, int busNum)
if(frameParsed.length() < 4) if(frameParsed.length() < 4)
{ {
qDebug() << "Received frame doesn't contain any data: " << data; qDebug() << "Received frame doesn't contain any data: " << data;
//todo
//this is not totally true, ive seen frames come through that look like < frame 1F020240 1664924225.371291 >
//if we found the closing token but theres no data then remove the message from the buffer
return data; return data;
} }
+11 -7
View File
@@ -358,9 +358,11 @@ void DBCMainEditor::onRebaseMessages()
node = dbcFile->findNodeByName(idString); node = dbcFile->findNodeByName(idString);
nodeRebaseEditor->setFileIdx(fileIdx); nodeRebaseEditor->setFileIdx(fileIdx);
nodeRebaseEditor->setNodeRef(node); nodeRebaseEditor->setNodeRef(node);
nodeRebaseEditor->refreshView(); if(nodeRebaseEditor->refreshView())
nodeRebaseEditor->setModal(true); {
nodeRebaseEditor->show(); nodeRebaseEditor->setModal(true);
nodeRebaseEditor->show();
}
} }
void DBCMainEditor::onDuplicateNode() void DBCMainEditor::onDuplicateNode()
@@ -376,10 +378,12 @@ void DBCMainEditor::onDuplicateNode()
idString = firstCol->text(0).split(" ")[0]; idString = firstCol->text(0).split(" ")[0];
node = dbcFile->findNodeByName(idString); node = dbcFile->findNodeByName(idString);
nodeDuplicateEditor->setFileIdx(fileIdx); nodeDuplicateEditor->setFileIdx(fileIdx);
nodeDuplicateEditor->setNodeRef(node); nodeDuplicateEditor->setNodeRef(node);
nodeDuplicateEditor->refreshView(); if(nodeDuplicateEditor->refreshView())
nodeDuplicateEditor->setModal(true); {
nodeDuplicateEditor->show(); nodeDuplicateEditor->setModal(true);
nodeDuplicateEditor->show();
}
} }
/* /*
+82 -49
View File
@@ -4,6 +4,7 @@
#include <QSettings> #include <QSettings>
#include <QKeyEvent> #include <QKeyEvent>
#include <QColorDialog> #include <QColorDialog>
#include <QMessageBox>
#include "helpwindow.h" #include "helpwindow.h"
#include "utility.h" #include "utility.h"
@@ -18,58 +19,87 @@ DBCNodeDuplicateEditor::DBCNodeDuplicateEditor(QWidget *parent) :
dbcHandler = DBCHandler::getReference(); dbcHandler = DBCHandler::getReference();
dbcNode = nullptr; dbcNode = nullptr;
connect(ui->btnDuplicate, &QPushButton::pressed, connect(ui->btnDuplicate, &QPushButton::pressed,
[=]() [=]()
{
if (dbcNode == nullptr) return;
if (lowestMsgId > 0x1FFFFFFFul) return;
uint newBase = Utility::ParseStringToNum(ui->lineNewBaseId->text());
if(newBase <= 0 || newBase > 0x1FFFFFFFul)
{ {
if (dbcNode == nullptr) return; QMessageBox::question(this, "Invalid Address", "The new address is outside of the valid range.",
if (lowestMsgId > 0x1FFFFFFFul) return; QMessageBox::Ok);
return;
}
uint newBase = Utility::ParseStringToNum(ui->lineNewBaseId->text()); if(newBase == lowestMsgId)
{
QMessageBox::question(this, "Invalid Address", "The new address is the same as the original.",
QMessageBox::Ok);
return;
}
if (newBase <= 0x1FFFFFFFul && newBase != lowestMsgId) uint rebaseDiff = newBase - lowestMsgId;
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode);
if(messagesForNode.count() == 0)
{
QMessageBox::question(this, "No Messages", "The node has no messages to duplicate.",
QMessageBox::Ok);
return;
}
if(ui->lineNodeName->text().isEmpty())
{
QMessageBox::question(this, "No Name", "The new node needs a name before it can be created.",
QMessageBox::Ok);
return;
}
QString newNodeName = ui->lineNodeName->text();
emit createNode(newNodeName);
DBC_NODE *nodePtr = dbcFile->findNodeByName(newNodeName);
if(nodePtr == nullptr)
{
QMessageBox::question(this, "Node Invalid", "There was an problem identifying the selected node.",
QMessageBox::Ok);
return;
}
for (int i=0; i<messagesForNode.count(); i++)
{
uint newMsgId = messagesForNode[i]->ID + rebaseDiff;
if(newMsgId < 0 || newMsgId > 0x1FFFFFFFul)
{ {
uint rebaseDiff = newBase - lowestMsgId; QMessageBox::question(this, "Invalid Address Range", "The new starting address would cause a message to be outside of the valid address range.",
QMessageBox::Ok);
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode); return;
if(messagesForNode.count() == 0)
{
return;
}
if(ui->lineNodeName->text().isEmpty())
{
//tell!
return;
}
QString newNodeName = ui->lineNodeName->text();
emit createNode(newNodeName);
DBC_NODE *nodePtr = dbcFile->findNodeByName(newNodeName);
if(nodePtr == nullptr)
{
//uhoh
return;
}
for (int i=0; i<messagesForNode.count(); i++)
{
uint newMsgId = messagesForNode[i]->ID + rebaseDiff;
emit cloneMessageToNode(nodePtr, messagesForNode[i], newMsgId);
}
dbcFile->setDirtyFlag();
emit nodeAdded();
} }
}); }
connect(ui->btnCancel, &QPushButton::pressed, for (int i=0; i<messagesForNode.count(); i++)
[=]()
{ {
uint newMsgId = messagesForNode[i]->ID + rebaseDiff;
emit cloneMessageToNode(nodePtr, messagesForNode[i], newMsgId);
}
dbcFile->setDirtyFlag();
emit nodeAdded();
}); this->close();
});
connect(ui->btnCancel, &QPushButton::pressed,
[=]()
{
this->close();
});
installEventFilter(this); installEventFilter(this);
} }
@@ -144,19 +174,20 @@ void DBCNodeDuplicateEditor::showEvent(QShowEvent* event)
refreshView(); refreshView();
} }
void DBCNodeDuplicateEditor::refreshView() bool DBCNodeDuplicateEditor::refreshView()
{ {
ui->lineNewBaseId->setText("");
if(dbcNode) if(dbcNode)
{ {
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode); QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode);
lowestMsgId = 0xFFFFFFFF;
if(messagesForNode.count() == 0) if(messagesForNode.count() == 0)
{ {
//?? return false;
} }
lowestMsgId = 0xFFFFFFFF;
for (int i=0; i<messagesForNode.count(); i++) for (int i=0; i<messagesForNode.count(); i++)
{ {
if(messagesForNode[i]->ID < lowestMsgId) if(messagesForNode[i]->ID < lowestMsgId)
@@ -165,7 +196,9 @@ void DBCNodeDuplicateEditor::refreshView()
ui->lineOriginalBaseId->setText(Utility::formatCANID(lowestMsgId & 0x1FFFFFFFul)); ui->lineOriginalBaseId->setText(Utility::formatCANID(lowestMsgId & 0x1FFFFFFFul));
ui->lineNodeName->setText(dbcNode->name + QString("_Copy")); ui->lineNodeName->setText(dbcNode->name + QString("_Copy"));
return true;
} }
//generateSampleText(); return false;
} }
+1 -1
View File
@@ -19,7 +19,7 @@ public:
void showEvent(QShowEvent*); void showEvent(QShowEvent*);
void setNodeRef(DBC_NODE *node); void setNodeRef(DBC_NODE *node);
void setFileIdx(int idx); void setFileIdx(int idx);
void refreshView(); bool refreshView();
signals: signals:
void updatedTreeInfo(DBC_MESSAGE *msg); void updatedTreeInfo(DBC_MESSAGE *msg);
+71 -49
View File
@@ -4,6 +4,7 @@
#include <QSettings> #include <QSettings>
#include <QKeyEvent> #include <QKeyEvent>
#include <QColorDialog> #include <QColorDialog>
#include <QMessageBox>
#include "helpwindow.h" #include "helpwindow.h"
#include "utility.h" #include "utility.h"
@@ -18,60 +19,78 @@ DBCNodeRebaseEditor::DBCNodeRebaseEditor(QWidget *parent) :
dbcHandler = DBCHandler::getReference(); dbcHandler = DBCHandler::getReference();
dbcNode = nullptr; dbcNode = nullptr;
connect(ui->btnDoRebase, &QPushButton::pressed, connect(ui->btnDoRebase, &QPushButton::pressed,
[=]() [=]()
{
if (dbcNode == nullptr)
{ {
if (dbcNode == nullptr) return; QMessageBox::question(this, "Node Invalid", "There was an problem identifying the selected node.",
if (lowestMsgId > 0x1FFFFFFFul) return; QMessageBox::Ok);
return;
}
uint newBase = Utility::ParseStringToNum(ui->lineEdit->text()); if (lowestMsgId > 0x1FFFFFFFul)
{
QMessageBox::question(this, "No Valid Messages", "The node has no valid messages to change.",
QMessageBox::Ok);
return;
}
if (newBase <= 0x1FFFFFFFul && newBase != lowestMsgId) uint newBase = Utility::ParseStringToNum(ui->lineNewBaseId->text());
if(newBase <= 0 || newBase > 0x1FFFFFFFul)
{
QMessageBox::question(this, "Invalid Address", "The new address is outside of the valid range.",
QMessageBox::Ok);
return;
}
if(newBase == lowestMsgId)
{
QMessageBox::question(this, "Invalid Address", "The new address is the same as the original.",
QMessageBox::Ok);
return;
}
uint rebaseDiff = newBase - lowestMsgId;
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode);
if(messagesForNode.count() == 0)
{
QMessageBox::question(this, "No Messages", "The node has no messages to change.",
QMessageBox::Ok);
return;
}
for (int i=0; i<messagesForNode.count(); i++)
{
uint newMsgId = messagesForNode[i]->ID + rebaseDiff;
if(newMsgId < 0 || newMsgId > 0x1FFFFFFFul)
{ {
uint rebaseDiff = newBase - lowestMsgId; QMessageBox::question(this, "Invalid Address Range", "The new starting address would cause a message to be outside of the valid address range.",
QMessageBox::Ok);
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode); return;
if(messagesForNode.count() == 0)
{
return;
}
for (int i=0; i<messagesForNode.count(); i++)
{
messagesForNode[i]->ID += rebaseDiff;
emit updatedTreeInfo(messagesForNode[i]);
}
dbcFile->setDirtyFlag();
} }
}
for (int i=0; i<messagesForNode.count(); i++)
});
connect(ui->btnCancel, &QPushButton::pressed,
[=]()
{ {
messagesForNode[i]->ID += rebaseDiff;
emit updatedTreeInfo(messagesForNode[i]);
}
dbcFile->setDirtyFlag();
}); this->close();
// connect(ui->lineOriginalBaseId, &QLineEdit::editingFinished, });
// [=]()
// {
// if (dbcNode == nullptr) return;
// if (dbcNode->comment != ui->lineComment->text()) dbcFile->setDirtyFlag();
// dbcNode->comment = ui->lineComment->text();
// emit updatedTreeInfo(dbcNode);
// });
// connect(ui->lineMsgName, &QLineEdit::editingFinished, connect(ui->btnCancel, &QPushButton::pressed,
// [=]() [=]()
// { {
// if (dbcNode == nullptr) return; this->close();
// if (dbcNode->name != ui->lineMsgName->text()) dbcFile->setDirtyFlag(); });
// dbcNode->name = ui->lineMsgName->text();
// emit updatedTreeInfo(dbcNode);
// });
installEventFilter(this); installEventFilter(this);
} }
@@ -146,19 +165,20 @@ void DBCNodeRebaseEditor::showEvent(QShowEvent* event)
refreshView(); refreshView();
} }
void DBCNodeRebaseEditor::refreshView() bool DBCNodeRebaseEditor::refreshView()
{ {
ui->lineNewBaseId->setText("");
if(dbcNode) if(dbcNode)
{ {
QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode); QList<DBC_MESSAGE*> messagesForNode = dbcFile->messageHandler->findMsgsByNode(dbcNode);
lowestMsgId = 0xFFFFFFFF;
if(messagesForNode.count() == 0) if(messagesForNode.count() == 0)
{ {
//?? return false;
} }
lowestMsgId = 0xFFFFFFFF;
for (int i=0; i<messagesForNode.count(); i++) for (int i=0; i<messagesForNode.count(); i++)
{ {
if(messagesForNode[i]->ID < lowestMsgId) if(messagesForNode[i]->ID < lowestMsgId)
@@ -167,7 +187,9 @@ void DBCNodeRebaseEditor::refreshView()
ui->lineOriginalBaseId->setText(Utility::formatCANID(lowestMsgId & 0x1FFFFFFFul)); ui->lineOriginalBaseId->setText(Utility::formatCANID(lowestMsgId & 0x1FFFFFFFul));
ui->lineNodeName->setText(dbcNode->name); ui->lineNodeName->setText(dbcNode->name);
return true;
} }
//generateSampleText(); return false;
} }
+1 -1
View File
@@ -19,7 +19,7 @@ public:
void showEvent(QShowEvent*); void showEvent(QShowEvent*);
void setNodeRef(DBC_NODE *node); void setNodeRef(DBC_NODE *node);
void setFileIdx(int idx); void setFileIdx(int idx);
void refreshView(); bool refreshView();
signals: signals:
void updatedTreeInfo(DBC_MESSAGE *msg); void updatedTreeInfo(DBC_MESSAGE *msg);
+16 -3
View File
@@ -7,11 +7,17 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>314</width> <width>314</width>
<height>193</height> <height>144</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle"> <property name="windowTitle">
<string>Dialog</string> <string>Duplicate Node</string>
</property> </property>
<widget class="QWidget" name="layoutWidget"> <widget class="QWidget" name="layoutWidget">
<property name="geometry"> <property name="geometry">
@@ -41,7 +47,14 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLineEdit" name="lineOriginalBaseId"/> <widget class="QLineEdit" name="lineOriginalBaseId">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLabel" name="label"> <widget class="QLabel" name="label">
+25 -5
View File
@@ -7,11 +7,17 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>303</width> <width>303</width>
<height>159</height> <height>148</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle"> <property name="windowTitle">
<string>Dialog</string> <string>Rebase All Node Messages</string>
</property> </property>
<widget class="QWidget" name="layoutWidget"> <widget class="QWidget" name="layoutWidget">
<property name="geometry"> <property name="geometry">
@@ -31,7 +37,14 @@
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QLineEdit" name="lineNodeName"/> <widget class="QLineEdit" name="lineNodeName">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="label_8"> <widget class="QLabel" name="label_8">
@@ -41,7 +54,14 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLineEdit" name="lineOriginalBaseId"/> <widget class="QLineEdit" name="lineOriginalBaseId">
<property name="enabled">
<bool>true</bool>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLabel" name="label"> <widget class="QLabel" name="label">
@@ -51,7 +71,7 @@
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="QLineEdit" name="lineEdit"/> <widget class="QLineEdit" name="lineNewBaseId"/>
</item> </item>
<item row="3" column="1"> <item row="3" column="1">
<widget class="QPushButton" name="btnDoRebase"> <widget class="QPushButton" name="btnDoRebase">