]> git.tdb.fi Git - libs/gltk.git/blob - examples/widgetdemo/toggledemo.cpp
Add another example application to demonstrate various widgets
[libs/gltk.git] / examples / widgetdemo / toggledemo.cpp
1 #include <msp/gltk/label.h>
2 #include <msp/gltk/toggle.h>
3 #include <msp/strings/format.h>
4 #include "toggledemo.h"
5
6 using namespace Msp;
7
8 ToggleDemo::ToggleDemo()
9 {
10         set_layout(new GLtk::Layout);
11
12         GLtk::Label *lbl = new GLtk::Label("Standalone toggles:");
13         add(*lbl);
14
15         GLtk::Widget *prev = lbl;
16         for(unsigned i=0; i<4; ++i)
17         {
18                 GLtk::Toggle *tgl = new GLtk::Toggle(format("Toggle %d", i+1));
19                 add(*tgl);
20
21                 layout->add_constraint(*tgl, GLtk::Layout::BELOW, *prev);
22                 layout->add_constraint(*tgl, GLtk::Layout::ALIGN_LEFT, *prev);
23                 layout->add_constraint(*tgl, GLtk::Layout::ALIGN_RIGHT, *prev);
24
25                 prev = tgl;
26         }
27
28         for(unsigned i=0; i<2; ++i)
29         {
30                 GLtk::Panel *group = new GLtk::Panel;
31                 add(*group);
32                 layout->add_constraint(*group, (i==0 ? GLtk::Layout::BELOW : GLtk::Layout::RIGHT_OF), *prev);
33                 if(i>0)
34                         layout->add_constraint(*group, GLtk::Layout::ALIGN_TOP, *prev);
35                 group->set_layout(new GLtk::Layout);
36
37                 lbl = new GLtk::Label(format("Group %d:", i+1));
38                 group->add(*lbl);
39
40                 prev = lbl;
41                 for(unsigned j=0; j<4; ++j)
42                 {
43                         GLtk::Toggle *tgl = new GLtk::Toggle(format("Option %d", j+1));
44                         tgl->set_style("option");
45                         tgl->set_exclusive(true);
46                         group->add(*tgl);
47
48                         group->get_layout()->add_constraint(*tgl, GLtk::Layout::BELOW, *prev);
49                         group->get_layout()->add_constraint(*tgl, GLtk::Layout::ALIGN_LEFT, *prev);
50                         group->get_layout()->add_constraint(*tgl, GLtk::Layout::ALIGN_RIGHT, *prev);
51
52                         prev = tgl;
53                 }
54
55                 prev = group;
56         }
57 }