00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(_XRB_WIDGETSTACK_HPP_)
00012 #define _XRB_WIDGETSTACK_HPP_
00013
00014 #include "xrb.hpp"
00015
00016 #include "xrb_containerwidget.hpp"
00017
00018 namespace Xrb
00019 {
00020
00021 class WidgetStack : public ContainerWidget
00022 {
00023 public:
00024
00025 WidgetStack (ContainerWidget *const parent, std::string const &name = "WidgetStack")
00026 :
00027 ContainerWidget(parent, name)
00028 {
00029 DirtyContentsSizeProperties();
00030 }
00031 virtual ~WidgetStack () { }
00032
00033 virtual Bool2 ContentsMinSizeEnabled () const;
00034 virtual ScreenCoordVector2 ContentsMinSize () const;
00035 virtual Bool2 ContentsMaxSizeEnabled () const;
00036 virtual ScreenCoordVector2 ContentsMaxSize () const;
00037
00038 virtual void SetSizePropertyEnabled (
00039 SizeProperties::Property property,
00040 Uint32 component,
00041 bool value);
00042 virtual void SetSizePropertyEnabled (
00043 SizeProperties::Property property,
00044 Bool2 const &value);
00045
00046 virtual void SetSizeProperty (
00047 SizeProperties::Property property,
00048 Uint32 component,
00049 ScreenCoord value);
00050 virtual void SetSizeProperty (
00051 SizeProperties::Property property,
00052 ScreenCoordVector2 const &value);
00053
00054 virtual void SetMainWidget (Widget *main_widget)
00055 {
00056
00057 ASSERT0(false && "You can't set a main widget in a WidgetStack");
00058 }
00059
00060 virtual ScreenCoordVector2 Resize (ScreenCoordVector2 const &size);
00061 virtual void AttachChild (Widget *child);
00062 virtual void DetachChild (Widget *child);
00063
00064 protected:
00065
00066 virtual void ChildSizePropertiesChanged (Widget *child);
00067
00068 virtual void UpdateRenderBackground ();
00069
00070 private:
00071
00072
00073
00074
00075 void ResizeAndRepositionChildWidgets ();
00076
00077
00078 void DirtyContentsSizeProperties ();
00079
00080 void UpdateContentsSizeProperties () const;
00081
00082
00083 mutable bool m_contents_size_properties_need_update;
00084 mutable SizeProperties m_contents_size_properties;
00085 };
00086
00087 }
00088
00089 #endif // !defined(_XRB_WIDGETSTACK_HPP_)