]> git.tdb.fi Git - libs/gltk.git/blobdiff - examples/widgetdemo/toggledemo.cpp
Add another example application to demonstrate various widgets
[libs/gltk.git] / examples / widgetdemo / toggledemo.cpp
diff --git a/examples/widgetdemo/toggledemo.cpp b/examples/widgetdemo/toggledemo.cpp
new file mode 100644 (file)
index 0000000..cc928a0
--- /dev/null
@@ -0,0 +1,57 @@
+#include <msp/gltk/label.h>
+#include <msp/gltk/toggle.h>
+#include <msp/strings/format.h>
+#include "toggledemo.h"
+
+using namespace Msp;
+
+ToggleDemo::ToggleDemo()
+{
+       set_layout(new GLtk::Layout);
+
+       GLtk::Label *lbl = new GLtk::Label("Standalone toggles:");
+       add(*lbl);
+
+       GLtk::Widget *prev = lbl;
+       for(unsigned i=0; i<4; ++i)
+       {
+               GLtk::Toggle *tgl = new GLtk::Toggle(format("Toggle %d", i+1));
+               add(*tgl);
+
+               layout->add_constraint(*tgl, GLtk::Layout::BELOW, *prev);
+               layout->add_constraint(*tgl, GLtk::Layout::ALIGN_LEFT, *prev);
+               layout->add_constraint(*tgl, GLtk::Layout::ALIGN_RIGHT, *prev);
+
+               prev = tgl;
+       }
+
+       for(unsigned i=0; i<2; ++i)
+       {
+               GLtk::Panel *group = new GLtk::Panel;
+               add(*group);
+               layout->add_constraint(*group, (i==0 ? GLtk::Layout::BELOW : GLtk::Layout::RIGHT_OF), *prev);
+               if(i>0)
+                       layout->add_constraint(*group, GLtk::Layout::ALIGN_TOP, *prev);
+               group->set_layout(new GLtk::Layout);
+
+               lbl = new GLtk::Label(format("Group %d:", i+1));
+               group->add(*lbl);
+
+               prev = lbl;
+               for(unsigned j=0; j<4; ++j)
+               {
+                       GLtk::Toggle *tgl = new GLtk::Toggle(format("Option %d", j+1));
+                       tgl->set_style("option");
+                       tgl->set_exclusive(true);
+                       group->add(*tgl);
+
+                       group->get_layout()->add_constraint(*tgl, GLtk::Layout::BELOW, *prev);
+                       group->get_layout()->add_constraint(*tgl, GLtk::Layout::ALIGN_LEFT, *prev);
+                       group->get_layout()->add_constraint(*tgl, GLtk::Layout::ALIGN_RIGHT, *prev);
+
+                       prev = tgl;
+               }
+
+               prev = group;
+       }
+}