mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 11:26:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			172 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef OPENMW_WIDGETS_BOX_H
 | 
						|
#define OPENMW_WIDGETS_BOX_H
 | 
						|
 | 
						|
#include <MyGUI_Widget.h>
 | 
						|
#include <MyGUI_TextBox.h>
 | 
						|
#include <MyGUI_EditBox.h>
 | 
						|
#include <MyGUI_Button.h>
 | 
						|
#include <MyGUI_ComboBox.h>
 | 
						|
 | 
						|
#include "fontwrapper.hpp"
 | 
						|
 | 
						|
namespace Gui
 | 
						|
{
 | 
						|
    class ComboBox : public FontWrapper<MyGUI::ComboBox>
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( ComboBox )
 | 
						|
 | 
						|
    protected:
 | 
						|
        void setPropertyOverride(const std::string& _key, const std::string& _value) override;
 | 
						|
    };
 | 
						|
 | 
						|
    class Button : public FontWrapper<MyGUI::Button>
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( Button )
 | 
						|
    };
 | 
						|
 | 
						|
    class TextBox : public FontWrapper<MyGUI::TextBox>
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( TextBox )
 | 
						|
    };
 | 
						|
 | 
						|
    class EditBox : public FontWrapper<MyGUI::EditBox>
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( EditBox )
 | 
						|
    };
 | 
						|
 | 
						|
    class AutoSizedWidget
 | 
						|
    {
 | 
						|
    public:
 | 
						|
        AutoSizedWidget() : mExpandDirection(MyGUI::Align::Right) {}
 | 
						|
 | 
						|
        virtual MyGUI::IntSize getRequestedSize() = 0;
 | 
						|
 | 
						|
        virtual ~AutoSizedWidget() = default;
 | 
						|
 | 
						|
    protected:
 | 
						|
        void notifySizeChange(MyGUI::Widget* w);
 | 
						|
 | 
						|
        MyGUI::Align mExpandDirection;
 | 
						|
    };
 | 
						|
 | 
						|
    class AutoSizedTextBox : public AutoSizedWidget, public TextBox
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( AutoSizedTextBox )
 | 
						|
 | 
						|
    public:
 | 
						|
        MyGUI::IntSize getRequestedSize() override;
 | 
						|
        void setCaption(const MyGUI::UString& _value) override;
 | 
						|
 | 
						|
    protected:
 | 
						|
        void setPropertyOverride(const std::string& _key, const std::string& _value) override;
 | 
						|
        std::string mFontSize;
 | 
						|
    };
 | 
						|
 | 
						|
    class AutoSizedEditBox : public AutoSizedWidget, public EditBox
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( AutoSizedEditBox )
 | 
						|
 | 
						|
    public:
 | 
						|
 | 
						|
        MyGUI::IntSize getRequestedSize() override;
 | 
						|
        void setCaption(const MyGUI::UString& _value) override;
 | 
						|
 | 
						|
        void initialiseOverride() override;
 | 
						|
 | 
						|
    protected:
 | 
						|
        void setPropertyOverride(const std::string& _key, const std::string& _value) override;
 | 
						|
        int getWidth();
 | 
						|
        std::string mFontSize;
 | 
						|
        bool mShrink = false;
 | 
						|
        bool mWasResized = false;
 | 
						|
        int mMaxWidth = 0;
 | 
						|
    };
 | 
						|
 | 
						|
    class AutoSizedButton : public AutoSizedWidget, public Button
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( AutoSizedButton )
 | 
						|
 | 
						|
    public:
 | 
						|
        MyGUI::IntSize getRequestedSize() override;
 | 
						|
        void setCaption(const MyGUI::UString& _value) override;
 | 
						|
 | 
						|
    protected:
 | 
						|
        void setPropertyOverride(const std::string& _key, const std::string& _value) override;
 | 
						|
        std::string mFontSize;
 | 
						|
    };
 | 
						|
 | 
						|
    /**
 | 
						|
     * @brief A container widget that automatically sizes its children
 | 
						|
     * @note the box being an AutoSizedWidget as well allows to put boxes inside a box
 | 
						|
     */
 | 
						|
    class Box : public AutoSizedWidget
 | 
						|
    {
 | 
						|
    public:
 | 
						|
        Box();
 | 
						|
 | 
						|
        virtual ~Box() = default;
 | 
						|
 | 
						|
        void notifyChildrenSizeChanged();
 | 
						|
 | 
						|
    protected:
 | 
						|
        virtual void align() = 0;
 | 
						|
 | 
						|
        virtual bool _setPropertyImpl(const std::string& _key, const std::string& _value);
 | 
						|
 | 
						|
        int mSpacing; // how much space to put between elements
 | 
						|
 | 
						|
        int mPadding; // outer padding
 | 
						|
 | 
						|
        bool mAutoResize; // auto resize the box so that it exactly fits all elements
 | 
						|
    };
 | 
						|
 | 
						|
    class Spacer : public AutoSizedWidget, public MyGUI::Widget
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( Spacer )
 | 
						|
    public:
 | 
						|
        Spacer();
 | 
						|
 | 
						|
        MyGUI::IntSize getRequestedSize() override { return MyGUI::IntSize(0,0); }
 | 
						|
    };
 | 
						|
 | 
						|
    class HBox : public Box, public MyGUI::Widget
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( HBox )
 | 
						|
 | 
						|
    public:
 | 
						|
        void setSize (const MyGUI::IntSize &_value) override;
 | 
						|
        void setCoord (const MyGUI::IntCoord &_value) override;
 | 
						|
 | 
						|
    protected:
 | 
						|
        void initialiseOverride() override;
 | 
						|
 | 
						|
        void align() override;
 | 
						|
        MyGUI::IntSize getRequestedSize() override;
 | 
						|
 | 
						|
        void setPropertyOverride(const std::string& _key, const std::string& _value) override;
 | 
						|
 | 
						|
        void onWidgetCreated(MyGUI::Widget* _widget) override;
 | 
						|
    };
 | 
						|
 | 
						|
    class VBox : public Box, public MyGUI::Widget
 | 
						|
    {
 | 
						|
        MYGUI_RTTI_DERIVED( VBox)
 | 
						|
 | 
						|
    public:
 | 
						|
        void setSize (const MyGUI::IntSize &_value) override;
 | 
						|
        void setCoord (const MyGUI::IntCoord &_value) override;
 | 
						|
 | 
						|
    protected:
 | 
						|
        void initialiseOverride() override;
 | 
						|
 | 
						|
        void align() override;
 | 
						|
        MyGUI::IntSize getRequestedSize() override;
 | 
						|
 | 
						|
        void setPropertyOverride(const std::string& _key, const std::string& _value) override;
 | 
						|
 | 
						|
        void onWidgetCreated(MyGUI::Widget* _widget) override;
 | 
						|
    };
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
#endif
 |