Skip to content

Commit 4810291

Browse files
committed
cleanup code
1 parent 70590ce commit 4810291

8 files changed

+57
-69
lines changed

tools/cabana/binaryview.cc

+13-17
Original file line numberDiff line numberDiff line change
@@ -289,33 +289,29 @@ void BinaryViewModel::updateState() {
289289
items.resize(row_count * column_count);
290290
endInsertRows();
291291
}
292+
293+
double max_f = 255.0;
294+
double factor = 0.25;
295+
double scaler = max_f / log2(1.0 + factor);
292296
char hex[3] = {'\0'};
293297
for (int i = 0; i < binary.size(); ++i) {
294298
for (int j = 0; j < 8; ++j) {
295-
items[i * column_count + j].val = ((binary[i] >> (7 - j)) & 1) != 0 ? '1' : '0';
296-
299+
auto &item = items[i * column_count + j];
300+
item.val = ((binary[i] >> (7 - j)) & 1) != 0 ? '1' : '0';
297301
// Bit update frequency based highlighting
298-
bool has_signal = items[i * column_count + j].sigs.size() > 0;
299-
double offset = has_signal ? 50 : 0;
300-
301-
double min_f = last_msg.bit_change_counts[i][7 - j] == 0 ? offset : offset + 25;
302-
double max_f = 255.0;
303-
304-
double factor = 0.25;
305-
double scaler = max_f / log2(1.0 + factor);
306-
307-
double alpha = std::clamp(offset + log2(1.0 + factor * (double)last_msg.bit_change_counts[i][7 - j] / (double)last_msg.count) * scaler, min_f, max_f);
308-
items[i * column_count + j].bg_color.setAlpha(alpha);
302+
double offset = !item.sigs.empty() ? 50 : 0;
303+
auto n = last_msg.bit_change_counts[i][7 - j];
304+
double min_f = n == 0 ? offset : offset + 25;
305+
double alpha = std::clamp(offset + log2(1.0 + factor * (double)n / (double)last_msg.count) * scaler, min_f, max_f);
306+
item.bg_color.setAlpha(alpha);
309307
}
310308
hex[0] = toHex(binary[i] >> 4);
311309
hex[1] = toHex(binary[i] & 0xf);
312310
items[i * column_count + 8].val = hex;
313311
items[i * column_count + 8].bg_color = last_msg.colors[i];
314312
}
315-
for (int i = binary.size(); i < row_count; ++i) {
316-
for (int j = 0; j < column_count; ++j) {
317-
items[i * column_count + j].val = "-";
318-
}
313+
for (int i = binary.size() * column_count; i < items.size(); ++i) {
314+
items[i].val = "-";
319315
}
320316

321317
for (int i = 0; i < items.size(); ++i) {

tools/cabana/chartswidget.cc

+2-9
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include <QRubberBand>
1212
#include <QPushButton>
1313
#include <QToolBar>
14-
#include <QToolButton>
1514
#include <QToolTip>
1615
#include <QtConcurrent>
1716

@@ -333,18 +332,12 @@ ChartView::ChartView(QWidget *parent) : QChartView(nullptr, parent) {
333332
move_icon = new QGraphicsPixmapItem(utils::icon("grip-horizontal"), chart);
334333
move_icon->setToolTip(tr("Drag and drop to combine charts"));
335334

336-
QToolButton *remove_btn = new QToolButton();
337-
remove_btn->setIcon(utils::icon("x"));
338-
remove_btn->setAutoRaise(true);
339-
remove_btn->setToolTip(tr("Remove Chart"));
335+
QToolButton *remove_btn = toolButton("x", tr("Remove Chart"));
340336
close_btn_proxy = new QGraphicsProxyWidget(chart);
341337
close_btn_proxy->setWidget(remove_btn);
342338
close_btn_proxy->setZValue(chart->zValue() + 11);
343339

344-
QToolButton *manage_btn = new QToolButton();
345-
manage_btn->setToolButtonStyle(Qt::ToolButtonIconOnly);
346-
manage_btn->setIcon(utils::icon("list"));
347-
manage_btn->setAutoRaise(true);
340+
QToolButton *manage_btn = toolButton("list", "");
348341
QMenu *menu = new QMenu(this);
349342
line_series_action = menu->addAction(tr("Line"), [this]() { setSeriesType(QAbstractSeries::SeriesTypeLine); });
350343
line_series_action->setCheckable(true);

tools/cabana/detailwidget.cc

+13-14
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#include <QFormLayout>
44
#include <QMenu>
55
#include <QMessageBox>
6-
#include <QToolButton>
76

87
#include "tools/cabana/commands.h"
98

@@ -22,22 +21,22 @@ DetailWidget::DetailWidget(ChartsWidget *charts, QWidget *parent) : charts(chart
2221
main_layout->addWidget(tabbar);
2322

2423
// message title
25-
QToolBar *toolbar = new QToolBar(this);
26-
toolbar->setIconSize({16, 16});
24+
QHBoxLayout *title_layout = new QHBoxLayout();
25+
title_layout->setContentsMargins(0, 6, 0, 0);
2726
time_label = new QLabel(this);
2827
time_label->setToolTip(tr("Current time"));
2928
time_label->setStyleSheet("QLabel{font-weight:bold;}");
30-
toolbar->addWidget(time_label);
29+
title_layout->addWidget(time_label);
3130
name_label = new ElidedLabel(this);
32-
name_label->setContentsMargins(5, 0, 5, 0);
3331
name_label->setStyleSheet("QLabel{font-weight:bold;}");
3432
name_label->setAlignment(Qt::AlignCenter);
3533
name_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
36-
toolbar->addWidget(name_label);
37-
toolbar->addAction(utils::icon("pencil"), "", this, &DetailWidget::editMsg)->setToolTip(tr("Edit Message"));
38-
remove_msg_act = toolbar->addAction(utils::icon("x-lg"), "", this, &DetailWidget::removeMsg);
39-
remove_msg_act->setToolTip(tr("Remove Message"));
40-
main_layout->addWidget(toolbar);
34+
title_layout->addWidget(name_label);
35+
auto edit_btn = toolButton("pencil", tr("Edit Message"));
36+
title_layout->addWidget(edit_btn);
37+
remove_btn = toolButton("x-lg", tr("Remove Message"));
38+
title_layout->addWidget(remove_btn);
39+
main_layout->addLayout(title_layout);
4140

4241
// warning
4342
warning_widget = new QWidget(this);
@@ -64,6 +63,8 @@ DetailWidget::DetailWidget(ChartsWidget *charts, QWidget *parent) : charts(chart
6463
tab_widget->addTab(history_log = new LogsWidget(this), utils::icon("stopwatch"), "&Logs");
6564
main_layout->addWidget(tab_widget);
6665

66+
QObject::connect(edit_btn, &QToolButton::clicked, this, &DetailWidget::editMsg);
67+
QObject::connect(remove_btn, &QToolButton::clicked, this, &DetailWidget::removeMsg);
6768
QObject::connect(binary_view, &BinaryView::resizeSignal, signal_view->model, &SignalModel::resizeSignal);
6869
QObject::connect(binary_view, &BinaryView::addSignal, signal_view->model, &SignalModel::addSignal);
6970
QObject::connect(binary_view, &BinaryView::signalHovered, signal_view, &SignalView::signalHovered);
@@ -83,9 +84,7 @@ DetailWidget::DetailWidget(ChartsWidget *charts, QWidget *parent) : charts(chart
8384
setMessage(tabbar->tabData(index).value<MessageId>());
8485
}
8586
});
86-
QObject::connect(tabbar, &QTabBar::tabCloseRequested, [this](int index) {
87-
tabbar->removeTab(index);
88-
});
87+
QObject::connect(tabbar, &QTabBar::tabCloseRequested, tabbar, &QTabBar::removeTab);
8988
QObject::connect(charts, &ChartsWidget::seriesChanged, signal_view, &SignalView::updateChartState);
9089
}
9190

@@ -141,7 +140,7 @@ void DetailWidget::refresh() {
141140
} else {
142141
warnings.push_back(tr("Drag-Select in binary view to create new signal."));
143142
}
144-
remove_msg_act->setEnabled(msg != nullptr);
143+
remove_btn->setEnabled(msg != nullptr);
145144
name_label->setText(msgName(msg_id));
146145

147146
if (!warnings.isEmpty()) {

tools/cabana/detailwidget.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#include <QDialogButtonBox>
44
#include <QSplitter>
55
#include <QTabWidget>
6-
#include <QToolBar>
76

87
#include "selfdrive/ui/qt/widgets/controls.h"
98
#include "tools/cabana/binaryview.h"
@@ -44,7 +43,7 @@ class DetailWidget : public QWidget {
4443
QWidget *warning_widget;
4544
QTabBar *tabbar;
4645
QTabWidget *tab_widget;
47-
QAction *remove_msg_act;
46+
QToolButton *remove_btn;
4847
LogsWidget *history_log;
4948
BinaryView *binary_view;
5049
SignalView *signal_view;

tools/cabana/signaledit.cc

+11-23
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
#include <QHeaderView>
77
#include <QMessageBox>
88
#include <QPushButton>
9-
#include <QToolButton>
109
#include <QVBoxLayout>
1110

1211
#include "tools/cabana/commands.h"
@@ -93,9 +92,8 @@ Qt::ItemFlags SignalModel::flags(const QModelIndex &index) const {
9392
}
9493

9594
int SignalModel::signalRow(const Signal *sig) const {
96-
auto &children = root->children;
97-
for (int i = 0; i < children.size(); ++i) {
98-
if (children[i]->sig == sig) return i;
95+
for (int i = 0; i < root->children.size(); ++i) {
96+
if (root->children[i]->sig == sig) return i;
9997
}
10098
return -1;
10199
}
@@ -367,11 +365,8 @@ SignalView::SignalView(ChartsWidget *charts, QWidget *parent) : charts(charts),
367365
filter_edit->setPlaceholderText(tr("filter signals"));
368366
hl->addWidget(filter_edit);
369367
hl->addStretch(1);
370-
auto collapse_btn = new QToolButton();
371-
collapse_btn->setIcon(utils::icon("dash-square"));
368+
auto collapse_btn = toolButton("dash-square", tr("Collapse All"));
372369
collapse_btn->setIconSize({12, 12});
373-
collapse_btn->setAutoRaise(true);
374-
collapse_btn->setToolTip(tr("Collapse All"));
375370
hl->addWidget(collapse_btn);
376371

377372
// tree view
@@ -416,16 +411,6 @@ void SignalView::setMessage(const MessageId &id) {
416411
}
417412

418413
void SignalView::rowsChanged() {
419-
auto create_btn = [](const QString &id, const QString &tooltip) {
420-
auto btn = new QToolButton();
421-
btn->setIcon(utils::icon(id));
422-
btn->setToolTip(tooltip);
423-
btn->setAutoRaise(true);
424-
return btn;
425-
};
426-
427-
signal_count_lb->setText(tr("Signals: %1").arg(model->rowCount()));
428-
429414
for (int i = 0; i < model->rowCount(); ++i) {
430415
auto index = model->index(i, 1);
431416
if (!tree->indexWidget(index)) {
@@ -434,8 +419,8 @@ void SignalView::rowsChanged() {
434419
h->setContentsMargins(0, 2, 0, 2);
435420
h->addStretch(1);
436421

437-
auto remove_btn = create_btn("x", tr("Remove signal"));
438-
auto plot_btn = create_btn("graph-up", "");
422+
auto remove_btn = toolButton("x", tr("Remove signal"));
423+
auto plot_btn = toolButton("graph-up", "");
439424
plot_btn->setCheckable(true);
440425
h->addWidget(plot_btn);
441426
h->addWidget(remove_btn);
@@ -448,6 +433,7 @@ void SignalView::rowsChanged() {
448433
});
449434
}
450435
}
436+
signal_count_lb->setText(tr("Signals: %1").arg(model->rowCount()));
451437
updateChartState();
452438
}
453439

@@ -475,10 +461,12 @@ void SignalView::selectSignal(const Signal *sig, bool expand) {
475461
void SignalView::updateChartState() {
476462
int i = 0;
477463
for (auto item : model->root->children) {
478-
auto plot_btn = tree->indexWidget(model->index(i, 1))->findChildren<QToolButton *>()[0];
479464
bool chart_opened = charts->hasSignal(msg_id, item->sig);
480-
plot_btn->setChecked(chart_opened);
481-
plot_btn->setToolTip(chart_opened ? tr("Close Plot") : tr("Show Plot\nSHIFT click to add to previous opened plot"));
465+
auto buttons = tree->indexWidget(model->index(i, 1))->findChildren<QToolButton *>();
466+
if (buttons.size() > 0) {
467+
buttons[0]->setChecked(chart_opened);
468+
buttons[0]->setToolTip(chart_opened ? tr("Close Plot") : tr("Show Plot\nSHIFT click to add to previous opened plot"));
469+
}
482470
++i;
483471
}
484472
}

tools/cabana/streams/abstractstream.cc

+6-4
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ bool AbstractStream::updateEvent(const Event *event) {
3131
data.dat = QByteArray((char *)c.getDat().begin(), c.getDat().size());
3232
data.count = ++counters[id];
3333
data.freq = data.count / std::max(1.0, current_sec);
34-
change_trackers[id].compute(data.dat, data.ts, data.freq);
35-
data.colors = change_trackers[id].colors;
36-
data.last_change_t = change_trackers[id].last_change_t;
37-
data.bit_change_counts = change_trackers[id].bit_change_counts;
34+
35+
auto &tracker = change_trackers[id];
36+
tracker.compute(data.dat, data.ts, data.freq);
37+
data.colors = tracker.colors;
38+
data.last_change_t = tracker.last_change_t;
39+
data.bit_change_counts = tracker.bit_change_counts;
3840
}
3941

4042
double ts = millis_since_boot();

tools/cabana/util.cc

+8
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,11 @@ QPixmap icon(const QString &id) {
130130
return pm;
131131
}
132132
} // namespace utils
133+
134+
QToolButton *toolButton(const QString &icon, const QString &tooltip) {
135+
auto btn = new QToolButton();
136+
btn->setIcon(utils::icon(icon));
137+
btn->setToolTip(tooltip);
138+
btn->setAutoRaise(true);
139+
return btn;
140+
};

tools/cabana/util.h

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <QRegExpValidator>
99
#include <QStringBuilder>
1010
#include <QStyledItemDelegate>
11+
#include <QToolButton>
1112
#include <QVector>
1213

1314
#include "tools/cabana/dbcmanager.h"
@@ -53,3 +54,5 @@ class NameValidator : public QRegExpValidator {
5354
namespace utils {
5455
QPixmap icon(const QString &id);
5556
}
57+
58+
QToolButton *toolButton(const QString &icon, const QString &tooltip);

0 commit comments

Comments
 (0)