Cabana: added color labels to signal list (#26485)

add color label
pull/26490/head
Dean Lee 2 years ago committed by GitHub
parent f924e797b7
commit 3d208567f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 55
      tools/cabana/signaledit.cc
  2. 5
      tools/cabana/signaledit.h

@ -71,22 +71,40 @@ SignalForm::SignalForm(QWidget *parent) : QWidget(parent) {
SignalEdit::SignalEdit(int index, QWidget *parent) : form_idx(index), QWidget(parent) { SignalEdit::SignalEdit(int index, QWidget *parent) : form_idx(index), QWidget(parent) {
QVBoxLayout *main_layout = new QVBoxLayout(this); QVBoxLayout *main_layout = new QVBoxLayout(this);
main_layout->setContentsMargins(0, 0, 0, 0); main_layout->setContentsMargins(0, 0, 0, 0);
main_layout->setSpacing(0);
// title bar // title bar
auto toolbar = new QToolBar(this); auto title_bar = new QWidget(this);
toolbar->setStyleSheet("QToolButton {width:15px;height:15px;font-size:15px}"); title_bar->setFixedHeight(32);
icon = new QLabel(); QHBoxLayout *title_layout = new QHBoxLayout(title_bar);
toolbar->addWidget(icon); title_layout->setContentsMargins(0, 0, 0, 0);
title_bar->setStyleSheet("QToolButton {width:15px;height:15px;font-size:15px}");
color_label = new QLabel(this);
color_label->setFixedWidth(25);
color_label->setContentsMargins(5, 0, 0, 0);
title_layout->addWidget(color_label);
icon = new QLabel(this);
title_layout->addWidget(icon);
title = new ElidedLabel(this); title = new ElidedLabel(this);
title->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); title->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
title->setStyleSheet(QString("font-weight:bold; color:%1").arg(getColor(index))); title_layout->addWidget(title);
toolbar->addWidget(title);
plot_btn = toolbar->addAction("", [this]() { emit showChart(msg_id, sig, !chart_opened); }); plot_btn = new QToolButton(this);
auto seek_btn = toolbar->addAction(QIcon::fromTheme("edit-find"), "", [this]() { SignalFindDlg(msg_id, sig, this).exec(); }); plot_btn->setText("📈");
plot_btn->setCheckable(true);
plot_btn->setAutoRaise(true);
title_layout->addWidget(plot_btn);
auto seek_btn = new QToolButton(this);
seek_btn->setIcon(QIcon::fromTheme("edit-find"));
seek_btn->setAutoRaise(true);
seek_btn->setToolTip(tr("Find signal values")); seek_btn->setToolTip(tr("Find signal values"));
auto remove_btn = toolbar->addAction("x", [this]() { emit remove(sig); }); title_layout->addWidget(seek_btn);
auto remove_btn = new QToolButton(this);
remove_btn->setAutoRaise(true);
remove_btn->setText("x");
remove_btn->setToolTip(tr("Remove signal")); remove_btn->setToolTip(tr("Remove signal"));
main_layout->addWidget(toolbar); title_layout->addWidget(remove_btn);
main_layout->addWidget(title_bar);
// signal form // signal form
form = new SignalForm(this); form = new SignalForm(this);
@ -99,8 +117,11 @@ SignalEdit::SignalEdit(int index, QWidget *parent) : form_idx(index), QWidget(pa
hline->setFrameShadow(QFrame::Sunken); hline->setFrameShadow(QFrame::Sunken);
main_layout->addWidget(hline); main_layout->addWidget(hline);
QObject::connect(form, &SignalForm::changed, this, &SignalEdit::saveSignal);
QObject::connect(title, &ElidedLabel::clicked, this, &SignalEdit::showFormClicked); QObject::connect(title, &ElidedLabel::clicked, this, &SignalEdit::showFormClicked);
QObject::connect(plot_btn, &QToolButton::clicked, [this](bool checked) { emit showChart(msg_id, sig, checked); });
QObject::connect(seek_btn, &QToolButton::clicked, [this]() { SignalFindDlg(msg_id, sig, this).exec(); });
QObject::connect(remove_btn, &QToolButton::clicked, [this]() { emit remove(sig); });
QObject::connect(form, &SignalForm::changed, this, &SignalEdit::saveSignal);
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
} }
@ -108,7 +129,9 @@ void SignalEdit::setSignal(const QString &message_id, const Signal *signal) {
sig = signal; sig = signal;
updateForm(msg_id == message_id && form->isVisible()); updateForm(msg_id == message_id && form->isVisible());
msg_id = message_id; msg_id = message_id;
title->setText(QString("%1. %2").arg(form_idx + 1).arg(sig->name.c_str())); color_label->setText(QString::number(form_idx + 1));
color_label->setStyleSheet(QString("background-color:%1").arg(getColor(form_idx)));
title->setText(sig->name.c_str());
show(); show();
} }
@ -145,9 +168,8 @@ void SignalEdit::saveSignal() {
} }
void SignalEdit::setChartOpened(bool opened) { void SignalEdit::setChartOpened(bool opened) {
plot_btn->setText(opened ? "" : "📈");
plot_btn->setToolTip(opened ? tr("Close Plot") : tr("Show Plot")); plot_btn->setToolTip(opened ? tr("Close Plot") : tr("Show Plot"));
chart_opened = opened; plot_btn->setChecked(opened);
} }
void SignalEdit::updateForm(bool visible) { void SignalEdit::updateForm(bool visible) {
@ -175,8 +197,9 @@ void SignalEdit::showFormClicked() {
} }
void SignalEdit::signalHovered(const Signal *s) { void SignalEdit::signalHovered(const Signal *s) {
auto color = sig == s ? hoverColor(getColor(form_idx)) : QColor(getColor(form_idx)); auto bg_color = sig == s ? hoverColor(getColor(form_idx)) : QColor(getColor(form_idx));
title->setStyleSheet(QString("font-weight:bold; color:%1").arg(color.name())); auto color = sig == s ? "white" : "black";
color_label->setStyleSheet(QString("color:%1; background-color:%2").arg(color).arg(bg_color.name()));
} }
void SignalEdit::hideEvent(QHideEvent *event) { void SignalEdit::hideEvent(QHideEvent *event) {

@ -1,6 +1,5 @@
#pragma once #pragma once
#include <QAction>
#include <QComboBox> #include <QComboBox>
#include <QDialog> #include <QDialog>
#include <QLabel> #include <QLabel>
@ -54,10 +53,10 @@ protected:
SignalForm *form = nullptr; SignalForm *form = nullptr;
ElidedLabel *title; ElidedLabel *title;
QLabel *color_label;
QLabel *icon; QLabel *icon;
int form_idx = 0; int form_idx = 0;
bool chart_opened = false; QToolButton *plot_btn;
QAction *plot_btn;
}; };
class SignalFindDlg : public QDialog { class SignalFindDlg : public QDialog {

Loading…
Cancel
Save