PeriDyno 1.0.0
Loading...
Searching...
No Matches
WEnumFieldWidget.cpp
Go to the documentation of this file.
1#include "WEnumFieldWidget.h"
2
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
15
17{
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
45{
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}
dyno::FBase * mfield
void setValue(dyno::FBase *)
std::map< int, int > mComboxIndexMap
void updateField(int index)
WEnumFieldWidget(dyno::FBase *)
Wt::WHBoxLayout * layout
Wt::Signal< int > changeValue_
Wt::WComboBox * mData
TA * cast(TB *b)
Definition Typedef.inl:286