]> git.tdb.fi Git - libs/gltk.git/blob - examples/widgetdemo/dropdowndemo.cpp
Rework how widget ownership works in Container
[libs/gltk.git] / examples / widgetdemo / dropdowndemo.cpp
1 #include <msp/gltk/dropdown.h>
2 #include <msp/strings/format.h>
3 #include "dropdowndemo.h"
4
5 using namespace std;
6 using namespace Msp;
7
8 DropdownDemo::DropdownDemo()
9 {
10         get_or_create_layout();
11
12         GLtk::Dropdown *drp = &add_new<GLtk::Dropdown>(categories);
13         drp->signal_item_selected.connect(sigc::mem_fun(this, &DropdownDemo::category_selected));
14
15         categories.append("Arabic numerals");
16         categories.append("Roman numerals");
17         categories.append("Lowercase letters");
18         categories.append("Uppercase letters");
19
20         GLtk::Widget *prev = drp;
21         drp = &add_new<GLtk::Dropdown>(values);
22
23         layout->add_constraint(*drp, GLtk::Layout::BELOW, *prev);
24         layout->add_constraint(*drp, GLtk::Layout::ALIGN_LEFT, *prev);
25         layout->add_constraint(*drp, GLtk::Layout::ALIGN_RIGHT, *prev);
26 }
27
28 void DropdownDemo::category_selected(unsigned i)
29 {
30         values.clear();
31         if(i==0)
32         {
33                 for(unsigned j=0; j<=26; ++j)
34                         values.append(format("%d", j));
35         }
36         else if(i==1)
37         {
38                 for(unsigned j=1; j<=26; ++j)
39                 {
40                         string r = string(j/10, 'X');
41                         if(j%10==9)
42                                 r += "IX";
43                         else if(j%10>=4)
44                         {
45                                 if(j%10==4)
46                                         r += 'I';
47                                 r += 'V';
48                         }
49
50                         if(j%5<=3)
51                                 r += string(j%5, 'I');
52
53                         values.append(r);
54                 }
55         }
56         else if(i==2)
57         {
58                 for(unsigned j=0; j<26; ++j)
59                         values.append(string(1, 'a'+j));
60         }
61         else if(i==3)
62         {
63                 for(unsigned j=0; j<26; ++j)
64                         values.append(string(1, 'A'+j));
65         }
66 }