1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
\r
2 // This file is part of the "Irrlicht Engine".
\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
\r
5 #ifndef __C_GUI_COMBO_BOX_H_INCLUDED__
\r
6 #define __C_GUI_COMBO_BOX_H_INCLUDED__
\r
8 #include "IrrCompileConfig.h"
\r
9 #ifdef _IRR_COMPILE_WITH_GUI_
\r
11 #include "IGUIComboBox.h"
\r
12 #include "IGUIStaticText.h"
\r
13 #include "irrString.h"
\r
14 #include "irrArray.h"
\r
23 //! Single line edit box for editing simple text.
\r
24 class CGUIComboBox : public IGUIComboBox
\r
29 CGUIComboBox(IGUIEnvironment* environment, IGUIElement* parent,
\r
30 s32 id, core::rect<s32> rectangle);
\r
32 //! Returns amount of items in box
\r
33 virtual u32 getItemCount() const _IRR_OVERRIDE_;
\r
35 //! returns string of an item. the idx may be a value from 0 to itemCount-1
\r
36 virtual const wchar_t* getItem(u32 idx) const _IRR_OVERRIDE_;
\r
38 //! Returns item data of an item. the idx may be a value from 0 to itemCount-1
\r
39 virtual u32 getItemData(u32 idx) const _IRR_OVERRIDE_;
\r
41 //! Returns index based on item data
\r
42 virtual s32 getIndexForItemData( u32 data ) const _IRR_OVERRIDE_;
\r
44 //! adds an item and returns the index of it
\r
45 virtual u32 addItem(const wchar_t* text, u32 data) _IRR_OVERRIDE_;
\r
47 //! Removes an item from the combo box.
\r
48 virtual void removeItem(u32 id) _IRR_OVERRIDE_;
\r
50 //! deletes all items in the combo box
\r
51 virtual void clear() _IRR_OVERRIDE_;
\r
53 //! returns the text of the currently selected item
\r
54 virtual const wchar_t* getText() const _IRR_OVERRIDE_;
\r
56 //! returns id of selected item. returns -1 if no item is selected.
\r
57 virtual s32 getSelected() const _IRR_OVERRIDE_;
\r
59 //! sets the selected item. Set this to -1 if no item should be selected
\r
60 virtual void setSelected(s32 idx) _IRR_OVERRIDE_;
\r
62 //! sets the text alignment of the text part
\r
63 virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical) _IRR_OVERRIDE_;
\r
65 //! Set the maximal number of rows for the selection listbox
\r
66 virtual void setMaxSelectionRows(u32 max) _IRR_OVERRIDE_;
\r
68 //! Get the maximal number of rows for the selection listbox
\r
69 virtual u32 getMaxSelectionRows() const _IRR_OVERRIDE_;
\r
71 //! called if an event happened.
\r
72 virtual bool OnEvent(const SEvent& event) _IRR_OVERRIDE_;
\r
74 //! draws the element and its children
\r
75 virtual void draw() _IRR_OVERRIDE_;
\r
77 //! Writes attributes of the element.
\r
78 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const _IRR_OVERRIDE_;
\r
80 //! Reads attributes of the element
\r
81 virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options) _IRR_OVERRIDE_;
\r
85 void openCloseMenu();
\r
86 void sendSelectionChangedEvent();
\r
87 void updateListButtonWidth(s32 width);
\r
89 IGUIButton* ListButton;
\r
90 IGUIStaticText* SelectedText;
\r
91 IGUIListBox* ListBox;
\r
92 IGUIElement *LastFocus;
\r
97 SComboData ( const wchar_t * text, u32 data )
\r
98 : Name (text), Data ( data ) {}
\r
100 core::stringw Name;
\r
103 core::array< SComboData > Items;
\r
106 EGUI_ALIGNMENT HAlign, VAlign;
\r
107 u32 MaxSelectionRows;
\r
109 IGUIFont* ActiveFont;
\r
113 } // end namespace gui
\r
114 } // end namespace irr
\r
116 #endif // _IRR_COMPILE_WITH_GUI_
\r
118 #endif // __C_GUI_COMBO_BOX_H_INCLUDED__
\r