7#ifndef MYGUI_LIST_BOX_H_
8#define MYGUI_LIST_BOX_H_
93 template<
typename ValueType>
97 return mItemsInfo.at(_index).second.castType<ValueType>(_throw);
105 void setItemNameAt(
size_t _index,
const UString& _name);
108 const UString& getItemNameAt(
size_t _index)
const;
119 void beginToItemAt(
size_t _index);
122 void beginToItemFirst();
125 void beginToItemLast();
128 void beginToItemSelected();
141 bool isItemVisibleAt(
size_t _index,
bool _fill =
true);
143 bool isItemSelectedVisible(
bool _fill =
true);
147 void setScrollVisible(
bool _visible);
149 void setScrollPosition(
size_t _position);
159 void setPosition(
const IntPoint& _point)
override;
161 void setSize(
const IntSize& _size)
override;
163 void setCoord(
const IntCoord& _coord)
override;
171 int getOptimalHeight()
const;
176 void setActivateOnClick(
bool activateOnClick);
183 Widget* getWidgetByIndex(
size_t _index);
291 size_t getIndexByWidget(
Widget* _widget)
const;
294 std::string mSkinLine;
298 using VectorButton = std::vector<Button*>;
299 VectorButton mWidgetLines;
301 bool mActivateOnClick{
false};
307 size_t mLastRedrawLine{0};
312 using PairItem = std::pair<UString, Any>;
313 using VectorItemInfo = std::vector<PairItem>;
314 VectorItemInfo mItemsInfo;
317 bool mNeedVisibleScroll{
true};
#define MYGUI_ASSERT_RANGE(index, size, owner)
#define MYGUI_RTTI_DERIVED(DerivedType)
widget description should be here.
void _setItemNameAt(size_t _index, const UString &_name) override
void addItem(const UString &_name, Any _data=Any::Null)
Add an item to the end of a array.
void notifyMouseWheel(Widget *_sender, int _rel)
void _removeItemAt(size_t _index) override
void updateLine(bool _reset=false)
EventHandle_ListBoxPtrCIBNotifyCellDataRef eventNotifyItem
void _redrawItem(size_t _index)
size_t _getItemIndex(Widget *_item) const override
void _setScrollView(size_t _position)
void notifyKeyButtonReleased(Widget *_sender, KeyCode _key)
void notifyMousePressed(Widget *_sender, int _left, int _top, MouseButton _id)
void _sendEventChangeScroll(size_t _position)
ValueType * getItemDataAt(size_t _index, bool _throw=true) const
Get item data from specified position.
void notifyMouseButtonReleased(Widget *_sender, int _left, int _top, MouseButton _id)
void _resetContainer(bool _update) override
const UString & _getItemNameAt(size_t _index) const override
void notifyMouseClick(Widget *_sender)
void clearIndexSelected()
void _addItem(const MyGUI::UString &_name) override
void _activateItem(Widget *_sender)
void _redrawItemRange(size_t _start=0)
void notifyMouseLostFocus(Widget *_sender, Widget *_new)
void shutdownOverride() override
size_t getItemCount() const
Get number of items.
void initialiseOverride() override
void notifyScrollChangePosition(ScrollBar *_sender, size_t _position)
void notifyMouseSetFocus(Widget *_sender, Widget *_old)
void swapItemsAt(size_t _index1, size_t _index2)
Swap items at a specified positions.
void onKeyButtonReleased(KeyCode _key) override
void insertItemAt(size_t _index, const UString &_name, Any _data=Any::Null)
Insert an item into a array at a specified position.
void removeAllItems()
Remove all items.
EventPair< EventHandle_WidgetSizeT, EventHandle_ListPtrSizeT > eventListChangePosition
void onMouseWheel(int _rel) override
void clearItemDataAt(size_t _index)
Clear an item data at a specified position.
size_t getIndexSelected() const
void _selectIndex(size_t _index, bool _select)
size_t _getItemCount() const override
void _setItemFocus(size_t _index, bool _focus)
EventPair< EventHandle_WidgetSizeT, EventHandle_ListPtrSizeT > eventListMouseItemFocus
void setPropertyOverride(std::string_view _key, std::string_view _value) override
size_t findItemIndexWith(const UString &_name)
Search item, returns the position of the first occurrence in array or ITEM_NONE if item not found.
EventPair< EventHandle_WidgetSizeT, EventHandle_ListPtrSizeT > eventListChangeScroll
void notifyKeyButtonPressed(Widget *_sender, KeyCode _key, Char _char)
void onKeyButtonPressed(KeyCode _key, Char _char) override
void setItemDataAt(size_t _index, Any _data)
Replace an item data at a specified position.
void notifyMouseDoubleClick(Widget *_sender)
EventPair< EventHandle_WidgetSizeT, EventHandle_ListPtrSizeT > eventListSelectAccept
void removeItemAt(size_t _index)
Remove item at a specified position.
void setIndexSelected(size_t _index)
EventPair< EventHandle_WidgetSizeT, EventHandle_ListPtrSizeT > eventListMouseItemActivate
A UTF-16 string with implicit conversion to/from std::string and std::wstring.
types::TPoint< int > IntPoint
delegates::MultiDelegate< ListBox *, size_t > EventHandle_ListPtrSizeT
delegates::MultiDelegate< ListBox *, const IBNotifyItemData & > EventHandle_ListBoxPtrCIBNotifyCellDataRef
constexpr size_t ITEM_NONE
types::TCoord< int > IntCoord
types::TSize< int > IntSize