7#ifndef MYGUI_ITEM_BOX_H_
8#define MYGUI_ITEM_BOX_H_
41 size_t getItemCount()
const;
44 void insertItemAt(
size_t _index,
Any _data = Any::Null,
bool update =
true);
47 void addItem(
Any _data = Any::Null,
bool update =
true);
50 void removeItemAt(
size_t _index,
bool update =
true);
53 void removeAllItems();
56 void redrawItemAt(
size_t _index);
59 void redrawAllItems();
66 size_t getIndexSelected()
const;
69 void setIndexSelected(
size_t _index);
72 void clearIndexSelected();
79 void setItemDataAt(
size_t _index,
Any _data);
82 void clearItemDataAt(
size_t _index);
85 template<
typename ValueType>
89 return mItemsInfo[_index].data.castType<ValueType>(_throw);
94 void setVerticalAlignment(
bool _vert);
96 bool getVerticalAlignment()
const;
99 size_t getIndexByWidget(
Widget* _widget)
const;
102 Widget* getWidgetDrag()
const;
109 Widget* getWidgetByIndex(
size_t _index);
115 void setPosition(
const IntPoint& _point)
override;
117 void setSize(
const IntSize& _size)
override;
119 void setCoord(
const IntCoord& _coord)
override;
121 using Widget::setPosition;
122 using Widget::setSize;
123 using Widget::setCoord;
126 void setVisibleVScroll(
bool _value);
128 bool isVisibleVScroll()
const;
131 void setVisibleHScroll(
bool _value);
133 bool isVisibleHScroll()
const;
136 void setViewOffset(
const IntPoint& _value);
140 IntSize getViewSize()
const override;
195 void _resetContainer(
bool _update)
override;
198 void initialiseOverride()
override;
199 void shutdownOverride()
override;
211 void onMouseButtonPressed(
int _left,
int _top,
MouseButton _id)
override;
212 void onMouseButtonReleased(
int _left,
int _top,
MouseButton _id)
override;
213 void onKeyButtonPressed(
KeyCode _key,
Char _char)
override;
214 void onKeyButtonReleased(
KeyCode _key)
override;
215 void onMouseDrag(
int _left,
int _top,
MouseButton _id)
override;
217 void onMouseWheel(
int _rel)
override;
218 void onKeyLostFocus(
Widget* _new)
override;
219 void onKeySetFocus(
Widget* _old)
override;
223 void notifyScrollChangePosition(
ScrollBar* _sender,
size_t _index);
224 void notifyMouseWheel(
Widget* _sender,
int _rel);
225 void notifyRootMouseChangeFocus(
Widget* _sender,
bool _focus);
226 void notifyMouseButtonDoubleClick(
Widget* _sender);
227 size_t _getItemIndex(
Widget* _item)
const override;
229 void notifyMouseButtonPressed(
Widget* _sender,
int _left,
int _top,
MouseButton _id);
230 void notifyMouseButtonReleased(
Widget* _sender,
int _left,
int _top,
MouseButton _id);
233 void removeDropItems()
override;
234 void updateDropItems()
override;
235 void updateDropItemsState(
const DDWidgetState& _state)
override;
238 void updateMetrics();
241 void _updateAllVisible(
bool _redraw);
243 void updateFromResize();
247 Widget* getItemWidget(
size_t _index);
249 void _setContainerItemInfo(
size_t _index,
bool _set,
bool _accept)
override;
252 void resetCurrentActiveItem();
254 void findCurrentActiveItem();
257 size_t _getContainerIndex(
const IntPoint& _point)
const override;
259 void setPropertyOverride(std::string_view _key, std::string_view _value)
override;
262 size_t calcIndexByWidget(
Widget* _widget)
const;
264 void requestItemSize();
266 IntSize getContentSize()
const override;
267 IntPoint getContentPosition()
const override;
268 void eraseContent()
override;
269 size_t getHScrollPage()
const override;
270 size_t getVScrollPage()
const override;
271 Align getContentAlign()
const override;
272 void setContentPosition(
const IntPoint& _point)
override;
287 int mCountItemInLine{0};
292 int mFirstVisibleIndex{0};
295 int mFirstOffsetIndex{0};
307 bool mIsFocus{
false};
310 VectorItemInfo mItemsInfo;
312 Widget* mItemDrag{
nullptr};
315 bool mAlignVert{
true};
317 std::string mDragLayer;
#define MYGUI_ASSERT_RANGE(index, size, owner)
#define MYGUI_RTTI_DERIVED(DerivedType)
widget description should be here.
widget description should be here.
EventHandle_ItemBoxPtrWidgetPtrCIBCellDrawInfoRef requestDrawItem
EventHandle_ItemBoxPtrSizeT eventMouseItemActivate
EventHandle_ItemBoxPtrWidgetPtr requestCreateWidgetItem
EventHandle_ItemBoxPtrSizeT eventSelectItemAccept
std::vector< ItemDataInfo > VectorItemInfo
ValueType * getItemDataAt(size_t _index, bool _throw=true)
Get item data from specified position.
EventHandle_ItemBoxPtrIntCoordRefBool requestCoordItem
EventHandle_ItemBoxPtrCIBNotifyCellDataRef eventNotifyItem
EventHandle_ItemBoxPtrSizeT eventChangeItemPosition
types::TPoint< int > IntPoint
constexpr size_t ITEM_NONE
std::vector< Widget * > VectorWidgetPtr