1
|
#include <Wt/WApplication>
|
2
|
#include <Wt/WContainerWidget>
|
3
|
#include <Wt/WVBoxLayout>
|
4
|
#include <Wt/WPushButton>
|
5
|
#include <Wt/WBootstrapTheme>
|
6
|
#include <Wt/WPanel>
|
7
|
|
8
|
class CButtonWidget : public Wt::WContainerWidget
|
9
|
{
|
10
|
public:
|
11
|
CButtonWidget() : Wt::WContainerWidget() {}
|
12
|
|
13
|
void addButton () { this->addWidget (new Wt::WPushButton("Test")); }
|
14
|
};
|
15
|
|
16
|
class CChooserWidget : public Wt::WContainerWidget {
|
17
|
public:
|
18
|
CChooserWidget() : Wt::WContainerWidget() {
|
19
|
Wt::WVBoxLayout* l (new Wt::WVBoxLayout());
|
20
|
this->setLayout(l);
|
21
|
Wt::WPushButton* trigger (new Wt::WPushButton("Click Me"));
|
22
|
l->addWidget (trigger);
|
23
|
CButtonWidget* bw (new CButtonWidget());
|
24
|
l->addWidget (bw);
|
25
|
trigger->clicked().connect (bw,&CButtonWidget::addButton);
|
26
|
}
|
27
|
};
|
28
|
|
29
|
class CPropertiesWidget : public Wt::WContainerWidget {
|
30
|
public:
|
31
|
CPropertiesWidget() : Wt::WContainerWidget() {
|
32
|
Wt::WGridLayout* l (new Wt::WGridLayout());
|
33
|
this->setLayout(l);
|
34
|
Wt::WPanel* panel = new Wt::WPanel();
|
35
|
panel->setCentralWidget(new CChooserWidget());
|
36
|
panel->setCollapsible(false);
|
37
|
panel->setCollapsed(false);
|
38
|
panel->setTitleBar(false);
|
39
|
l->addWidget (panel,0,0);
|
40
|
}
|
41
|
};
|
42
|
|
43
|
class TestApp : public Wt::WApplication
|
44
|
{
|
45
|
public:
|
46
|
TestApp (const Wt::WEnvironment& env) : Wt::WApplication(env) {
|
47
|
this->setTheme(new Wt::WBootstrapTheme(this));
|
48
|
CPropertiesWidget* p (new CPropertiesWidget());
|
49
|
this->root()->addWidget (p);
|
50
|
}
|
51
|
};
|
52
|
|
53
|
Wt::WApplication* createApplication(const Wt::WEnvironment& env)
|
54
|
{
|
55
|
return new TestApp(env);
|
56
|
}
|
57
|
|
58
|
int main(int argc, char *argv[])
|
59
|
{
|
60
|
return Wt::WRun(argc, argv, &createApplication);
|
61
|
}
|