Mercurial > fife-parpg
diff ext/guichan-0.8.1/examples/widgets.hpp @ 0:4a0efb7baf70
* Datasets becomes the new trunk and retires after that :-)
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 29 Jun 2008 18:44:17 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ext/guichan-0.8.1/examples/widgets.hpp Sun Jun 29 18:44:17 2008 +0000 @@ -0,0 +1,182 @@ +/** + * Code to populate a global Gui object with all the widgets + * of Guichan. + */ + +namespace widgets +{ + gcn::ImageFont* font; + gcn::Container* top; + gcn::Label* label; + gcn::Icon* icon; + gcn::Button* button; + gcn::TextField* textField; + gcn::TextBox* textBox; + gcn::ScrollArea* textBoxScrollArea; + gcn::ListBox* listBox; + gcn::DropDown* dropDown; + gcn::CheckBox* checkBox1; + gcn::CheckBox* checkBox2; + gcn::RadioButton* radioButton1; + gcn::RadioButton* radioButton2; + gcn::RadioButton* radioButton3; + gcn::Slider* slider; + gcn::Image *image; + gcn::Window *window; + gcn::Image *darkbitsImage; + gcn::Icon* darkbitsIcon; + gcn::TabbedArea* tabbedArea; + gcn::Button* tabOneButton; + gcn::CheckBox* tabTwoCheckBox; + + /* + * List boxes and drop downs need an instance of a list model + * in order to display a list. + */ + class DemoListModel : public gcn::ListModel + { + public: + int getNumberOfElements() + { + return 5; + } + + std::string getElementAt(int i) + { + switch(i) + { + case 0: + return std::string("zero"); + case 1: + return std::string("one"); + case 2: + return std::string("two"); + case 3: + return std::string("three"); + case 4: + return std::string("four"); + default: // Just to keep warnings away + return std::string(""); + } + } + }; + + DemoListModel demoListModel; + + /** + * Initialises the widgets example by populating the global Gui + * object. + */ + void init() + { + // We first create a container to be used as the top widget. + // The top widget in Guichan can be any kind of widget, but + // in order to make the Gui contain more than one widget we + // make the top widget a container. + top = new gcn::Container(); + // We set the dimension of the top container to match the screen. + top->setDimension(gcn::Rectangle(0, 0, 640, 480)); + // Finally we pass the top widget to the Gui object. + globals::gui->setTop(top); + + // Now we load the font used in this example. + font = new gcn::ImageFont("fixedfont.bmp", " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); + // Widgets may have a global font so we don't need to pass the + // font object to every created widget. The global font is static. + gcn::Widget::setGlobalFont(font); + + // Now we create the widgets + + label = new gcn::Label("Label"); + + image = gcn::Image::load("gui-chan.bmp"); + icon = new gcn::Icon(image); + + button = new gcn::Button("Button"); + + textField = new gcn::TextField("Text field"); + + textBox = new gcn::TextBox("Multiline\nText box"); + textBoxScrollArea = new gcn::ScrollArea(textBox); + textBoxScrollArea->setWidth(200); + textBoxScrollArea->setHeight(100); + textBoxScrollArea->setFrameSize(1); + + listBox = new gcn::ListBox(&demoListModel); + listBox->setFrameSize(1); + dropDown = new gcn::DropDown(&demoListModel); + + checkBox1 = new gcn::CheckBox("Checkbox 1"); + checkBox2 = new gcn::CheckBox("Checkbox 2"); + + radioButton1 = new gcn::RadioButton("RadioButton 1", "radiogroup", true); + radioButton2 = new gcn::RadioButton("RadioButton 2", "radiogroup"); + radioButton3 = new gcn::RadioButton("RadioButton 3", "radiogroup"); + + slider = new gcn::Slider(0, 10); + slider->setSize(100, 10); + + window = new gcn::Window("I am a window Drag me"); + window->setBaseColor(gcn::Color(255, 150, 200, 190)); + + darkbitsImage = gcn::Image::load("darkbitslogo_by_haiko.bmp"); + darkbitsIcon = new gcn::Icon(darkbitsImage); + window->add(darkbitsIcon); + window->resizeToContent(); + + tabbedArea = new gcn::TabbedArea(); + tabbedArea->setSize(200, 100); + tabOneButton = new gcn::Button("A button in tab 1"); + tabbedArea->addTab("Tab 1", tabOneButton); + tabTwoCheckBox = new gcn::CheckBox("A check box in tab 2"); + tabbedArea->addTab("Tab 2", tabTwoCheckBox); + + // Now it's time to add the widgets to the top container + // so they will be conected to the GUI. + + top->add(label, 10, 10); + top->add(icon, 10, 30); + top->add(button, 200, 10); + top->add(textField, 250, 10); + top->add(textBoxScrollArea, 200, 50); + top->add(listBox, 200, 200); + top->add(dropDown, 500, 10); + top->add(checkBox1, 500, 130); + top->add(checkBox2, 500, 150); + top->add(radioButton1, 500, 200); + top->add(radioButton2, 500, 220); + top->add(radioButton3, 500, 240); + top->add(slider, 500, 300); + top->add(window, 50, 350); + top->add(tabbedArea, 400, 350); + } + + /** + * Halts the widgets example. + */ + void halt() + { + delete font; + delete top; + delete label; + delete icon; + delete button; + delete textField; + delete textBox; + delete textBoxScrollArea; + delete listBox; + delete dropDown; + delete checkBox1; + delete checkBox2; + delete radioButton1; + delete radioButton2; + delete radioButton3; + delete slider; + delete window; + delete darkbitsIcon; + delete darkbitsImage; + delete tabbedArea; + delete tabOneButton; + delete tabTwoCheckBox; + } +}