]> git.tdb.fi Git - libs/gltk.git/blobdiff - examples/widgetdemo/dropdowndemo.cpp
Add another example application to demonstrate various widgets
[libs/gltk.git] / examples / widgetdemo / dropdowndemo.cpp
diff --git a/examples/widgetdemo/dropdowndemo.cpp b/examples/widgetdemo/dropdowndemo.cpp
new file mode 100644 (file)
index 0000000..6ee33e0
--- /dev/null
@@ -0,0 +1,68 @@
+#include <msp/gltk/dropdown.h>
+#include <msp/strings/format.h>
+#include "dropdowndemo.h"
+
+using namespace std;
+using namespace Msp;
+
+DropdownDemo::DropdownDemo()
+{
+       set_layout(new GLtk::Layout);
+
+       GLtk::Dropdown *drp = new GLtk::Dropdown(categories);
+       drp->signal_item_selected.connect(sigc::mem_fun(this, &DropdownDemo::category_selected));
+       add(*drp);
+
+       categories.append("Arabic numerals");
+       categories.append("Roman numerals");
+       categories.append("Lowercase letters");
+       categories.append("Uppercase letters");
+
+       GLtk::Widget *prev = drp;
+       drp = new GLtk::Dropdown(values);
+       add(*drp);
+
+       layout->add_constraint(*drp, GLtk::Layout::BELOW, *prev);
+       layout->add_constraint(*drp, GLtk::Layout::ALIGN_LEFT, *prev);
+       layout->add_constraint(*drp, GLtk::Layout::ALIGN_RIGHT, *prev);
+}
+
+void DropdownDemo::category_selected(unsigned i)
+{
+       values.clear();
+       if(i==0)
+       {
+               for(unsigned j=0; j<=26; ++j)
+                       values.append(format("%d", j));
+       }
+       else if(i==1)
+       {
+               for(unsigned j=1; j<=26; ++j)
+               {
+                       string r = string(j/10, 'X');
+                       if(j%10==9)
+                               r += "IX";
+                       else if(j%10>=4)
+                       {
+                               if(j%10==4)
+                                       r += 'I';
+                               r += 'V';
+                       }
+
+                       if(j%5<=3)
+                               r += string(j%5, 'I');
+
+                       values.append(r);
+               }
+       }
+       else if(i==2)
+       {
+               for(unsigned j=0; j<26; ++j)
+                       values.append(string(1, 'a'+j));
+       }
+       else if(i==3)
+       {
+               for(unsigned j=0; j<26; ++j)
+                       values.append(string(1, 'A'+j));
+       }
+}