Changed the CAN data grid to waste less space (more for the grid now),

tweaks to the main DBC view to show the start bit and length after all
signals to make it easier to see the structure at a glance.
This commit is contained in:
Collin Kidder
2021-08-19 19:46:11 -04:00
parent 344cc5b36b
commit f37926a497
3 changed files with 53 additions and 27 deletions
+37 -26
View File
@@ -96,8 +96,8 @@ void CANDataGrid::paintEvent(QPaintEvent *event)
qDebug() << "XSpan" << xSpan << " YSpan " << ySpan; qDebug() << "XSpan" << xSpan << " YSpan " << ySpan;
int xSector = xSpan / 10; int xSector = xSpan / 9;
int ySector = ySpan / 10; int ySector = ySpan / 9;
blackBrush = QBrush(Qt::black); blackBrush = QBrush(Qt::black);
whiteBrush = QBrush(Qt::white); whiteBrush = QBrush(Qt::white);
@@ -105,39 +105,50 @@ void CANDataGrid::paintEvent(QPaintEvent *event)
greenBrush = QBrush(Qt::green); greenBrush = QBrush(Qt::green);
grayBrush = QBrush(QColor(230,230,230)); grayBrush = QBrush(QColor(230,230,230));
//the whole thing is broken up into 100 chunks which are allocated as such: //the whole thing is broken up into 81 chunks which are broken up
//The entirety of the upper row is taken up by "BITS" //into the 8x8 grid of bits in the bottom right and the other parts
//The next row down skips two columns and then has 7 6 5 4 3 2 1 0 //taken up by helper text
//The bottom right 64 entries are the grid
//The left most column has "BYTES" written vertically down it //bigTextSize is too large when the grid gets small. Might need to tweak it then.
//the next left most column has "0 1 2 3 4 5 6 7" written down along the grid double bigTextSize = qMin(xSector, ySector) * 0.5;
double smallTextSize = qMin(xSector, ySector) * 0.3;
painter.setPen(QPen(QApplication::palette().color(QPalette::Text))); painter.setPen(QPen(QApplication::palette().color(QPalette::Text)));
QFont mainFont; QFont mainFont;
mainFont.setPixelSize(qMin(xSector, ySector) - 10); mainFont.setPixelSize(bigTextSize);
painter.setFont(mainFont); painter.setFont(mainFont);
QFont smallFont; QFont smallFont;
smallFont.setPixelSize(qMin(xSector, ySector) - 15); smallFont.setPixelSize(smallTextSize);
QFont boldFont; QFont boldFont;
boldFont.setPixelSize(qMin(xSector, ySector) - 10); boldFont.setPixelSize(bigTextSize);
boldFont.setBold(true); boldFont.setBold(true);
painter.drawText(QRect(viewport.left(), viewport.top(), xSpan, ySector), Qt::AlignCenter, tr("BITS")); painter.drawText(QRect(viewport.left(), viewport.top(), xSector, ySector), Qt::AlignCenter, "BITS ->");
for (x = 0; x < 8; x++) for (x = 0; x < 8; x++)
{ {
painter.drawText(QRect(viewport.left() + (x+2) * xSector, viewport.top() + ySector, xSector, ySector), Qt::AlignCenter, QString::number(7-x)); painter.drawText(QRect(viewport.left() + (x+1) * xSector, viewport.top(), xSector, ySector), Qt::AlignCenter, QString::number(7-x));
}
for (y = 0; y < 8; y++)
{
painter.drawText(QRect(viewport.left() + xSector, viewport.top() + ySector * (y + 2), xSector, ySector), Qt::AlignCenter, QString::number(y));
} }
//for (y = 0; y < 8; y++)
//{
// painter.drawText(QRect(viewport.left() + xSector, viewport.top() + ySector * (y + 2), xSector, ySector), Qt::AlignCenter, QString::number(y));
//}
painter.drawText(viewport.left() + 10, viewport.top() + ySector * 4, "B"); painter.drawText(viewport.left() + 4, viewport.top() + ySector * 3, "B");
painter.drawText(viewport.left() + 10, viewport.top() + ySector * 5, "Y"); painter.drawText(viewport.left() + 4, viewport.top() + ySector * 4, "Y");
painter.drawText(viewport.left() + 10, viewport.top() + ySector * 6, "T"); painter.drawText(viewport.left() + 4, viewport.top() + ySector * 5, "T");
painter.drawText(viewport.left() + 10, viewport.top() + ySector * 7, "E"); painter.drawText(viewport.left() + 4, viewport.top() + ySector * 6, "E");
painter.drawText(viewport.left() + 10, viewport.top() + ySector * 8, "S"); painter.drawText(viewport.left() + 4, viewport.top() + ySector * 7, "S");
painter.drawText(QRect(viewport.left(), viewport.top() + ySector * 1, xSector, ySector), Qt::AlignCenter, "0");
painter.drawText(QRect(viewport.left(), viewport.top() + ySector * 2, xSector, ySector), Qt::AlignCenter, "1");
painter.drawText(QRect(viewport.left(), viewport.top() + ySector * 3, xSector, ySector), Qt::AlignCenter, "2");
painter.drawText(QRect(viewport.left(), viewport.top() + ySector * 4, xSector, ySector), Qt::AlignCenter, "3");
painter.drawText(QRect(viewport.left(), viewport.top() + ySector * 5, xSector, ySector), Qt::AlignCenter, "4");
painter.drawText(QRect(viewport.left(), viewport.top() + ySector * 6, xSector, ySector), Qt::AlignCenter, "5");
painter.drawText(QRect(viewport.left(), viewport.top() + ySector * 7, xSector, ySector), Qt::AlignCenter, "6");
painter.drawText(QRect(viewport.left(), viewport.top() + ySector * 8, xSector, ySector), Qt::AlignCenter, "7");
//now, color the bitfield by seeing if a given bit is freshly set/unset in the new data //now, color the bitfield by seeing if a given bit is freshly set/unset in the new data
//compared to the old. Bits that are not set in either are white, bits set in both are black //compared to the old. Bits that are not set in either are white, bits set in both are black
@@ -187,7 +198,7 @@ void CANDataGrid::paintEvent(QPaintEvent *event)
} }
//painter.fillRect(viewport.left() + (x+2) * xSector, viewport.top() + (y+2) * ySector, xSector, ySector, redBrush); //painter.fillRect(viewport.left() + (x+2) * xSector, viewport.top() + (y+2) * ySector, xSector, ySector, redBrush);
painter.drawRect(viewport.left() + (x+2) * xSector, viewport.top() + (y+2) * ySector, xSector, ySector); painter.drawRect(viewport.left() + (x+1) * xSector, viewport.top() + (y+1) * ySector, xSector, ySector);
switch (textStates[x][y]) switch (textStates[x][y])
{ {
case GridTextState::NORMAL: case GridTextState::NORMAL:
@@ -205,12 +216,12 @@ void CANDataGrid::paintEvent(QPaintEvent *event)
break; break;
} }
painter.drawText(viewport.left() + (x+2) * xSector + (xSector / 8), viewport.top() + (y + 3) * ySector - (ySector / 3), QString::number(y * 8 + (7-x))); painter.drawText(viewport.left() + (x+1) * xSector + (xSector / 8), viewport.top() + (y + 2) * ySector - (ySector / 3), QString::number(y * 8 + (7-x)));
painter.setPen(QPen(Qt::gray)); painter.setPen(QPen(Qt::gray));
} }
} }
upperLeft.setX(viewport.left() + 2 * xSector); upperLeft.setX(viewport.left() + 1 * xSector);
upperLeft.setY(viewport.top() + 2 * ySector); upperLeft.setY(viewport.top() + 1 * ySector);
gridSize.setX(xSector); gridSize.setX(xSector);
gridSize.setY(ySector); gridSize.setY(ySector);
} }
+10 -1
View File
@@ -116,11 +116,20 @@
<number>28</number> <number>28</number>
</property> </property>
<property name="headerHidden"> <property name="headerHidden">
<bool>true</bool> <bool>false</bool>
</property> </property>
<property name="expandsOnDoubleClick"> <property name="expandsOnDoubleClick">
<bool>false</bool> <bool>false</bool>
</property> </property>
<property name="columnCount">
<number>1</number>
</property>
<attribute name="headerVisible">
<bool>true</bool>
</attribute>
<attribute name="headerStretchLastSection">
<bool>true</bool>
</attribute>
<column> <column>
<property name="text"> <property name="text">
<string notr="true">1</string> <string notr="true">1</string>
+6
View File
@@ -41,6 +41,12 @@
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="CANDataGrid" name="bitfield" native="true"> <widget class="CANDataGrid" name="bitfield" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>300</width> <width>300</width>