Vast reworking of DBC editing system.
Currently not functional but the overall graphical layout is more or less complete.
This commit is contained in:
+9
-133
@@ -34,10 +34,7 @@ DBCSignalEditor::DBCSignalEditor(QWidget *parent) :
|
||||
ui->comboType->addItem("DOUBLE PRECISION");
|
||||
ui->comboType->addItem("STRING");
|
||||
|
||||
connect(ui->signalsList, SIGNAL(currentRowChanged(int)), this, SLOT(clickSignalList(int)));
|
||||
connect(ui->bitfield, SIGNAL(gridClicked(int,int)), this, SLOT(bitfieldClicked(int,int)));
|
||||
connect(ui->signalsList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomMenuSignals(QPoint)));
|
||||
ui->signalsList->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
connect(ui->valuesTable, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onCustomMenuValues(QPoint)));
|
||||
ui->valuesTable->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
connect(ui->valuesTable, SIGNAL(cellChanged(int,int)), this, SLOT(onValuesCellChanged(int,int)));
|
||||
@@ -155,7 +152,7 @@ DBCSignalEditor::DBCSignalEditor(QWidget *parent) :
|
||||
QString tempNameStr = ui->txtName->text().simplified().replace(' ', '_');
|
||||
if (tempNameStr.length() > 0) currentSignal->name = tempNameStr;
|
||||
//need to update the list too.
|
||||
ui->signalsList->currentItem()->setText(currentSignal->name);
|
||||
//ui->signalsList->currentItem()->setText(currentSignal->name);
|
||||
});
|
||||
|
||||
connect(ui->txtMultiplexValue, &QLineEdit::editingFinished,
|
||||
@@ -228,9 +225,6 @@ bool DBCSignalEditor::eventFilter(QObject *obj, QEvent *event)
|
||||
case Qt::Key_F1:
|
||||
HelpWindow::getRef()->showHelp("signaleditor.html");
|
||||
break;
|
||||
case Qt::Key_F2:
|
||||
cloneSignal();
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
@@ -278,12 +272,18 @@ void DBCSignalEditor::setMessageRef(DBC_MESSAGE *msg)
|
||||
dbcMessage = msg;
|
||||
}
|
||||
|
||||
void DBCSignalEditor::setSignalRef(DBC_SIGNAL *sig)
|
||||
{
|
||||
currentSignal = sig;
|
||||
}
|
||||
|
||||
|
||||
void DBCSignalEditor::showEvent(QShowEvent* event)
|
||||
{
|
||||
QDialog::showEvent(event);
|
||||
|
||||
currentSignal = nullptr;
|
||||
refreshSignalsList();
|
||||
fillSignalForm(currentSignal);
|
||||
fillValueTable(currentSignal);
|
||||
}
|
||||
|
||||
void DBCSignalEditor::onValuesCellChanged(int row,int col)
|
||||
@@ -317,21 +317,6 @@ void DBCSignalEditor::onValuesCellChanged(int row,int col)
|
||||
}
|
||||
}
|
||||
|
||||
void DBCSignalEditor::onCustomMenuSignals(QPoint point)
|
||||
{
|
||||
QMenu *menu = new QMenu(this);
|
||||
menu->setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
menu->addAction(tr("Add a new signal"), this, SLOT(addNewSignal()));
|
||||
if (ui->signalsList->currentRow() != -1)
|
||||
{
|
||||
menu->addAction(tr("Clone currently selected signal"), this, SLOT(cloneSignal()));
|
||||
menu->addAction(tr("Delete currently selected signal"), this, SLOT(deleteCurrentSignal()));
|
||||
}
|
||||
|
||||
menu->popup(ui->signalsList->mapToGlobal(point));
|
||||
}
|
||||
|
||||
void DBCSignalEditor::onCustomMenuValues(QPoint point)
|
||||
{
|
||||
QMenu *menu = new QMenu(this);
|
||||
@@ -342,86 +327,6 @@ void DBCSignalEditor::onCustomMenuValues(QPoint point)
|
||||
menu->popup(ui->valuesTable->mapToGlobal(point));
|
||||
}
|
||||
|
||||
void DBCSignalEditor::addNewSignal()
|
||||
{
|
||||
int num = QRandomGenerator::global()->bounded(70000);
|
||||
QString newName = "SIGNAL" + QString::number(num);
|
||||
DBC_SIGNAL newSig;
|
||||
newSig.name = newName;
|
||||
newSig.bias = 0.0;
|
||||
newSig.factor = 1.0;
|
||||
newSig.intelByteOrder = true;
|
||||
newSig.max = 0.0;
|
||||
newSig.min = 0.0;
|
||||
newSig.receiver = dbcFile->findNodeByIdx(0);
|
||||
newSig.signalSize = 1;
|
||||
newSig.startBit = 0;
|
||||
newSig.valType = UNSIGNED_INT;
|
||||
newSig.isMultiplexed = false;
|
||||
newSig.isMultiplexor = false;
|
||||
newSig.multiplexValue = 0;
|
||||
newSig.parentMessage = dbcMessage;
|
||||
|
||||
dbcMessage->sigHandler->addSignal(newSig);
|
||||
|
||||
/* add item at the end of the list and select it */
|
||||
/* this will call clickSignalList */
|
||||
ui->signalsList->addItem(newName);
|
||||
ui->signalsList->setCurrentRow(ui->signalsList->count()-1);
|
||||
}
|
||||
|
||||
void DBCSignalEditor::cloneSignal()
|
||||
{
|
||||
int num = QRandomGenerator::global()->bounded(100);
|
||||
|
||||
int idx = ui->signalsList->currentRow();
|
||||
if (idx < 0) return;
|
||||
|
||||
DBC_SIGNAL *oldSig = dbcMessage->sigHandler->findSignalByIdx(idx);
|
||||
if (!oldSig) return;
|
||||
|
||||
QString newName = oldSig->name + QString::number(num);
|
||||
DBC_SIGNAL newSig;
|
||||
newSig.name = newName;
|
||||
newSig.bias = oldSig->bias;
|
||||
newSig.factor = oldSig->factor;
|
||||
newSig.intelByteOrder = oldSig->intelByteOrder;
|
||||
newSig.max = oldSig->max;
|
||||
newSig.min = oldSig->min;
|
||||
newSig.receiver = oldSig->receiver;
|
||||
newSig.signalSize = oldSig->signalSize;
|
||||
newSig.startBit = oldSig->startBit;
|
||||
newSig.valType = oldSig->valType;
|
||||
newSig.valList.append(oldSig->valList);
|
||||
newSig.isMultiplexed = oldSig->isMultiplexed;
|
||||
newSig.isMultiplexor = oldSig->isMultiplexor; //maybe should force this false since you can't have two or more!
|
||||
newSig.multiplexValue = oldSig->multiplexValue;
|
||||
newSig.parentMessage = dbcMessage;
|
||||
|
||||
dbcMessage->sigHandler->addSignal(newSig);
|
||||
|
||||
/* add item at the end of the list */
|
||||
ui->signalsList->addItem(newName);
|
||||
|
||||
//unlike adding a signal we don't want to select the new signal here.
|
||||
//ui->signalsList->setCurrentRow(ui->signalsList->count()-1);
|
||||
}
|
||||
|
||||
void DBCSignalEditor::deleteCurrentSignal()
|
||||
{
|
||||
int currIdx = ui->signalsList->currentRow();
|
||||
|
||||
//if(currIdx==ui->signalsList->count()-1)
|
||||
//return;
|
||||
|
||||
if (currIdx > -1)
|
||||
{
|
||||
delete(ui->signalsList->item(currIdx));
|
||||
dbcMessage->sigHandler->removeSignal(currIdx);
|
||||
currentSignal = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void DBCSignalEditor::deleteCurrentValue()
|
||||
{
|
||||
int currIdx = ui->valuesTable->currentRow();
|
||||
@@ -432,25 +337,6 @@ void DBCSignalEditor::deleteCurrentValue()
|
||||
}
|
||||
}
|
||||
|
||||
void DBCSignalEditor::refreshSignalsList()
|
||||
{
|
||||
ui->signalsList->clear();
|
||||
|
||||
|
||||
for (int x = 0; x < dbcMessage->sigHandler->getCount(); x++)
|
||||
{
|
||||
DBC_SIGNAL *sig = dbcMessage->sigHandler->findSignalByIdx(x);
|
||||
ui->signalsList->addItem(sig->name);
|
||||
}
|
||||
|
||||
if( ui->signalsList->count()>0 ) {
|
||||
/* click first element */
|
||||
ui->signalsList->setCurrentRow(0);
|
||||
}
|
||||
else
|
||||
clickSignalList(-1);
|
||||
}
|
||||
|
||||
/* fillSignalForm also handles group "enabled" state */
|
||||
/* WARNING: fillSignalForm can be called recursively since it is in the listener of cbIntelFormat */
|
||||
void DBCSignalEditor::fillSignalForm(DBC_SIGNAL *sig)
|
||||
@@ -598,16 +484,6 @@ void DBCSignalEditor::fillValueTable(DBC_SIGNAL *sig)
|
||||
inhibitCellChanged = false;
|
||||
}
|
||||
|
||||
void DBCSignalEditor::clickSignalList(int row)
|
||||
{
|
||||
//qDebug() << ui->signalsList->item(row)->text();
|
||||
|
||||
DBC_SIGNAL *thisSig = (row<0) ? nullptr : dbcMessage->sigHandler->findSignalByName(ui->signalsList->item(row)->text());
|
||||
currentSignal = thisSig;
|
||||
fillSignalForm(thisSig);
|
||||
fillValueTable(thisSig);
|
||||
}
|
||||
|
||||
void DBCSignalEditor::bitfieldClicked(int x, int y)
|
||||
{
|
||||
int bit = (7 - x) + (y * 8);
|
||||
|
||||
Reference in New Issue
Block a user