| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #pragma once
- #include "BsEditorPrerequisites.h"
- #include "BsEditorWindowBase.h"
- namespace BansheeEngine
- {
- /**
- * @brief Base implementation of a window that when open doesn't allow you
- * to interact with other windows. Modal windows are similar to editor
- * windows but cannot be docked, and are meant to be used for temporary
- * operations like dialog boxes and progress bars.
- */
- class BS_ED_EXPORT ModalWindow : public EditorWindowBase
- {
- public:
- virtual ~ModalWindow();
- /**
- * @copydoc EditorWindowBase::update
- */
- virtual void update() override;
- /**
- * @copydoc EditorWindowBase::close
- */
- virtual void close() override;
- /**
- * @brief Changes the text in the modal window title bar.
- */
- void setTitle(const HString& title);
- /**
- * Converts screen pointer coordinates into coordinates relative to the window content's GUI panel.
- */
- Vector2I screenToWindowPos(const Vector2I& screenPos) const;
- /**
- * Converts pointer coordinates relative to the window content's GUI panel into screen coordinates.
- */
- Vector2I windowToScreenPos(const Vector2I& windowPos) const;
- protected:
- friend class EditorWindowManager;
- ModalWindow(const HString& title, bool hasCloseButton = false);
- /**
- * @brief Returns the area in which the GUI contents are displayed (i.e. not including
- * title bar and other default elements). Area is relative to window.
- */
- Rect2I getContentArea() const;
- /**
- * @copydoc EditorWindowBase::resized
- */
- virtual void resized() override;
- private:
- /**
- * @brief Updates the placement of child GUI elements and their non-client
- * areas (used for OS move/resize operations). Should be called after
- * window size changes.
- */
- void updateSize();
- /**
- * @brief Returns the height in pixels taken up by the title bar.
- */
- UINT32 getTitleBarHeight() const;
- GUIPanel* mTitleBarPanel;
- GUIPanel* mTitleBarBgPanel;
- GUILabel* mTitle;
- GUIButton* mCloseButton;
- GUITexture* mTitleBarBg;
- protected:
- GUIPanel* mContents;
- };
- }
|