]> git.tdb.fi Git - libs/gltk.git/blob - examples/widgetdemo/toggledemo.cpp
Rework how widget ownership works in Container
[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         get_or_create_layout();
11
12         GLtk::Label *lbl = &add_new<GLtk::Label>("Standalone toggles:");
13
14         GLtk::Widget *prev = lbl;
15         for(unsigned i=0; i<4; ++i)
16         {
17                 GLtk::Toggle *tgl = &add_new<GLtk::Toggle>(format("Toggle %d", i+1));
18
19                 layout->add_constraint(*tgl, GLtk::Layout::BELOW, *prev);
20                 layout->add_constraint(*tgl, GLtk::Layout::ALIGN_LEFT, *prev);
21                 layout->add_constraint(*tgl, GLtk::Layout::ALIGN_RIGHT, *prev);
22
23                 prev = tgl;
24         }
25
26         for(unsigned i=0; i<2; ++i)
27         {
28                 GLtk::Panel *group = &add_new<GLtk::Panel>();
29                 layout->add_constraint(*group, (i==0 ? GLtk::Layout::BELOW : GLtk::Layout::RIGHT_OF), *prev);
30                 if(i>0)
31                         layout->add_constraint(*group, GLtk::Layout::ALIGN_TOP, *prev);
32                 GLtk::Layout &group_layout = group->get_or_create_layout();
33
34                 lbl = &group->add_new<GLtk::Label>(format("Group %d:", i+1));
35
36                 prev = lbl;
37                 for(unsigned j=0; j<4; ++j)
38                 {
39                         GLtk::Toggle *tgl = &group->add_new<GLtk::Toggle>(format("Option %d", j+1));
40                         tgl->set_style("option");
41                         tgl->set_exclusive(true);
42
43                         group_layout.add_constraint(*tgl, GLtk::Layout::BELOW, *prev);
44                         group_layout.add_constraint(*tgl, GLtk::Layout::ALIGN_LEFT, *prev);
45                         group_layout.add_constraint(*tgl, GLtk::Layout::ALIGN_RIGHT, *prev);
46
47                         prev = tgl;
48                 }
49
50                 prev = group;
51         }
52 }