7#ifndef MYGUI_MULTI_LIST_BOX_H_
8#define MYGUI_MULTI_LIST_BOX_H_
127 void sortByColumn(
size_t _column,
bool _backward =
false);
153 template<
typename ValueType>
157 return mVectorColumnInfo[_index].data.castType<ValueType>(_throw);
171 size_t getItemCount()
const;
180 void removeItemAt(
size_t _index);
183 void removeAllItems();
186 void swapItemsAt(
size_t _index1,
size_t _index2);
193 void setItemNameAt(
size_t _index,
const UString& _name);
196 const UString& getItemNameAt(
size_t _index)
const;
203 size_t getIndexSelected()
const;
206 void setIndexSelected(
size_t _index);
209 void clearIndexSelected();
216 void setItemDataAt(
size_t _index,
Any _data);
219 void clearItemDataAt(
size_t _index);
222 template<
typename ValueType>
239 void setSubItemNameAt(
size_t _column,
size_t _index,
const UString& _name);
242 const UString& getSubItemNameAt(
size_t _column,
size_t _index)
const;
245 size_t findSubItemWith(
size_t _column,
const UString& _name);
251 void setSubItemDataAt(
size_t _column,
size_t _index,
Any _data);
254 void clearSubItemDataAt(
size_t _column,
size_t _index);
257 template<
typename ValueType>
262 mVectorColumnInfo.begin()->list->getItemCount(),
263 "MultiListBox::getSubItemDataAt");
266 return getSubItemAt(_column)->getItemDataAt<ValueType>(index, _throw);
321 void notifyListChangePosition(
ListBox* _sender,
size_t _position);
322 void notifyListChangeFocus(
ListBox* _sender,
size_t _position);
323 void notifyListChangeScrollPosition(
ListBox* _sender,
size_t _position);
324 void notifyButtonClick(
Widget* _sender);
325 void notifyListSelectAccept(
ListBox* _sender,
size_t _position);
328 void updateColumns();
329 void redrawButtons();
330 void updateOnlyEmpty();
332 bool compare(
ListBox* _list,
size_t _left,
size_t _right);
336 Widget* getOrCreateSeparator(
size_t _index);
338 void updateBackSelected(
size_t _index);
352 using VectorColumnInfo = std::vector<ColumnInfo>;
354 void frameEntered(
float _frame);
355 void frameAdvise(
bool _advise);
357 ListBox* getSubItemAt(
size_t _column)
const;
358 int getButtonHeight()
const;
362 void _swapColumnsAt(
size_t _index1,
size_t _index2);
364 int getColumnWidth(
size_t _index,
int _freeSpace,
size_t _countStars,
size_t _lastIndexStar,
int _starWidth)
366 bool getUpdateByResize()
const;
367 int updateWidthColumns(
size_t& _countStars,
size_t& _lastIndexStar);
370 int mHeightButton{0};
372 std::string mSkinButton;
373 std::string mSkinList;
374 Widget* mWidgetEmpty{
nullptr};
376 VectorColumnInfo mVectorColumnInfo;
385 int mWidthSeparator{0};
386 std::string mSkinSeparator;
390 bool mFrameAdvise{
false};
391 Widget* mHeaderPlace{
nullptr};
#define MYGUI_ASSERT_RANGE(index, size, owner)
#define MYGUI_RTTI_DERIVED(DerivedType)
size_t convertToBack(size_t _index) const
widget description should be here.
widget description should be here.
size_t _getItemCount() const override
void setColumnWidthAt(size_t _column, int _width)
void onWidgetDestroy(Widget *_widget) override
void _removeItemAt(size_t _index) override
void setColumnResizingPolicyAt(size_t _index, ResizingPolicy _value)
void setColumnWidth(MultiListItem *_item, int _width)
void _setItemNameAt(size_t _index, const UString &_name) override
void setCoord(const IntCoord &_coord) override
EventPair< EventHandle_MultiListPtrSizeTCUTFStringRefCUTFStringRefBoolRef, EventHandle_MultiListPtrSizeTSizeTSizeTBoolRef > requestOperatorLess
void setColumnDataAt(size_t _index, Any _data)
Replace an item data at a specified position.
EventPair< EventHandle_WidgetSizeT, EventHandle_MultiListPtrSizeT > eventListChangePosition
void sortByColumn(size_t _column, bool _backward=false)
const UString & _getItemNameAt(size_t _index) const override
void insertColumnAt(size_t _column, const UString &_name, int _width=0, Any _data=Any::Null)
int getColumnWidthAt(size_t _column) const
void setSize(const IntSize &_size) override
EventPair< EventHandle_WidgetSizeT, EventHandle_MultiListPtrSizeT > eventListSelectAccept
size_t getColumnCount() const
Get number of columns.
void onWidgetCreated(Widget *_widget) override
ValueType * getSubItemDataAt(size_t _column, size_t _index, bool _throw=true)
Get item data from specified position.
void removeColumnAt(size_t _column)
Widget * _getItemAt(size_t _index) const override
void setPosition(const IntPoint &_point) override
void _addItem(const MyGUI::UString &_name) override
void clearColumnDataAt(size_t _index)
Clear an item data at a specified position.
void shutdownOverride() override
EventHandle_MultiListPtrCIBNotifyCellDataRef eventNotifyItem
void initialiseOverride() override
size_t getColumnIndex(const MultiListItem *_item) const
Get column index.
void setColumnNameAt(size_t _column, const UString &_name)
ValueType * getColumnDataAt(size_t _index, bool _throw=true)
Get item data from specified position.
void addColumn(const UString &_name, int _width=0, Any _data=Any::Null)
ValueType * getItemDataAt(size_t _index, bool _throw=true)
Get item data from specified position.
void setColumnName(MultiListItem *_item, const UString &_name)
void setColumnResizingPolicy(MultiListItem *_item, ResizingPolicy _value)
const UString & getColumnNameAt(size_t _column) const
void swapColumnsAt(size_t _index1, size_t _index2)
Swap columns at a specified positions.
const UString & getColumnName(const MultiListItem *_item) const
widget description should be here.
A UTF-16 string with implicit conversion to/from std::string and std::wstring.
delegates::MultiDelegate< MultiListBox *, const IBNotifyItemData & > EventHandle_MultiListPtrCIBNotifyCellDataRef
types::TPoint< int > IntPoint
delegates::Delegate< MultiListBox *, size_t, size_t, size_t, bool & > EventHandle_MultiListPtrSizeTSizeTSizeTBoolRef
delegates::Delegate< MultiListBox *, size_t, const UString &, const UString &, bool & > EventHandle_MultiListPtrSizeTCUTFStringRefCUTFStringRefBoolRef
delegates::MultiDelegate< Widget *, size_t, const UString &, const UString &, bool & > EventHandle_WidgetIntUTFStringUTFStringBool
constexpr size_t ITEM_NONE
types::TCoord< int > IntCoord
types::TSize< int > IntSize
std::vector< Widget * > VectorWidgetPtr
delegates::MultiDelegate< MultiListBox *, size_t > EventHandle_MultiListPtrSizeT