| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #include "BsModalWindow.h"
- #include "BsEditorWindowManager.h"
- #include "BsRenderWindow.h"
- #include "BsPlatform.h"
- #include "BsGUIArea.h"
- #include "BsGUILayoutX.h"
- #include "BsGUISpace.h"
- #include "BsGUIButton.h"
- #include "BsGUITexture.h"
- #include "BsGUILabel.h"
- namespace BansheeEngine
- {
- ModalWindow::ModalWindow(const HString& title, bool hasCloseButton)
- :EditorWindowBase(true), mTitleBarArea(nullptr), mTitleBarBgArea(nullptr),
- mCloseButton(nullptr), mTitleBarBg(nullptr), mTitle(nullptr)
- {
- mTitleBarBgArea = GUIArea::createStretchedXY(*mGUI, 1, 1, 1, 1, std::numeric_limits<UINT16>::max() - 1);
- mTitleBarArea = GUIArea::createStretchedXY(*mGUI, 1, 1, 1, 1, 0);
- mTitleBarBg = GUITexture::create(GUIOptions(GUIOption::flexibleWidth()), "TitleBarBackground");
- mTitle = GUILabel::create(title);
- GUILayout& bgLayout = mTitleBarBgArea->getLayout().addLayoutY();
- bgLayout.addElement(mTitleBarBg);
- bgLayout.addFlexibleSpace();
- GUILayout& contentLayoutY = mTitleBarArea->getLayout().addLayoutY();
- GUILayout& contentLayoutX = contentLayoutY.addLayoutX();
- contentLayoutX.addFlexibleSpace();
- GUILayout& titleLayout = contentLayoutX.addLayoutY();
- titleLayout.addFlexibleSpace();
- titleLayout.addElement(mTitle);
- titleLayout.addFlexibleSpace();
- contentLayoutX.addFlexibleSpace();
- if (hasCloseButton)
- {
- mCloseButton = GUIButton::create(HString(L""), "WinCloseBtn");
- contentLayoutX.addElement(mCloseButton);
-
- mCloseButton->onClick.connect(std::bind(&ModalWindow::close, this));
- }
- contentLayoutY.addFlexibleSpace();
-
- updateSize();
- }
- ModalWindow::~ModalWindow()
- {
- }
- void ModalWindow::update()
- {
- }
- void ModalWindow::close()
- {
- bs_delete(this);
- }
- void ModalWindow::setTitle(const HString& title)
- {
- mTitle->setContent(GUIContent(title));
- }
- void ModalWindow::resized()
- {
- EditorWindowBase::resized();
- updateSize();
- }
- void ModalWindow::updateSize()
- {
- Vector<Rect2I> captionAreas;
- captionAreas.push_back(Rect2I(1, 1, getWidth() - 2, getTitleBarHeight()));
- Platform::setCaptionNonClientAreas(*mRenderWindow->getCore().get(), captionAreas);
- }
- Rect2I ModalWindow::getContentArea() const
- {
- return Rect2I(1, 1 + getTitleBarHeight(), getWidth() - 2, getHeight() - getTitleBarHeight() - 2);
- }
- UINT32 ModalWindow::getTitleBarHeight() const
- {
- return mTitleBarBg->getBounds().height;
- }
- }
|