7#ifndef MYGUI_ITEM_BOX_H_
8#define MYGUI_ITEM_BOX_H_
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;
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;
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.
void onMouseButtonPressed(int _left, int _top, MouseButton _id) override
void onKeyButtonPressed(KeyCode _key, Char _char) override
void clearItemDataAt(size_t _index)
Clear an item data at a specified position.
void notifyMouseDrag(Widget *_sender, int _left, int _top, MouseButton _id)
void notifyMouseButtonReleased(Widget *_sender, int _left, int _top, MouseButton _id)
size_t getItemCount() const
Get number of items.
EventHandle_ItemBoxPtrWidgetPtrCIBCellDrawInfoRef requestDrawItem
void notifyMouseWheel(Widget *_sender, int _rel)
void shutdownOverride() override
void removeItemAt(size_t _index, bool update=true)
Remove item at a specified position.
void notifyMouseButtonDoubleClick(Widget *_sender)
void onKeySetFocus(Widget *_old) override
void redrawItemAt(size_t _index)
Redraw at a specified position.
void onMouseWheel(int _rel) override
void onKeyButtonReleased(KeyCode _key) override
void notifyScrollChangePosition(ScrollBar *_sender, size_t _index)
Widget * getItemWidget(size_t _index)
void setIndexSelected(size_t _index)
Select specified _index.
void redrawAllItems()
Redraw all items.
void initialiseOverride() override
void resetCurrentActiveItem()
void onMouseDrag(int _left, int _top, MouseButton _id) override
void onKeyLostFocus(Widget *_new) override
void insertItemAt(size_t _index, Any _data=Any::Null, bool update=true)
Insert an item into a array at a specified position.
size_t _getContainerIndex(const IntPoint &_point) const override
void notifyMouseButtonPressed(Widget *_sender, int _left, int _top, MouseButton _id)
void setPropertyOverride(std::string_view _key, std::string_view _value) override
EventHandle_ItemBoxPtrSizeT eventMouseItemActivate
EventHandle_ItemBoxPtrWidgetPtr requestCreateWidgetItem
EventHandle_ItemBoxPtrSizeT eventSelectItemAccept
void notifyKeyButtonReleased(Widget *_sender, KeyCode _key)
std::vector< ItemDataInfo > VectorItemInfo
void setItemDataAt(size_t _index, Any _data)
Replace an item data at a specified position.
void updateDropItems() override
size_t _getItemIndex(Widget *_item) const override
void _updateAllVisible(bool _redraw)
void updateDropItemsState(const DDWidgetState &_state) override
size_t getIndexSelected() const
Get index of selected item (ITEM_NONE if none selected)
void _resetContainer(bool _update) override
void notifyRootMouseChangeFocus(Widget *_sender, bool _focus)
ValueType * getItemDataAt(size_t _index, bool _throw=true)
Get item data from specified position.
void findCurrentActiveItem()
void onMouseButtonReleased(int _left, int _top, MouseButton _id) override
void removeAllItems()
Remove all items.
void notifyKeyButtonPressed(Widget *_sender, KeyCode _key, Char _char)
void removeDropItems() override
void _setContainerItemInfo(size_t _index, bool _set, bool _accept) override
void clearIndexSelected()
Clear item selection.
void addItem(Any _data=Any::Null, bool update=true)
Add an item to the end of a array.
EventHandle_ItemBoxPtrIntCoordRefBool requestCoordItem
EventHandle_ItemBoxPtrCIBNotifyCellDataRef eventNotifyItem
EventHandle_ItemBoxPtrSizeT eventChangeItemPosition
delegates::MultiDelegate< ItemBox *, const IBNotifyItemData & > EventHandle_ItemBoxPtrCIBNotifyCellDataRef
types::TPoint< int > IntPoint
delegates::Delegate< ItemBox *, IntCoord &, bool > EventHandle_ItemBoxPtrIntCoordRefBool
delegates::Delegate< ItemBox *, Widget * > EventHandle_ItemBoxPtrWidgetPtr
delegates::Delegate< ItemBox *, Widget *, const IBDrawItemInfo & > EventHandle_ItemBoxPtrWidgetPtrCIBCellDrawInfoRef
constexpr size_t ITEM_NONE
types::TCoord< int > IntCoord
types::TSize< int > IntSize
std::vector< Widget * > VectorWidgetPtr
delegates::MultiDelegate< ItemBox *, size_t > EventHandle_ItemBoxPtrSizeT