Exemplo n.º 1
0
	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);
	}
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
	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);
	}
Exemplo n.º 4
0
	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);
	}
Exemplo n.º 5
0
	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);
	}
Exemplo n.º 6
0
	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;
	}
Exemplo n.º 7
0
	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));
	}
Exemplo n.º 8
0
	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++);
	}
Exemplo n.º 9
0
	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]);
	}
Exemplo n.º 10
0
	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>();
	}
Exemplo n.º 11
0
	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();
	}
Exemplo n.º 12
0
	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;
	}
Exemplo n.º 13
0
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();
}
Exemplo n.º 14
0
    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);
    }
Exemplo n.º 15
0
    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
    }