Example #1
0
    void MultiListBox::updateOnlyEmpty()
    {
        if (nullptr == mWidgetEmpty)
            return;

        // кнопка, для заполнения пустоты
        if (mWidthBar >= mClient->getWidth())
            mWidgetEmpty->setVisible(false);
        else
        {
            mWidgetEmpty->setCoord(mWidthBar, 0, mClient->getWidth() - mWidthBar, getButtonHeight());
            mWidgetEmpty->setVisible(true);
        }
    }
Example #2
0
    void MultiListBox::updateColumns()
    {
        size_t countStars = 0;
        size_t lastIndexStar = ITEM_NONE;

        int allColumnsWidth = updateWidthColumns(countStars, lastIndexStar);
        int clientWidth = mClient->getWidth();
        int separatorsWidth = mVectorColumnInfo.empty() ? 0 : (mVectorColumnInfo.size() - 1) * mWidthSeparator;
        int freeSpace = clientWidth - separatorsWidth - allColumnsWidth;
        int starWidth = (countStars != 0 && freeSpace > 0) ? (freeSpace / countStars) : 0;

        mWidthBar = 0;
        for (size_t index = 0; index < mVectorColumnInfo.size(); ++ index)
        {
            ColumnInfo& info = mVectorColumnInfo[index];

            int columnWidth = getColumnWidth(index, freeSpace, countStars, lastIndexStar, starWidth);

            if (mHeaderPlace != nullptr)
            {
                info.item->setCoord(mWidthBar, 0, columnWidth, mClient->getHeight());
            }
            else
            {
                info.item->setCoord(mWidthBar, mHeightButton, columnWidth, mClient->getHeight() - mHeightButton);
            }

            info.button->setCoord(mWidthBar, 0, columnWidth, getButtonHeight());
            info.button->_setInternalData(index);

            mWidthBar += columnWidth;

            // промежуток между листами
            Widget* separator = getSeparator(index);
            if (separator)
            {
                separator->setCoord(mWidthBar, 0, mWidthSeparator, mClient->getHeight());
            }

            mWidthBar += mWidthSeparator;
        }

        redrawButtons();
        updateOnlyEmpty();
    }
Example #3
0
    void MultiListBox::initialiseOverride()
    {
        Base::initialiseOverride();

        std::string skinButtonEmpty;

        if (isUserString("SkinButton"))
            mSkinButton = getUserString("SkinButton");
        if (isUserString("SkinList"))
            mSkinList = getUserString("SkinList");
        if (isUserString("SkinSeparator"))
            mSkinSeparator = getUserString("SkinSeparator");
        if (isUserString("WidthSeparator"))
            mWidthSeparator = utility::parseValue<int>(getUserString("WidthSeparator"));

        // OBSOLETE
        if (isUserString("HeightButton"))
            mHeightButton = utility::parseValue<int>(getUserString("HeightButton"));
        if (mHeightButton < 0)
            mHeightButton = 0;

        assignWidget(mHeaderPlace, "HeaderPlace");

        assignWidget(mClient, "Client");
        if (mClient != nullptr)
            setWidgetClient(mClient);

        if (nullptr == mClient)
            mClient = this;

        assignWidget(mWidgetEmpty, "Empty");

        if (mWidgetEmpty == nullptr)
        {
            if (isUserString("SkinButtonEmpty"))
                skinButtonEmpty = getUserString("SkinButtonEmpty");
            if (!skinButtonEmpty.empty())
                mWidgetEmpty = mClient->createWidget<Widget>(skinButtonEmpty, IntCoord(0, 0, mClient->getWidth(), getButtonHeight()), Align::Default);
        }

        if (getUpdateByResize())
            updateColumns();
    }
Example #4
0
	void MultiListBox::initialiseOverride()
	{
		Base::initialiseOverride();

		std::string skinButtonEmpty;

		if (isUserString("SkinButton"))
			mSkinButton = getUserString("SkinButton");

		if (isUserString("SkinList"))
			mSkinList = getUserString("SkinList");

		if (isUserString("SkinSeparator"))
			mSkinSeparator = getUserString("SkinSeparator");

		if (isUserString("WidthSeparator"))
			mWidthSeparator = utility::parseValue<int>(getUserString("WidthSeparator"));

		// OBSOLETE
		if (isUserString("HeightButton"))
			mHeightButton = utility::parseValue<int>(getUserString("HeightButton"));
		if (mHeightButton < 0)
			mHeightButton = 0;

		///@wskin_child{MultiListBox, Widget, HeaderPlace} Место для заголовков колонок.
		assignWidget(mHeaderPlace, "HeaderPlace");

		///@wskin_child{MultiListBox, Widget, Client} Клиентская зона.
		assignWidget(mClient, "Client");
		if (mClient != nullptr)
			setWidgetClient(mClient);

		if (nullptr == mClient)
			mClient = this;

		///@wskin_child{MultiListBox, Widget, Empty} Виджет для заголовка в месте где нет списков.
		assignWidget(mWidgetEmpty, "Empty");

		if (mWidgetEmpty == nullptr)
		{
			if (isUserString("SkinButtonEmpty"))
				skinButtonEmpty = getUserString("SkinButtonEmpty");

			if (!skinButtonEmpty.empty())
				mWidgetEmpty = mClient->createWidget<Widget>(skinButtonEmpty, IntCoord(0, 0, mClient->getWidth(), getButtonHeight()), Align::Default);
		}

		if (getUpdateByResize())
			updateColumns();
	}