70 const double max_dbl = std::numeric_limits<double>::max();
76 bool hasMinMax =
true;
85 json_object *suggestedMinValue = NULL;
86 if (json_object_object_get_ex(details,
"suggestedMin", &suggestedMinValue))
92 json_object *suggestedMaxValue = NULL;
93 if (json_object_object_get_ex(details,
"suggestedMax", &suggestedMaxValue))
99 json_object *suggestedStepValue = NULL;
100 if (json_object_object_get_ex(details,
"suggestedStep", &suggestedStepValue))
104 json_object *requireMinValue = NULL;
105 if (json_object_object_get_ex(details,
"requireMin", &requireMinValue))
109 json_object *requireMaxValue = NULL;
110 if (json_object_object_get_ex(details,
"requireMax", &requireMaxValue))
114 spinbox_min = initSpinBox(dialog, current.minimum, suggestedMin.minimum, suggestedMax.minimum, suggestedStep.minimum);
119 spinbox_min->setSpecialValueText(
"-∞");
120 connect(spinbox_min,
static_cast<void (QDoubleSpinBox::*)(
double)
>(&QDoubleSpinBox::valueChanged),
this, &VuoInputEditorRange::onSpinboxUpdate);
123 spinbox_max = initSpinBox(dialog, current.maximum, suggestedMin.maximum, suggestedMax.maximum, suggestedStep.maximum);
139 connect(spinbox_max,
static_cast<void (QDoubleSpinBox::*)(
double)
>(&QDoubleSpinBox::valueChanged),
this, &VuoInputEditorRange::onSpinboxUpdate);
144 slider_min =
new QSlider(&dialog);
145 slider_max =
new QSlider(&dialog);
147 slider_min = initSlider(slider_min, current.minimum, suggestedMin.minimum, suggestedMax.minimum, suggestedStep.minimum);
148 slider_max = initSlider(slider_max, current.maximum, suggestedMin.maximum, suggestedMax.maximum, suggestedStep.maximum);
150 connect(slider_min, &QSlider::valueChanged,
this, &VuoInputEditorRange::onSliderUpdate);
151 connect(slider_max, &QSlider::valueChanged,
this, &VuoInputEditorRange::onSliderUpdate);
155 QGridLayout* layout =
new QGridLayout;
156 dialog.setLayout(layout);
161 layout->setContentsMargins(4, 4, 12, 4);
162 layout->setSpacing(4);
163 layout->setHorizontalSpacing(8);
171 toggle_hasMin =
new QCheckBox(
"Minimum");
173 toggle_hasMin->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
174 connect(toggle_hasMin, &QCheckBox::stateChanged,
this, &VuoInputEditorRange::setHasMinBound);
175 layout->addWidget(toggle_hasMin, row, 0);
176 setHasMinBound(toggle_hasMin->isChecked() ? Qt::Checked : Qt::Unchecked);
180 layout->addWidget(
makeLabel(
"Minimum"), row, 0);
183 spinbox_min->setEnabled(toggle_hasMin == NULL || toggle_hasMin->isChecked());
184 layout->addWidget(spinbox_min, row++, 1);
188 slider_min->setEnabled(toggle_hasMin == NULL || toggle_hasMin->isChecked());
189 layout->addWidget(slider_min, row++, 1);
197 toggle_hasMax =
new QCheckBox(
"Maximum");
199 toggle_hasMax->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
200 connect(toggle_hasMax, &QCheckBox::stateChanged,
this, &VuoInputEditorRange::setHasMaxBound);
201 layout->addWidget(toggle_hasMax, row, 0);
202 setHasMaxBound(toggle_hasMax->isChecked() ? Qt::Checked : Qt::Unchecked);
206 layout->addWidget(
makeLabel(
"Maximum"), row, 0);
209 spinbox_max->setEnabled(toggle_hasMax == NULL || toggle_hasMax->isChecked());
210 layout->addWidget(spinbox_max, row++, 1);
214 slider_max->setEnabled(toggle_hasMax == NULL || toggle_hasMax->isChecked());
215 layout->addWidget(slider_max, row, 1);
219 dialog.setMaximumWidth(1);
220 dialog.setMaximumHeight(1);
226 spinbox_min->setFocus();
227 spinbox_min->selectAll();