GUIStatusBar::GUIStatusBar(const PrivatelyConstruct& dummy, const String& style, const GUIDimensions& dimensions) :GUIElementContainer(dimensions, style) { mPanel = GUIPanel::create(); mBgPanel = GUIPanel::create(1); _registerChildElement(mPanel); _registerChildElement(mBgPanel); mBackground = GUITexture::create(GUIOptions(GUIOption::flexibleWidth()), getSubStyleName(getGUIBackgroundTypeName())); mMessage = GUIButton::create(HString(L""), GUIOptions(GUIOption::flexibleWidth()), getSubStyleName(getGUIMessageTypeName())); mScene = GUILabel::create(HString(L"Scene: Unnamed"), GUIOptions(GUIOption::fixedWidth(150))); mProject = GUILabel::create(HString(L"Project: None"), GUIOptions(GUIOption::fixedWidth(200))); mCompiling = GUILabel::create(HString(L"Compiling..."), GUIOptions(GUIOption::fixedWidth(100))); GUILayoutY* vertLayout = mPanel->addNewElement<GUILayoutY>(); vertLayout->addNewElement<GUIFixedSpace>(3); GUILayoutX* horzLayout = vertLayout->addNewElement<GUILayoutX>(); horzLayout->addNewElement<GUIFixedSpace>(10); horzLayout->addElement(mMessage); horzLayout->addNewElement<GUIFlexibleSpace>(); horzLayout->addElement(mScene); horzLayout->addNewElement<GUIFixedSpace>(10); horzLayout->addElement(mProject); horzLayout->addNewElement<GUIFixedSpace>(10); horzLayout->addElement(mCompiling); horzLayout->addNewElement<GUIFixedSpace>(10); mBgPanel->addElement(mBackground); mCompiling->setActive(false); mLogEntryAddedConn = gDebug().onLogModified.connect(std::bind(&GUIStatusBar::logModified, this)); mMessageBtnPressedConn = mMessage->onClick.connect(std::bind(&GUIStatusBar::messageBtnClicked, this)); }
GUIProgressBar::GUIProgressBar(const String& styleName, const GUIDimensions& dimensions) :GUIElementContainer(dimensions, styleName), mPercent(0) { mBar = GUITexture::create(getSubStyleName(getBarStyleType())); mBackground = GUITexture::create(getSubStyleName(getBackgroundStyleType())); mBackground->_setElementDepth(mBar->_getRenderElementDepthRange()); _registerChildElement(mBar); _registerChildElement(mBackground); }
GUIScrollArea::GUIScrollArea(ScrollBarType vertBarType, ScrollBarType horzBarType, const String& scrollBarStyle, const String& scrollAreaStyle, const GUIDimensions& dimensions) : GUIElementContainer(dimensions), mVertBarType(vertBarType), mHorzBarType(horzBarType) , mScrollBarStyle(scrollBarStyle), mVertScroll(nullptr), mHorzScroll(nullptr), mVertOffset(0), mHorzOffset(0) , mRecalculateVertOffset(false), mRecalculateHorzOffset(false) { mContentLayout = GUILayoutY::create(); _registerChildElement(mContentLayout); mHorzScroll = GUIScrollBarHorz::create(mScrollBarStyle); mVertScroll = GUIScrollBarVert::create(mScrollBarStyle); _registerChildElement(mHorzScroll); _registerChildElement(mVertScroll); mHorzScroll->onScrollOrResize.connect(std::bind(&GUIScrollArea::horzScrollUpdate, this, _1)); mVertScroll->onScrollOrResize.connect(std::bind(&GUIScrollArea::vertScrollUpdate, this, _1)); }
GUISlider::GUISlider(bool horizontal, const String& styleName, const GUIDimensions& dimensions) :GUIElementContainer(dimensions, styleName, GUIElementOption::AcceptsKeyFocus), mHorizontal(horizontal) { GUISliderHandleFlags flags = horizontal ? GUISliderHandleFlag::Horizontal : GUISliderHandleFlag::Vertical; flags |= GUISliderHandleFlag::JumpOnClick; mSliderHandle = GUISliderHandle::create(flags, getSubStyleName(getHandleStyleType())); mBackground = GUITexture::create(getSubStyleName(getBackgroundStyleType())); mFillBackground = GUITexture::create(getSubStyleName(getFillStyleType())); mBackground->_setElementDepth(mSliderHandle->_getRenderElementDepthRange() + mFillBackground->_getRenderElementDepthRange()); mFillBackground->_setElementDepth(mSliderHandle->_getRenderElementDepthRange()); _registerChildElement(mSliderHandle); _registerChildElement(mBackground); _registerChildElement(mFillBackground); mHandleMovedConn = mSliderHandle->onHandleMovedOrResized.connect(std::bind(&GUISlider::onHandleMoved, this, _1, _2)); }
GUIFieldBase::GUIFieldBase(const PrivatelyConstruct& dummy, const GUIContent& labelContent, UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel) :GUIElementContainer(dimensions, style), mLabel(nullptr) { mLayout = GUILayoutX::create(); _registerChildElement(mLayout); if(withLabel) { mLabel = GUILabel::create(labelContent, GUIOptions(GUIOption::fixedWidth(labelWidth)), getSubStyleName(getLabelStyleType())); mLayout->addElement(mLabel); } }
GUIScrollBar::GUIScrollBar(bool horizontal, const String& styleName, const GUIDimensions& dimensions) :GUIElement(styleName, dimensions), mHorizontal(horizontal) { mImageSprite = bs_new<ImageSprite>(); if(mHorizontal) { mLayout = GUILayoutX::create(); _registerChildElement(mLayout); mUpBtn = GUIButton::create(HString(L""), "ScrollLeftBtn"); mDownBtn = GUIButton::create(HString(L""), "ScrollRightBtn"); mHandleBtn = GUISliderHandle::create(mHorizontal, false, "ScrollBarHorzBtn"); } else { mLayout = GUILayoutY::create(); _registerChildElement(mLayout); mUpBtn = GUIButton::create(HString(L""), "ScrollUpBtn"); mDownBtn = GUIButton::create(HString(L""), "ScrollDownBtn"); mHandleBtn = GUISliderHandle::create(mHorizontal, false, "ScrollBarVertBtn"); } mLayout->addNewElement<GUIFixedSpace>(2); mLayout->addElement(mUpBtn); mLayout->addElement(mHandleBtn); mLayout->addElement(mDownBtn); mLayout->addNewElement<GUIFixedSpace>(2); mHandleBtn->onHandleMoved.connect(std::bind(&GUIScrollBar::handleMoved, this, _1)); mUpBtn->onClick.connect(std::bind(&GUIScrollBar::upButtonClicked, this)); mDownBtn->onClick.connect(std::bind(&GUIScrollBar::downButtonClicked, this)); }
GUITabbedTitleBar::GUITabbedTitleBar(const String& backgroundStyle, const String& tabBtnStyle, const String& maxBtnStyle, const String& closeBtnStyle, const GUIDimensions& dimensions) : GUIElementContainer(dimensions), mUniqueTabIdx(0), mActiveTabIdx(0), mBackgroundImage(nullptr), mMaxBtn(nullptr) , mCloseBtn(nullptr), mTempDraggedWidget(nullptr), mTempDraggedTabIdx(0), mDragInProgress(false) , mDraggedBtn(nullptr), mDragBtnOffset(0), mInitialDragOffset(0), mBackgroundStyle(backgroundStyle) , mCloseBtnStyle(closeBtnStyle), mMaximizeBtnStyle(maxBtnStyle), mTabBtnStyle(tabBtnStyle) { if(mBackgroundStyle == StringUtil::BLANK) mBackgroundStyle = "TabBarBackground"; if(mMaximizeBtnStyle == StringUtil::BLANK) mMaximizeBtnStyle = "WinMaximizeBtn"; if(mCloseBtnStyle == StringUtil::BLANK) mCloseBtnStyle = "WinCloseBtn"; if(mTabBtnStyle == StringUtil::BLANK) mTabBtnStyle = "TabbedBarBtn"; mMaxBtn = GUIButton::create(HString(L""), mMaximizeBtnStyle); mMaxBtn->_setElementDepth(1); _registerChildElement(mMaxBtn); mCloseBtn = GUIButton::create(HString(L""), mCloseBtnStyle); mCloseBtn->_setElementDepth(1); _registerChildElement(mCloseBtn); mBackgroundImage = GUITexture::create(mBackgroundStyle); mBackgroundImage->_setElementDepth(mMaxBtn->_getRenderElementDepthRange() + 3); _registerChildElement(mBackgroundImage); mCloseBtn->onClick.connect(std::bind(&GUITabbedTitleBar::tabClosed, this)); mMaxBtn->onClick.connect(std::bind(&GUITabbedTitleBar::tabMaximize, this)); mTabToggleGroup = GUIToggle::createToggleGroup(); }
UINT32 GUITabbedTitleBar::insertTab(UINT32 position, const HString& name) { GUITabButton* newTabToggle = GUITabButton::create(mTabToggleGroup, mUniqueTabIdx, name, mTabBtnStyle); newTabToggle->_setElementDepth(1); _registerChildElement(newTabToggle); position = Math::clamp(position, 0U, (UINT32)mTabButtons.size()); UINT32 uniqueIdx = mUniqueTabIdx++; newTabToggle->onToggled.connect(std::bind(&GUITabbedTitleBar::tabToggled, this, uniqueIdx, _1)); newTabToggle->onDragged.connect(std::bind(&GUITabbedTitleBar::tabDragged, this, _1, _2)); newTabToggle->onDragEnd.connect(std::bind(&GUITabbedTitleBar::tabDragEnd, this, _1, _2)); mTabButtons.insert(mTabButtons.begin() + position, newTabToggle); return uniqueIdx; }
GUITextField::GUITextField(const PrivatelyConstruct& dummy, bool multiline, const GUIContent& labelContent, UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel) :GUIElementContainer(dimensions, style), mInputBox(nullptr), mLayout(nullptr), mLabel(nullptr), mHasInputFocus(false), mValue("") { mLayout = GUILayoutX::create(); _registerChildElement(mLayout); if (withLabel) { mLabel = GUILabel::create(labelContent, GUIOptions(GUIOption::fixedWidth(labelWidth)), getSubStyleName(getLabelStyleType())); mLayout->addElement(mLabel); } mInputBox = GUIInputBox::create(multiline, getSubStyleName(getInputStyleType())); mLayout->addElement(mInputBox); mInputBox->onValueChanged.connect(std::bind(&GUITextField::valueChanged, this, _1)); mInputBox->onFocusChanged.connect(std::bind(&GUITextField::focusChanged, this, _1)); mInputBox->onConfirm.connect(std::bind(&GUITextField::inputConfirmed, this)); }
GUIGameObjectField::GUIGameObjectField(const PrivatelyConstruct& dummy, const String& typeNamespace, const String& type, const GUIContent& labelContent, UINT32 labelWidth, const String& style, const GUIDimensions& dimensions, bool withLabel) : GUIElementContainer(dimensions, style), mLabel(nullptr), mDropButton(nullptr), mClearButton(nullptr), mType(type) , mNamespace(typeNamespace), mInstanceId(0) { mLayout = GUILayoutX::create(); _registerChildElement(mLayout); if(withLabel) { mLabel = GUILabel::create(labelContent, GUIOptions(GUIOption::fixedWidth(labelWidth)), getSubStyleName(BuiltinEditorResources::ObjectFieldLabelStyleName)); mLayout->addElement(mLabel); } mDropButton = GUIDropButton::create((UINT32)DragAndDropType::SceneObject, GUIOptions(GUIOption::flexibleWidth()), getSubStyleName(BuiltinEditorResources::ObjectFieldDropBtnStyleName)); mClearButton = GUIButton::create(HString(L""), getSubStyleName(BuiltinEditorResources::ObjectFieldClearBtnStyleName)); mClearButton->onClick.connect(std::bind(&GUIGameObjectField::onClearButtonClicked, this)); mLayout->addElement(mDropButton); mLayout->addElement(mClearButton); mDropButton->onDataDropped.connect(std::bind(&GUIGameObjectField::dataDropped, this, _1)); mDropButton->onClick.connect(std::bind(&GUIGameObjectField::onDropButtonClicked, this)); }
void GUILayout::addElement(GUIElementBase* element) { if (!element->_isDestroyed()) _registerChildElement(element); }