cabana: small improvements to charts (#27140)

* cabana: small improvements to charts toolbar

* show column count when wide enough

* call setspacing

* set in same place

* remove call to updateToolBar()
pull/27146/head
Willem Melching 2 years ago committed by GitHub
parent a84b601d4c
commit fa4f37a098
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 20
      tools/cabana/chartswidget.cc
  2. 3
      tools/cabana/chartswidget.h

@ -30,8 +30,8 @@ ChartsWidget::ChartsWidget(QWidget *parent) : QWidget(parent) {
title_label->setContentsMargins(0, 0, 12, 0); title_label->setContentsMargins(0, 0, 12, 0);
columns_cb = new QComboBox(this); columns_cb = new QComboBox(this);
columns_cb->addItems({"1", "2", "3", "4"}); columns_cb->addItems({"1", "2", "3", "4"});
toolbar->addWidget(new QLabel(tr("Columns:"))); columns_lb_action = toolbar->addWidget(new QLabel(tr("Columns:")));
toolbar->addWidget(columns_cb); columns_cb_action = toolbar->addWidget(columns_cb);
QLabel *stretch_label = new QLabel(this); QLabel *stretch_label = new QLabel(this);
stretch_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); stretch_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
@ -46,8 +46,7 @@ ChartsWidget::ChartsWidget(QWidget *parent) : QWidget(parent) {
range_slider->setPageStep(60); // 1 min range_slider->setPageStep(60); // 1 min
toolbar->addWidget(range_slider); toolbar->addWidget(range_slider);
toolbar->addWidget(zoom_range_lb = new QLabel()); reset_zoom_btn = toolbar->addAction(bootstrapPixmap("zoom-out"), "");
reset_zoom_btn = toolbar->addAction(bootstrapPixmap("arrow-counterclockwise"), "");
reset_zoom_btn->setToolTip(tr("Reset zoom (drag on chart to zoom X-Axis)")); reset_zoom_btn->setToolTip(tr("Reset zoom (drag on chart to zoom X-Axis)"));
remove_all_btn = toolbar->addAction(bootstrapPixmap("x"), ""); remove_all_btn = toolbar->addAction(bootstrapPixmap("x"), "");
remove_all_btn->setToolTip(tr("Remove all charts")); remove_all_btn->setToolTip(tr("Remove all charts"));
@ -55,10 +54,13 @@ ChartsWidget::ChartsWidget(QWidget *parent) : QWidget(parent) {
main_layout->addWidget(toolbar); main_layout->addWidget(toolbar);
// charts // charts
charts_layout = new QGridLayout();
charts_layout->setSpacing(10);
QWidget *charts_container = new QWidget(this); QWidget *charts_container = new QWidget(this);
QVBoxLayout *charts_main_layout = new QVBoxLayout(charts_container); QVBoxLayout *charts_main_layout = new QVBoxLayout(charts_container);
charts_main_layout->setContentsMargins(0, 0, 0, 0); charts_main_layout->setContentsMargins(0, 0, 0, 0);
charts_main_layout->addLayout(charts_layout = new QGridLayout); charts_main_layout->addLayout(charts_layout);
charts_main_layout->addStretch(0); charts_main_layout->addStretch(0);
QScrollArea *charts_scroll = new QScrollArea(this); QScrollArea *charts_scroll = new QScrollArea(this);
@ -167,7 +169,6 @@ void ChartsWidget::setMaxChartRange(int value) {
void ChartsWidget::updateToolBar() { void ChartsWidget::updateToolBar() {
range_lb->setText(QString(" %1:%2 ").arg(max_chart_range / 60, 2, 10, QLatin1Char('0')).arg(max_chart_range % 60, 2, 10, QLatin1Char('0'))); range_lb->setText(QString(" %1:%2 ").arg(max_chart_range / 60, 2, 10, QLatin1Char('0')).arg(max_chart_range % 60, 2, 10, QLatin1Char('0')));
zoom_range_lb->setText(is_zoomed ? tr("Zooming: %1 - %2").arg(zoomed_range.first, 0, 'f', 2).arg(zoomed_range.second, 0, 'f', 2) : "");
title_label->setText(tr("Charts: %1").arg(charts.size())); title_label->setText(tr("Charts: %1").arg(charts.size()));
dock_btn->setIcon(bootstrapPixmap(docking ? "arrow-up-right" : "arrow-down-left")); dock_btn->setIcon(bootstrapPixmap(docking ? "arrow-up-right" : "arrow-down-left"));
dock_btn->setToolTip(docking ? tr("Undock charts") : tr("Dock charts")); dock_btn->setToolTip(docking ? tr("Undock charts") : tr("Dock charts"));
@ -230,8 +231,13 @@ void ChartsWidget::setColumnCount(int n) {
void ChartsWidget::updateLayout() { void ChartsWidget::updateLayout() {
int n = column_count; int n = column_count;
for (; n > 1; --n) { for (; n > 1; --n) {
if ((n * (CHART_MIN_WIDTH + charts_layout->spacing())) < rect().width()) break; if ((n * CHART_MIN_WIDTH + (n - 1) * charts_layout->spacing()) < charts_layout->geometry().width()) break;
} }
bool show_column_cb = n > 1;
columns_lb_action->setVisible(show_column_cb);
columns_cb_action->setVisible(show_column_cb);
for (int i = 0; i < charts.size(); ++i) { for (int i = 0; i < charts.size(); ++i) {
charts_layout->addWidget(charts[charts.size() - i - 1], i / n, i % n); charts_layout->addWidget(charts[charts.size() - i - 1], i / n, i % n);
} }

@ -116,7 +116,6 @@ private:
ChartView *findChart(const QString &id, const Signal *sig); ChartView *findChart(const QString &id, const Signal *sig);
QLabel *title_label; QLabel *title_label;
QLabel *zoom_range_lb;
QLabel *range_lb; QLabel *range_lb;
QSlider *range_slider; QSlider *range_slider;
bool docking = true; bool docking = true;
@ -131,6 +130,8 @@ private:
std::pair<double, double> display_range; std::pair<double, double> display_range;
std::pair<double, double> zoomed_range; std::pair<double, double> zoomed_range;
bool use_dark_theme = false; bool use_dark_theme = false;
QAction *columns_lb_action;
QAction *columns_cb_action;
QComboBox *columns_cb; QComboBox *columns_cb;
int column_count = 1; int column_count = 1;
const int CHART_MIN_WIDTH = 300; const int CHART_MIN_WIDTH = 300;

Loading…
Cancel
Save