Mercurial > fife-parpg
comparison ext/guichan-0.8.2/examples/widgets.hpp @ 378:64738befdf3b
bringing in the changes from the build_system_rework branch in preparation for the 0.3.0 release. This commit will require the Jan2010 devkit. Clients will also need to be modified to the new way to import fife.
author | vtchill@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Mon, 11 Jan 2010 23:34:52 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
377:fe6fb0e0ed23 | 378:64738befdf3b |
---|---|
1 /** | |
2 * Code to populate a global Gui object with all the widgets | |
3 * of Guichan. | |
4 */ | |
5 | |
6 namespace widgets | |
7 { | |
8 gcn::ImageFont* font; | |
9 gcn::Container* top; | |
10 gcn::Label* label; | |
11 gcn::Icon* icon; | |
12 gcn::Button* button; | |
13 gcn::TextField* textField; | |
14 gcn::TextBox* textBox; | |
15 gcn::ScrollArea* textBoxScrollArea; | |
16 gcn::ListBox* listBox; | |
17 gcn::DropDown* dropDown; | |
18 gcn::CheckBox* checkBox1; | |
19 gcn::CheckBox* checkBox2; | |
20 gcn::RadioButton* radioButton1; | |
21 gcn::RadioButton* radioButton2; | |
22 gcn::RadioButton* radioButton3; | |
23 gcn::Slider* slider; | |
24 gcn::Image *image; | |
25 gcn::Window *window; | |
26 gcn::Image *darkbitsImage; | |
27 gcn::Icon* darkbitsIcon; | |
28 gcn::TabbedArea* tabbedArea; | |
29 gcn::Button* tabOneButton; | |
30 gcn::CheckBox* tabTwoCheckBox; | |
31 | |
32 /* | |
33 * List boxes and drop downs need an instance of a list model | |
34 * in order to display a list. | |
35 */ | |
36 class DemoListModel : public gcn::ListModel | |
37 { | |
38 public: | |
39 int getNumberOfElements() | |
40 { | |
41 return 5; | |
42 } | |
43 | |
44 std::string getElementAt(int i) | |
45 { | |
46 switch(i) | |
47 { | |
48 case 0: | |
49 return std::string("zero"); | |
50 case 1: | |
51 return std::string("one"); | |
52 case 2: | |
53 return std::string("two"); | |
54 case 3: | |
55 return std::string("three"); | |
56 case 4: | |
57 return std::string("four"); | |
58 default: // Just to keep warnings away | |
59 return std::string(""); | |
60 } | |
61 } | |
62 }; | |
63 | |
64 DemoListModel demoListModel; | |
65 | |
66 /** | |
67 * Initialises the widgets example by populating the global Gui | |
68 * object. | |
69 */ | |
70 void init() | |
71 { | |
72 // We first create a container to be used as the top widget. | |
73 // The top widget in Guichan can be any kind of widget, but | |
74 // in order to make the Gui contain more than one widget we | |
75 // make the top widget a container. | |
76 top = new gcn::Container(); | |
77 // We set the dimension of the top container to match the screen. | |
78 top->setDimension(gcn::Rectangle(0, 0, 640, 480)); | |
79 // Finally we pass the top widget to the Gui object. | |
80 globals::gui->setTop(top); | |
81 | |
82 // Now we load the font used in this example. | |
83 font = new gcn::ImageFont("fixedfont.bmp", " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); | |
84 // Widgets may have a global font so we don't need to pass the | |
85 // font object to every created widget. The global font is static. | |
86 gcn::Widget::setGlobalFont(font); | |
87 | |
88 // Now we create the widgets | |
89 | |
90 label = new gcn::Label("Label"); | |
91 | |
92 image = gcn::Image::load("gui-chan.bmp"); | |
93 icon = new gcn::Icon(image); | |
94 | |
95 button = new gcn::Button("Button"); | |
96 | |
97 textField = new gcn::TextField("Text field"); | |
98 | |
99 textBox = new gcn::TextBox("Multiline\nText box"); | |
100 textBoxScrollArea = new gcn::ScrollArea(textBox); | |
101 textBoxScrollArea->setWidth(200); | |
102 textBoxScrollArea->setHeight(100); | |
103 textBoxScrollArea->setFrameSize(1); | |
104 | |
105 listBox = new gcn::ListBox(&demoListModel); | |
106 listBox->setFrameSize(1); | |
107 dropDown = new gcn::DropDown(&demoListModel); | |
108 | |
109 checkBox1 = new gcn::CheckBox("Checkbox 1"); | |
110 checkBox2 = new gcn::CheckBox("Checkbox 2"); | |
111 | |
112 radioButton1 = new gcn::RadioButton("RadioButton 1", "radiogroup", true); | |
113 radioButton2 = new gcn::RadioButton("RadioButton 2", "radiogroup"); | |
114 radioButton3 = new gcn::RadioButton("RadioButton 3", "radiogroup"); | |
115 | |
116 slider = new gcn::Slider(0, 10); | |
117 slider->setSize(100, 10); | |
118 | |
119 window = new gcn::Window("I am a window Drag me"); | |
120 window->setBaseColor(gcn::Color(255, 150, 200, 190)); | |
121 | |
122 darkbitsImage = gcn::Image::load("darkbitslogo_by_haiko.bmp"); | |
123 darkbitsIcon = new gcn::Icon(darkbitsImage); | |
124 window->add(darkbitsIcon); | |
125 window->resizeToContent(); | |
126 | |
127 tabbedArea = new gcn::TabbedArea(); | |
128 tabbedArea->setSize(200, 100); | |
129 tabOneButton = new gcn::Button("A button in tab 1"); | |
130 tabbedArea->addTab("Tab 1", tabOneButton); | |
131 tabTwoCheckBox = new gcn::CheckBox("A check box in tab 2"); | |
132 tabbedArea->addTab("Tab 2", tabTwoCheckBox); | |
133 | |
134 // Now it's time to add the widgets to the top container | |
135 // so they will be conected to the GUI. | |
136 | |
137 top->add(label, 10, 10); | |
138 top->add(icon, 10, 30); | |
139 top->add(button, 200, 10); | |
140 top->add(textField, 250, 10); | |
141 top->add(textBoxScrollArea, 200, 50); | |
142 top->add(listBox, 200, 200); | |
143 top->add(dropDown, 500, 10); | |
144 top->add(checkBox1, 500, 130); | |
145 top->add(checkBox2, 500, 150); | |
146 top->add(radioButton1, 500, 200); | |
147 top->add(radioButton2, 500, 220); | |
148 top->add(radioButton3, 500, 240); | |
149 top->add(slider, 500, 300); | |
150 top->add(window, 50, 350); | |
151 top->add(tabbedArea, 400, 350); | |
152 } | |
153 | |
154 /** | |
155 * Halts the widgets example. | |
156 */ | |
157 void halt() | |
158 { | |
159 delete font; | |
160 delete top; | |
161 delete label; | |
162 delete icon; | |
163 delete button; | |
164 delete textField; | |
165 delete textBox; | |
166 delete textBoxScrollArea; | |
167 delete listBox; | |
168 delete dropDown; | |
169 delete checkBox1; | |
170 delete checkBox2; | |
171 delete radioButton1; | |
172 delete radioButton2; | |
173 delete radioButton3; | |
174 delete slider; | |
175 delete window; | |
176 delete darkbitsIcon; | |
177 delete darkbitsImage; | |
178 delete tabbedArea; | |
179 delete tabOneButton; | |
180 delete tabTwoCheckBox; | |
181 } | |
182 } |