PeriDyno 1.0.0
Loading...
Searching...
No Matches
WVector3FieldWidget.cpp
Go to the documentation of this file.
2
4 : Wt::WContainerWidget(), mData1(nullptr)
5{
6 layout = this->setLayout(std::make_unique<Wt::WHBoxLayout>());
7 layout->setContentsMargins(0, 0, 0, 0);
8 layout->setSpacing(0);
9
10 setValue(field);
11 mfield = field;
12 mData1->valueChanged().connect(this, &WVector3FieldWidget::updateField);
13 mData2->valueChanged().connect(this, &WVector3FieldWidget::updateField);
14 mData3->valueChanged().connect(this, &WVector3FieldWidget::updateField);
15}
16
20
22{
23 std::string template_name = field->getTemplateName();
24
25 double v1 = 0;
26 double v2 = 0;
27 double v3 = 0;
28
29 if (template_name == std::string(typeid(dyno::Vec3f).name()))
30 {
32 auto v = f->getData();
33 v1 = v[0];
34 v2 = v[1];
35 v3 = v[2];
36 }
37 else if (template_name == std::string(typeid(dyno::Vec3d).name()))
38 {
40 auto v = f->getData();
41
42 v1 = v[0];
43 v2 = v[1];
44 v3 = v[2];
45 }
46
47 mData1 = layout->addWidget(std::make_unique<Wt::WDoubleSpinBox>());
48 mData2 = layout->addWidget(std::make_unique<Wt::WDoubleSpinBox>());
49 mData3 = layout->addWidget(std::make_unique<Wt::WDoubleSpinBox>());
50
51 mData1->setRange(field->getMin(), field->getMax());
52 mData2->setRange(field->getMin(), field->getMax());
53 mData3->setRange(field->getMin(), field->getMax());
54
55 mData1->setSingleStep(0.01);
56 mData2->setSingleStep(0.01);
57 mData3->setSingleStep(0.01);
58
59 mData1->setValue(v1);
60 mData2->setValue(v2);
61 mData3->setValue(v3);
62}
63
65{
66 double v1 = mData1->value();
67 double v2 = mData2->value();
68 double v3 = mData3->value();
69
70 std::string template_name = mfield->getTemplateName();
71
72 if (template_name == std::string(typeid(dyno::Vec3f).name()))
73 {
75 f->setValue(dyno::Vec3f((float)v1, (float)v2, (float)v3));
76 changeValue_.emit(1);
77 }
78 else if (template_name == std::string(typeid(dyno::Vec3d).name()))
79 {
81 f->setValue(dyno::Vec3d(v1, v2, v3));
82 changeValue_.emit(1);
83 }
84}
Wt::Signal< int > changeValue_
void setValue(dyno::FBase *)
Wt::WDoubleSpinBox * mData3
Wt::WHBoxLayout * layout
Wt::WDoubleSpinBox * mData1
WVector3FieldWidget(dyno::FBase *)
Wt::WDoubleSpinBox * mData2
virtual const std::string getTemplateName()
Definition FBase.h:51
float getMin()
Definition FBase.h:81
float getMax()
Definition FBase.h:84
DataType getData()
Definition Field.h:74
void setValue(T val)
Definition Field.h:111
TA * cast(TB *b)
Definition Typedef.inl:286
Vector< double, 3 > Vec3d
Definition Vector3D.h:94
Vector< float, 3 > Vec3f
Definition Vector3D.h:93