PeriDyno
1.0.0
Loading...
Searching...
No Matches
D:
Peridyno
peridyno
src
Rendering
GUI
WtGUI
PropertyItem
WEnumFieldWidget.cpp
Go to the documentation of this file.
1
#include "
WEnumFieldWidget.h
"
2
3
WEnumFieldWidget::WEnumFieldWidget
(
dyno::FBase
* field)
4
{
5
layout
= this->setLayout(std::make_unique<Wt::WHBoxLayout>());
6
layout
->setContentsMargins(0, 0, 0, 0);
7
layout
->setSpacing(0);
8
9
setValue
(field);
10
mfield
= field;
11
mData
->activated().connect(
this
, &
WEnumFieldWidget::updateField
);
12
}
13
14
WEnumFieldWidget::~WEnumFieldWidget
() {}
15
16
void
WEnumFieldWidget::setValue
(
dyno::FBase
* field)
17
{
18
auto
f =
TypeInfo::cast<dyno::FVar<dyno::PEnum>
>(field);
19
if
(f ==
nullptr
|| f->getDataPtr() ==
nullptr
) {
20
return
;
21
}
22
23
mData
=
layout
->addWidget(std::make_unique<Wt::WComboBox>());
24
25
auto
& enums = f->getDataPtr()->enumMap();
26
int
num = 0;
27
int
curIndex = 0;
28
for
(
auto
e : enums)
29
{
30
mComboxIndexMap
[num] = e.first;
31
mData
->addItem(e.second);
32
33
if
(e.first == f->getDataPtr()->currentKey())
34
{
35
curIndex = num;
36
}
37
38
num++;
39
}
40
41
mData
->setCurrentIndex(curIndex);
42
}
43
44
void
WEnumFieldWidget::updateField
(
int
index)
45
{
46
auto
f =
TypeInfo::cast<dyno::FVar<dyno::PEnum>
>(
mfield
);
47
if
(f ==
nullptr
|| f->getDataPtr() ==
nullptr
) {
48
return
;
49
}
50
51
auto
& enums = f->getDataPtr()->enumMap();
52
53
f->getDataPtr()->setCurrentKey(
mComboxIndexMap
[index]);
54
55
f->update();
56
changeValue_
.emit(1);
57
}
WEnumFieldWidget.h
WEnumFieldWidget::mfield
dyno::FBase * mfield
Definition
WEnumFieldWidget.h:30
WEnumFieldWidget::setValue
void setValue(dyno::FBase *)
Definition
WEnumFieldWidget.cpp:16
WEnumFieldWidget::mComboxIndexMap
std::map< int, int > mComboxIndexMap
Definition
WEnumFieldWidget.h:34
WEnumFieldWidget::updateField
void updateField(int index)
Definition
WEnumFieldWidget.cpp:44
WEnumFieldWidget::WEnumFieldWidget
WEnumFieldWidget(dyno::FBase *)
Definition
WEnumFieldWidget.cpp:3
WEnumFieldWidget::layout
Wt::WHBoxLayout * layout
Definition
WEnumFieldWidget.h:31
WEnumFieldWidget::~WEnumFieldWidget
~WEnumFieldWidget()
Definition
WEnumFieldWidget.cpp:14
WEnumFieldWidget::changeValue_
Wt::Signal< int > changeValue_
Definition
WEnumFieldWidget.h:35
WEnumFieldWidget::mData
Wt::WComboBox * mData
Definition
WEnumFieldWidget.h:32
dyno::FBase
Definition
FBase.h:44
TypeInfo::cast
TA * cast(TB *b)
Definition
Typedef.inl:286
Generated by
1.13.2