123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- // Copyright (C) 2002-2012 Nikolaus Gebhardt
- // This file is part of the "Irrlicht Engine".
- // For conditions of distribution and use, see copyright notice in irrlicht.h
- #ifndef IRR_I_GUI_LIST_BOX_H_INCLUDED
- #define IRR_I_GUI_LIST_BOX_H_INCLUDED
- #include "IGUIElement.h"
- #include "SColor.h"
- namespace irr
- {
- namespace gui
- {
- class IGUISpriteBank;
- class IGUIScrollBar;
- //! Enumeration for listbox colors
- enum EGUI_LISTBOX_COLOR
- {
- //! Color of text
- EGUI_LBC_TEXT=0,
- //! Color of selected text
- EGUI_LBC_TEXT_HIGHLIGHT,
- //! Color of icon
- EGUI_LBC_ICON,
- //! Color of selected icon
- EGUI_LBC_ICON_HIGHLIGHT,
- //! Color of background.
- //! Note that this one is drawn over the listbox background and when not used there is no other default
- EGUI_LBC_BACKGROUND,
- //! Color of selected background
- EGUI_LBC_BACKGROUND_HIGHLIGHT,
- //! Not used, just counts the number of available colors
- EGUI_LBC_COUNT
- };
- //! Default list box GUI element.
- /** \par This element can create the following events of type EGUI_EVENT_TYPE:
- \li EGET_LISTBOX_CHANGED
- \li EGET_LISTBOX_SELECTED_AGAIN
- */
- class IGUIListBox : public IGUIElement
- {
- public:
- //! constructor
- IGUIListBox(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
- : IGUIElement(EGUIET_LIST_BOX, environment, parent, id, rectangle) {}
- //! returns amount of list items
- virtual u32 getItemCount() const = 0;
- //! returns string of a list item. the may id be a value from 0 to itemCount-1
- virtual const wchar_t* getListItem(u32 id) const = 0;
- //! adds an list item with an icon
- /** \param text Text of list entry
- \param icon Sprite index of the Icon within the current sprite bank. Set it to -1 if you want no icon
- \return The id of the new created item */
- virtual u32 addItem(const wchar_t* text, s32 icon=-1) = 0;
- //! Insert the item at the given index
- /** \return The index on success or -1 on failure. */
- virtual s32 insertItem(u32 index, const wchar_t* text, s32 icon=-1) = 0;
- //! set the item at the given index
- virtual void setItem(u32 index, const wchar_t* text, s32 icon=-1) = 0;
- //! Removes an item from the list
- virtual void removeItem(u32 index) = 0;
- //! get the the id of the item at the given absolute coordinates
- /** \return The id of the list item or -1 when no item is at those coordinates*/
- virtual s32 getItemAt(s32 xpos, s32 ypos) const = 0;
- //! Returns the icon of an item
- virtual s32 getIcon(u32 index) const = 0;
- //! Sets the sprite bank which should be used to draw list icons.
- /** This font is set to the sprite bank of the built-in-font by
- default. A sprite can be displayed in front of every list item.
- An icon is an index within the icon sprite bank. Several
- default icons are available in the skin through getIcon. */
- virtual void setSpriteBank(IGUISpriteBank* bank) = 0;
- //! clears the list, deletes all items in the listbox
- virtual void clear() = 0;
- //! returns id of selected item. returns -1 if no item is selected.
- virtual s32 getSelected() const = 0;
- //! sets the selected item. Set this to -1 if no item should be selected
- virtual void setSelected(s32 index) = 0;
- //! sets the selected item. Set this to 0 if no item should be selected
- virtual void setSelected(const wchar_t *item) = 0;
- //! set whether the listbox should scroll to newly selected items
- virtual void setAutoScrollEnabled(bool scroll) = 0;
- //! returns true if automatic scrolling is enabled, false if not.
- virtual bool isAutoScrollEnabled() const = 0;
- //! set all item colors at given index to color
- virtual void setItemOverrideColor(u32 index, video::SColor color) = 0;
- //! set all item colors of specified type at given index to color
- virtual void setItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType, video::SColor color) = 0;
- //! clear all item colors at index
- virtual void clearItemOverrideColor(u32 index) = 0;
- //! clear item color at index for given colortype
- virtual void clearItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) = 0;
- //! has the item at index its color overwritten?
- virtual bool hasItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) const = 0;
- //! return the overwrite color at given item index.
- virtual video::SColor getItemOverrideColor(u32 index, EGUI_LISTBOX_COLOR colorType) const = 0;
- //! return the default color which is used for the given colorType
- virtual video::SColor getItemDefaultColor(EGUI_LISTBOX_COLOR colorType) const = 0;
- //! Swap the items at the given indices
- virtual void swapItems(u32 index1, u32 index2) = 0;
- //! set global itemHeight
- virtual void setItemHeight( s32 height ) = 0;
- //! Sets whether to draw the background
- virtual void setDrawBackground(bool draw) = 0;
- //! Access the vertical scrollbar
- virtual IGUIScrollBar* getVerticalScrollBar() const = 0;
- };
- } // end namespace gui
- } // end namespace irr
- #endif
|