75 const double max_dbl = std::numeric_limits<double>::max();
77 VuoPoint4d suggestedMin =
VuoPoint4d_make(-max_dbl, -max_dbl, -max_dbl, -max_dbl);
78 VuoPoint4d suggestedMax =
VuoPoint4d_make( max_dbl, max_dbl, max_dbl, max_dbl);
81 bool hasMinMax =
true;
82 bool tabCycleForward =
true;
87 json_object *forwardTabTraversal = NULL;
88 if (json_object_object_get_ex(details,
"forwardTabTraversal", &forwardTabTraversal))
89 tabCycleForward = json_object_get_boolean(forwardTabTraversal);
92 json_object *suggestedMinValue = NULL;
93 if (json_object_object_get_ex(details,
"suggestedMin", &suggestedMinValue))
99 json_object *suggestedMaxValue = NULL;
100 if (json_object_object_get_ex(details,
"suggestedMax", &suggestedMaxValue))
108 (suggestedMax.y - suggestedMin.y)/10.,
109 (suggestedMax.z - suggestedMin.z)/10.,
110 (suggestedMax.w - suggestedMin.w)/10.);
111 json_object *suggestedStepValue = NULL;
112 if (json_object_object_get_ex(details,
"suggestedStep", &suggestedStepValue))
116 suggestedMinForCoord[coord_x] = suggestedMin.x;
117 suggestedMinForCoord[coord_y] = suggestedMin.y;
118 suggestedMinForCoord[coord_z] = suggestedMin.z;
119 suggestedMinForCoord[coord_w] = suggestedMin.w;
121 suggestedMaxForCoord[coord_x] = suggestedMax.x;
122 suggestedMaxForCoord[coord_y] = suggestedMax.y;
123 suggestedMaxForCoord[coord_z] = suggestedMax.z;
124 suggestedMaxForCoord[coord_w] = suggestedMax.w;
126 suggestedStepForCoord[coord_x] = suggestedStep.x;
127 suggestedStepForCoord[coord_y] = suggestedStep.y;
128 suggestedStepForCoord[coord_z] = suggestedStep.z;
129 suggestedStepForCoord[coord_w] = suggestedStep.w;
131 spinboxForCoord[coord_x] = initSpinBox(coord_x, dialog, current.x);
132 spinboxForCoord[coord_y] = initSpinBox(coord_y, dialog, current.y);
133 spinboxForCoord[coord_z] = initSpinBox(coord_z, dialog, current.z);
134 spinboxForCoord[coord_w] = initSpinBox(coord_w, dialog, current.w);
136 connect(spinboxForCoord[coord_x],
static_cast<void (QDoubleSpinBox::*)(
const QString &)
>(&QDoubleSpinBox::valueChanged),
this, &VuoInputEditorPoint4d::onSpinboxUpdate);
137 connect(spinboxForCoord[coord_y],
static_cast<void (QDoubleSpinBox::*)(
const QString &)
>(&QDoubleSpinBox::valueChanged),
this, &VuoInputEditorPoint4d::onSpinboxUpdate);
138 connect(spinboxForCoord[coord_z],
static_cast<void (QDoubleSpinBox::*)(
const QString &)
>(&QDoubleSpinBox::valueChanged),
this, &VuoInputEditorPoint4d::onSpinboxUpdate);
139 connect(spinboxForCoord[coord_w],
static_cast<void (QDoubleSpinBox::*)(
const QString &)
>(&QDoubleSpinBox::valueChanged),
this, &VuoInputEditorPoint4d::onSpinboxUpdate);
143 sliderForCoord[coord_x] = initSlider(coord_x, dialog, current.x);
144 sliderForCoord[coord_y] = initSlider(coord_y, dialog, current.y);
145 sliderForCoord[coord_z] = initSlider(coord_z, dialog, current.z);
146 sliderForCoord[coord_w] = initSlider(coord_w, dialog, current.w);
148 connect(sliderForCoord[coord_x], &QSlider::valueChanged,
this, &VuoInputEditorPoint4d::onSliderUpdate);
149 connect(sliderForCoord[coord_y], &QSlider::valueChanged,
this, &VuoInputEditorPoint4d::onSliderUpdate);
150 connect(sliderForCoord[coord_z], &QSlider::valueChanged,
this, &VuoInputEditorPoint4d::onSliderUpdate);
151 connect(sliderForCoord[coord_w], &QSlider::valueChanged,
this, &VuoInputEditorPoint4d::onSliderUpdate);
155 QGridLayout* layout =
new QGridLayout;
156 dialog.setLayout(layout);
161 layout->setContentsMargins(4, 4, 16, 4);
162 layout->setSpacing(4);
166 layout->addWidget(
makeLabel(
"X"), row, 0, Qt::AlignHCenter);
167 layout->addWidget(spinboxForCoord[coord_x], row++, 1);
168 if(hasMinMax) layout->addWidget(sliderForCoord[coord_x], row++, 1);
170 layout->addWidget(
makeLabel(
"Y"), row, 0, Qt::AlignHCenter);
171 layout->addWidget(spinboxForCoord[coord_y], row++, 1);
172 if(hasMinMax) layout->addWidget(sliderForCoord[coord_y], row++, 1);
174 layout->addWidget(
makeLabel(
"Z"), row, 0, Qt::AlignHCenter);
175 layout->addWidget(spinboxForCoord[coord_z], row++, 1);
176 if(hasMinMax) layout->addWidget(sliderForCoord[coord_z], row++, 1);
178 layout->addWidget(
makeLabel(
"W"), row, 0, Qt::AlignHCenter);
179 layout->addWidget(spinboxForCoord[coord_w], row++, 1);
180 if(hasMinMax) layout->addWidget(sliderForCoord[coord_w], row++, 1);
183 dialog.setMaximumWidth(1);
184 dialog.setMaximumHeight(1);
195 (tabCycleForward ? spinboxForCoord[coord_x] : spinboxForCoord[coord_w])->setFocus();
196 (tabCycleForward ? spinboxForCoord[coord_x] : spinboxForCoord[coord_w])->selectAll();