void ItemBox::insertItemAt(size_t _index, Any _data) { MYGUI_ASSERT_RANGE_INSERT(_index, mItemsInfo.size(), "ItemBox::insertItemAt"); if (_index == ITEM_NONE) _index = mItemsInfo.size(); _resetContainer(false); resetCurrentActiveItem(); mItemsInfo.insert(mItemsInfo.begin() + _index, ItemDataInfo(_data)); // расчитываем новый индекс выделения if (mIndexSelect != ITEM_NONE) { if (mIndexSelect >= _index) { mIndexSelect ++; } } updateScrollSize(); updateScrollPosition(); findCurrentActiveItem(); _updateAllVisible(true); }
void MultiListBox::insertColumnAt(size_t _column, const UString& _name, int _width, Any _data) { MYGUI_ASSERT_RANGE_INSERT(_column, mVectorColumnInfo.size(), "MultiListBox::insertColumnAt"); if (_column == ITEM_NONE) _column = mVectorColumnInfo.size(); createWidget<MultiListItem>("", IntCoord(), Align::Default); mVectorColumnInfo.back().width = _width; mVectorColumnInfo.back().sizeType = ResizingPolicy::Fixed; mVectorColumnInfo.back().name = _name; mVectorColumnInfo.back().data = _data; mVectorColumnInfo.back().button->setCaption(_name); if (_column == (mVectorColumnInfo.size() - 1)) { updateColumns(); mVectorColumnInfo.back().list->setScrollVisible(true); } else { _swapColumnsAt(_column, mVectorColumnInfo.size() - 1); } }
void BiIndexData::insertItemAt(size_t _index, const std::string & _name, size_t _data) { MYGUI_ASSERT_RANGE_INSERT(_index, mItemsInfo.size(), "BiIndexData::insertItemAt"); if (_index == MyGUI::ITEM_NONE) _index = mItemsInfo.size(); size_t index = BiIndexBase::insertItemAt(_index); mItemsInfo.insert(mItemsInfo.begin() + index, _name); }
void ListBox::insertItemAt(size_t _index, const UString& _name, Any _data) { MYGUI_ASSERT_RANGE_INSERT(_index, mItemsInfo.size(), "ListBox::insertItemAt"); if (_index == ITEM_NONE) _index = mItemsInfo.size(); mItemsInfo.insert(mItemsInfo.begin() + _index, _name); Base::insertItemAt(_index, _data); }
void ImageBox::deleteItemFrame(size_t _index, size_t _indexFrame) { MYGUI_ASSERT_RANGE(_index, mItems.size(), "ImageBox::deleteItemFrame"); VectorImages::iterator iter = mItems.begin() + _index; MYGUI_ASSERT_RANGE_INSERT(_indexFrame, iter->images.size(), "ImageBox::deleteItemFrame"); if (_indexFrame == ITEM_NONE) _indexFrame = iter->images.size() - 1; iter->images.erase(iter->images.begin() + _indexFrame); }
MenuItem* MenuControl::insertItemAt(size_t _index, const UString& _name, MenuItemType _type, const std::string& _id, Any _data) { MYGUI_ASSERT_RANGE_INSERT(_index, mItemsInfo.size(), "MenuControl::insertItemAt"); if (_index == ITEM_NONE) _index = mItemsInfo.size(); MenuItem* item = _getClientWidget()->createWidget<MenuItem>(getSkinByType(_type), IntCoord(), Align::Default); _wrapItem(item, _index, _name, _type, _id, _data); return item; }
void ImageBox::insertItemFrame(size_t _index, size_t _indexFrame, const IntCoord& _item) { MYGUI_ASSERT_RANGE(_index, mItems.size(), "ImageBox::insertItemFrame"); VectorImages::iterator iter = mItems.begin() + _index; MYGUI_ASSERT_RANGE_INSERT(_indexFrame, iter->images.size(), "ImageBox::insertItemFrame"); if (_indexFrame == ITEM_NONE) _indexFrame = iter->images.size() - 1; iter->images.insert(iter->images.begin() + _indexFrame, CoordConverter::convertTextureCoord(_item, mSizeTexture)); }
void ImageBox::insertItem(size_t _index, const IntCoord& _item) { MYGUI_ASSERT_RANGE_INSERT(_index, mItems.size(), "ImageBox::insertItem"); if (_index == ITEM_NONE) _index = mItems.size(); VectorImages::iterator iter = mItems.insert(mItems.begin() + _index, ImageItem()); iter->images.push_back(CoordConverter::convertTextureCoord(_item, mSizeTexture)); if ((mIndexSelect != ITEM_NONE) && (_index <= mIndexSelect)) updateSelectIndex(mIndexSelect++); }
void ImageBox::insertItemFrameDublicate(size_t _index, size_t _indexFrame, size_t _indexSourceFrame) { MYGUI_ASSERT_RANGE(_index, mItems.size(), "ImageBox::insertItemFrameDublicate"); VectorImages::iterator iter = mItems.begin() + _index; MYGUI_ASSERT_RANGE_INSERT(_indexFrame, iter->images.size(), "ImageBox::insertItemFrameDublicate"); if (_indexFrame == ITEM_NONE) _indexFrame = iter->images.size() - 1; MYGUI_ASSERT_RANGE(_indexSourceFrame, iter->images.size(), "ImageBox::insertItemFrameDublicate"); iter->images.insert(iter->images.begin() + _indexFrame, iter->images[_indexSourceFrame]); }
TabItem* TabControl::insertItemAt(size_t _index, const UString& _name, Any _data) { MYGUI_ASSERT_RANGE_INSERT(_index, mItemsInfo.size(), "TabControl::insertItem"); Widget* widget = Base::baseCreateWidget(WidgetStyle::Child, TabItem::getClassTypeName(), "Default", _getWidgetTemplate()->getCoord(), _getWidgetTemplate()->getAlign(), "", "", false); size_t lastIndex = mItemsInfo.size() - 1; setItemNameAt(lastIndex, _name); setItemDataAt(lastIndex, _data); swapItems(_index == ITEM_NONE ? lastIndex : _index, lastIndex); return widget->castType<TabItem>(); }
void Data::insertChild(size_t _index, DataPtr _child) { MYGUI_ASSERT(_child != nullptr, "Child is nullptr"); MYGUI_ASSERT(_child->getParent() == nullptr, "Child already attached"); MYGUI_ASSERT(_child->getType() != nullptr, "Type not found"); MYGUI_ASSERT(getType() != nullptr, "Type not found"); MYGUI_ASSERT(getType()->isChild(_child->getType()->getName()), "Type is not child"); MYGUI_ASSERT_RANGE_INSERT(_index, mChilds.size(), "Data::insertChild"); if (_index == MyGUI::ITEM_NONE) _index = mChilds.size(); mChilds.insert(mChilds.begin() + _index, _child); _child->mParent = mWeakThis.lock(); }
size_t BiIndexBase::insertItemAt(size_t _index) { #if MYGUI_DEBUG_MODE == 1 MYGUI_ASSERT_RANGE_INSERT(_index, mIndexFace.size(), "BiIndexBase::insertItemAt"); checkIndexes(); #endif if (_index == MyGUI::ITEM_NONE) _index = mIndexFace.size(); size_t index; if (_index == mIndexFace.size()) { // для вставки айтема index = mIndexFace.size(); mIndexFace.push_back(_index); mIndexBack.push_back(_index); } else { // для вставки айтема index = mIndexFace[_index]; size_t count = mIndexFace.size(); for (size_t pos = 0; pos < count; ++pos) { if (mIndexFace[pos] >= index) mIndexFace[pos]++; } mIndexFace.insert(mIndexFace.begin() + _index, index); count ++; mIndexBack.push_back(0); for (size_t pos = 0; pos < count; ++pos) { mIndexBack[mIndexFace[pos]] = pos; } } #if MYGUI_DEBUG_MODE == 1 checkIndexes(); #endif return index; }
void PanelView::insertItem(size_t _index, PanelBase * _item) { MYGUI_ASSERT_RANGE_INSERT(_index, mItems.size(), "PanelView::insertItem"); if (_index == MyGUI::ITEM_NONE) _index = mItems.size(); MYGUI_ASSERT(findItem(_item) == MyGUI::ITEM_NONE, "panel allready exist"); // создаем лейаут базовой ¤чейки PanelCell * cell = new PanelCell(); cell->initialise(mScrollView); cell->eventUpdatePanel = MyGUI::newDelegate(this, &PanelView::notifyUpdatePanel); // теперь основной лейаут ¤чейки _item->initialiseCell(cell); mItems.insert(mItems.begin() + _index, _item); setNeedUpdate(); }
void MultiListBox::insertItemAt(size_t _index, const UString& _name, Any _data) { MYGUI_ASSERT(!mVectorColumnInfo.empty(), "MultiListBox::insertItemAt"); MYGUI_ASSERT_RANGE_INSERT(_index, mVectorColumnInfo.front().list->getItemCount(), "MultiListBox::insertItemAt"); if (ITEM_NONE == _index) _index = mVectorColumnInfo.front().list->getItemCount(); // если надо, то меняем выделенный элемент // при сортировке, обновится if ((mItemSelected != ITEM_NONE) && (_index <= mItemSelected)) mItemSelected ++; size_t index = BiIndexBase::insertItemAt(_index); // вставляем во все поля пустые, а потом присваиваем первому for (VectorColumnInfo::iterator iter = mVectorColumnInfo.begin(); iter != mVectorColumnInfo.end(); ++iter) { (*iter).list->insertItemAt(index, ""); } mVectorColumnInfo.front().list->setItemNameAt(index, _name); mVectorColumnInfo.front().list->setItemDataAt(index, _data); frameAdvise(true); }
void ListBox::insertItemAt(size_t _index, const UString& _name, Any _data) { MYGUI_ASSERT_RANGE_INSERT(_index, mItemsInfo.size(), "ListBox::insertItemAt"); if (_index == ITEM_NONE) _index = mItemsInfo.size(); // вставляем физически mItemsInfo.insert(mItemsInfo.begin() + _index, PairItem(_name, _data)); // если надо, то меняем выделенный элемент if ((mIndexSelect != ITEM_NONE) && (_index <= mIndexSelect)) mIndexSelect++; // строка, до первого видимого элемента if ((_index <= (size_t)mTopIndex) && (mRangeIndex > 0)) { mTopIndex ++; // просчитываем положение скролла if (mWidgetScroll != nullptr) { mWidgetScroll->setScrollRange(mWidgetScroll->getScrollRange() + mHeightLine); if (!mItemsInfo.empty()) mWidgetScroll->setTrackSize( mWidgetScroll->getLineSize() * _getClientWidget()->getHeight() / mHeightLine / (int)mItemsInfo.size() ); mWidgetScroll->setScrollPosition(mTopIndex * mHeightLine + mOffsetTop); } mRangeIndex += mHeightLine; } else { // высчитывам положение строки int offset = ((int)_index - mTopIndex) * mHeightLine - mOffsetTop; // строка, после последнего видимого элемента, плюс одна строка (потому что для прокрутки нужно на одну строчку больше) if (_getClientWidget()->getHeight() < (offset - mHeightLine)) { // просчитываем положение скролла if (mWidgetScroll != nullptr) { mWidgetScroll->setScrollRange(mWidgetScroll->getScrollRange() + mHeightLine); if (!mItemsInfo.empty()) mWidgetScroll->setTrackSize( mWidgetScroll->getLineSize() * _getClientWidget()->getHeight() / mHeightLine / (int)mItemsInfo.size() ); mWidgetScroll->setScrollPosition(mTopIndex * mHeightLine + mOffsetTop); } mRangeIndex += mHeightLine; // строка в видимой области } else { // обновляем все updateScroll(); updateLine(true); // позже сюда еще оптимизацию по колличеству перерисовок } } #if MYGUI_DEBUG_MODE == 1 _checkMapping("ListBox::insertItemAt"); #endif }