23 #ifndef __MYGUI_MULTI_LIST_H__
24 #define __MYGUI_MULTI_LIST_H__
57 size_t getColumnCount() {
return mVectorColumnInfo.size(); }
64 void insertColumnAt(
size_t _column,
const UString& _name,
int _width,
Any _data =
Any::Null);
73 void removeColumnAt(
size_t _column);
76 void removeAllColumns();
86 void setColumnNameAt(
size_t _column,
const UString& _name);
92 void setColumnWidthAt(
size_t _column,
int _width);
95 const UString& getColumnNameAt(
size_t _column);
98 int getColumnWidthAt(
size_t _column);
101 void sortByColumn(
size_t _column,
bool _backward =
false);
107 void setColumnDataAt(
size_t _index,
Any _data);
113 template <
typename ValueType>
114 ValueType * getColumnDataAt(
size_t _index,
bool _throw =
true)
117 return mVectorColumnInfo[_index].data.castType<ValueType>(_throw);
131 size_t getItemCount()
const;
140 void removeItemAt(
size_t _index);
143 void removeAllItems();
146 void swapItemsAt(
size_t _index1,
size_t _index2);
166 void setIndexSelected(
size_t _index);
182 template <
typename ValueType>
183 ValueType * getItemDataAt(
size_t _index,
bool _throw =
true)
185 return getSubItemDataAt<ValueType>(0, _index, _throw);
199 void setSubItemNameAt(
size_t _column,
size_t _index,
const UString& _name);
202 const UString& getSubItemNameAt(
size_t _column,
size_t _index);
205 size_t findSubItemWith(
size_t _column,
const UString& _name);
211 void setSubItemDataAt(
size_t _column,
size_t _index,
Any _data);
217 template <
typename ValueType>
218 ValueType * getSubItemDataAt(
size_t _column,
size_t _index,
bool _throw =
true)
221 MYGUI_ASSERT_RANGE(_index, mVectorColumnInfo.begin()->list->getItemCount(),
"MultiList::getSubItemDataAt");
224 return mVectorColumnInfo[_column].list->getItemDataAt<ValueType>(index, _throw);
256 #ifndef MYGUI_DONT_USE_OBSOLETE
259 size_t getItemIndexSelected() {
return getIndexSelected(); }
260 MYGUI_OBSOLETE(
"use : void MultiList::setIndexSelected(size_t _index)")
261 void setItemSelectedAt(
size_t _index) { setIndexSelected(_index); }
263 void clearItemSelected() { clearIndexSelected(); }
265 MYGUI_OBSOLETE(
"use : size_t MultiList::findSubItemWith(size_t _column, const UString& _name)")
266 size_t findItem(
size_t _column, const
UString& _name) {
return findSubItemWith(_column, _name); }
267 MYGUI_OBSOLETE(
"use : const UString& MultiList::getSubItemNameAt(size_t _column, size_t _index)")
268 const
UString& getSubItem(
size_t _column,
size_t _index) {
return getSubItemNameAt(_column, _index); }
269 MYGUI_OBSOLETE(
"use : void MultiList::setSubItemNameAt(size_t _column, size_t _index, const UString& _name)")
270 void setSubItem(
size_t _column,
size_t _index, const
UString& _name) { setSubItemNameAt(_column, _index, _name); }
271 MYGUI_OBSOLETE(
"use : void MultiList::removeColumnAt(size_t _column)")
272 void deleteColumn(
size_t _column) { removeColumnAt(_column); }
274 void deleteAllColumns() { removeAllColumns(); }
275 MYGUI_OBSOLETE(
"use : int MultiList::getColumnWidthAt(size_t _column)")
276 int getColumnWidth(
size_t _column) {
return getColumnWidthAt(_column); }
277 MYGUI_OBSOLETE(
"use : const UString& MultiList::getColumnNameAt(size_t _column)")
278 const
UString& getColumnName(
size_t _column) {
return getColumnNameAt(_column); }
279 MYGUI_OBSOLETE(
"use : void MultiList::setColumnWidthAt(size_t _column, int _width)")
280 void setColumnWidth(
size_t _column,
int _width) { setColumnWidthAt(_column, _width); }
281 MYGUI_OBSOLETE(
"use : void MultiList::addColumn(const UString& _name, int _width, Any _data)")
283 MYGUI_OBSOLETE(
"use : void MultiList::setColumnNameAt(size_t _column, const UString& _name)")
284 void setColumnName(
size_t _column, const
UString& _name) { setColumnNameAt(_column, _name); }
285 MYGUI_OBSOLETE(
"use : void MultiList::insertColumnAt(size_t _column, const UString& _name, int _width, Any _data)")
286 void insertColumn(
size_t _column,
int _width, const
UString& _name) { insertColumnAt(_column, _name, _width); }
288 size_t getItemSelect() {
return getIndexSelected(); }
290 void resetItemSelect() { clearIndexSelected(); }
291 MYGUI_OBSOLETE(
"use : void MultiList::setIndexSelected(size_t _index)")
292 void setItemSelect(
size_t _index) { setIndexSelected(_index); }
293 MYGUI_OBSOLETE(
"use : void MultiList::insertItemAt(size_t _index, const UString& _name, Any _data)")
294 void insertItem(
size_t _index, const
UString& _name) { insertItemAt(_index, _name); }
295 MYGUI_OBSOLETE(
"use : void MultiList::setItemNameAt(size_t _index, const UString& _name)")
296 void setItem(
size_t _index, const
UString& _name) { setItemNameAt(_index, _name); }
297 MYGUI_OBSOLETE(
"use : const UString& MultiList::getItemNameAt(size_t _index)")
298 const
UString& getItem(
size_t _index) {
return getItemNameAt(_index); }
299 MYGUI_OBSOLETE(
"use : void MultiList::removeItemAt(size_t _index)")
300 void deleteItem(
size_t _index) { removeItemAt(_index); }
302 void deleteAllItems() { removeAllItems(); }
304 #endif // MYGUI_DONT_USE_OBSOLETE
311 void notifyListChangePosition(
List* _sender,
size_t _position);
312 void notifyListChangeFocus(
List* _sender,
size_t _position);
313 void notifyListChangeScrollPosition(
List* _sender,
size_t _position);
314 void notifyButtonClick(
Widget* _sender);
315 void notifyListSelectAccept(
List* _sender,
size_t _position);
317 void updateColumns();
318 void redrawButtons();
319 void updateOnlyEmpty();
321 bool compare(
List* _list,
size_t _left,
size_t _right);
325 Widget* getSeparator(
size_t _index);
327 void setButtonImageIndex(
Button* _button,
size_t _index);
329 void updateBackSelected(
size_t _index);
333 void shutdownWidgetSkin();
335 void frameEntered(
float _frame);
337 void frameAdvise(
bool _advise);
349 typedef std::vector<ColumnInfo> VectorColumnInfo;
361 std::string mSkinButton, mSkinList;
364 VectorColumnInfo mVectorColumnInfo;
368 size_t mLastMouseFocusIndex;
371 size_t mSortColumnIndex;
374 std::string mSkinSeparator;
375 int mOffsetButtonSeparator;
377 size_t mItemSelected;
385 #endif // __MYGUI_MULTI_LIST_H__