SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
sublayertabhelpers.h
Go to the documentation of this file.
1
13#ifndef OPENSWMMVIS_UI_DIALOGS_SUBLAYERTABHELPERS_H
14#define OPENSWMMVIS_UI_DIALOGS_SUBLAYERTABHELPERS_H
15
16#include "render/isublayer.h"
17
18#include <QCheckBox>
19#include <QDoubleSpinBox>
20#include <QFormLayout>
21#include <QObject>
22#include <QSpinBox>
23#include <QString>
24#include <QWidget>
25
26namespace openswmmvis::ui {
27
28// Minimum field widths — keeps the QFormLayouts from compressing the
29// editors when the dialog is narrow; the per-tab scroll areas pick up the
30// slack instead.
31inline constexpr int kSpinMinWidthPx = 110;
32inline constexpr int kComboMinWidthPx = 140;
33
34inline QDoubleSpinBox *makeDSpin(QWidget *parent, double lo, double hi, double step,
35 int decimals, double value,
36 const QString &suffix = QString())
37{
38 auto *s = new QDoubleSpinBox(parent);
39 s->setRange(lo, hi);
40 s->setSingleStep(step);
41 s->setDecimals(decimals);
42 if (!suffix.isEmpty()) s->setSuffix(suffix);
43 s->setValue(value);
44 s->setMinimumWidth(kSpinMinWidthPx);
45 return s;
46}
47
48inline QSpinBox *makeSpin(QWidget *parent, int lo, int hi, int value)
49{
50 auto *s = new QSpinBox(parent);
51 s->setRange(lo, hi);
52 s->setValue(value);
53 s->setMinimumWidth(kSpinMinWidthPx);
54 return s;
55}
56
60 const QString &showLabel)
61{
62 auto *row = new QWidget(parent);
63 auto *form = new QFormLayout(row);
64 form->setContentsMargins(0, 0, 0, 0);
65
66 auto *show = new QCheckBox(showLabel, row);
67 show->setChecked(sub && sub->isVisible());
68 form->addRow(QString(), show);
69
70 auto *opacity = makeDSpin(row, 0.0, 1.0, 0.05, 2,
71 sub ? double(sub->opacity()) : 1.0);
72 form->addRow(QObject::tr("Opacity:"), opacity);
73
74 if (sub) {
75 QObject::connect(show, &QCheckBox::toggled, sub,
76 [sub](bool on) { sub->setVisible(on); });
77 QObject::connect(opacity, qOverload<double>(&QDoubleSpinBox::valueChanged),
78 sub, [sub](double a) { sub->setOpacity(a); });
79 }
80 return row;
81}
82
83} // namespace openswmmvis::ui
84
85#endif // OPENSWMMVIS_UI_DIALOGS_SUBLAYERTABHELPERS_H
One toggleable visual aspect of a results / model layer.
Definition isublayer.h:87
double s
Scene px per model length unit.
Definition inletdrawingview.cpp:82
Toggleable visual aspect of an output layer.
std::vector< std::array< int, 3 > > sub
sub-triangle fan
Definition mesh2dresultsexport.cpp:107
double step
Definition meshcellparams.cpp:28
int decimals
Definition meshcellparams.cpp:30
int a
Definition meshquadmatch.cpp:46
Definition openswmmvislayer.h:43
QDoubleSpinBox * makeDSpin(QWidget *parent, double lo, double hi, double step, int decimals, double value, const QString &suffix=QString())
Definition sublayertabhelpers.h:34
constexpr int kComboMinWidthPx
Definition sublayertabhelpers.h:32
QWidget * makeSublayerHeader(QWidget *parent, OpenSWMM::Render::ISublayer *sub, const QString &showLabel)
Definition sublayertabhelpers.h:59
QSpinBox * makeSpin(QWidget *parent, int lo, int hi, int value)
Definition sublayertabhelpers.h:48
constexpr int kSpinMinWidthPx
Definition sublayertabhelpers.h:31
QVector< int > parent
union-find
Definition pslgminsize.cpp:176