summaryrefslogtreecommitdiff
path: root/osframework/source/SexyAppFramework/WidgetContainer.h
diff options
context:
space:
mode:
Diffstat (limited to 'osframework/source/SexyAppFramework/WidgetContainer.h')
-rw-r--r--osframework/source/SexyAppFramework/WidgetContainer.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/osframework/source/SexyAppFramework/WidgetContainer.h b/osframework/source/SexyAppFramework/WidgetContainer.h
new file mode 100644
index 0000000..d587f15
--- /dev/null
+++ b/osframework/source/SexyAppFramework/WidgetContainer.h
@@ -0,0 +1,87 @@
+#ifndef __WIDGETCONTAINER_H__
+#define __WIDGETCONTAINER_H__
+
+#include "Common.h"
+#include "Rect.h"
+#include "Flags.h"
+
+namespace Sexy
+{
+
+class Graphics;
+class Widget;
+class WidgetManager;
+
+typedef std::list<Widget*> WidgetList;
+
+
+class WidgetContainer
+{
+public:
+ WidgetList mWidgets;
+ WidgetManager* mWidgetManager;
+ WidgetContainer* mParent;
+
+ bool mUpdateIteratorModified;
+ WidgetList::iterator mUpdateIterator;
+ ulong mLastWMUpdateCount;
+ int mUpdateCnt;
+ bool mDirty;
+ int mX;
+ int mY;
+ int mWidth;
+ int mHeight;
+ bool mHasAlpha;
+ bool mClip;
+ FlagsMod mWidgetFlagsMod;
+ int mPriority;
+ int mZOrder;
+
+public:
+ Widget* GetWidgetAtHelper(int x, int y, int theFlags, bool* found, int* theWidgetX, int* theWidgetY);
+ bool IsBelowHelper(Widget* theWidget1, Widget* theWidget2, bool* found);
+ void InsertWidgetHelper(const WidgetList::iterator &where, Widget *theWidget);
+
+public:
+ WidgetContainer();
+ virtual ~WidgetContainer();
+
+ virtual Rect GetRect();
+ virtual bool Intersects(WidgetContainer* theWidget);
+
+ virtual void AddWidget(Widget* theWidget);
+ virtual void RemoveWidget(Widget* theWidget);
+ virtual bool HasWidget(Widget* theWidget);
+ virtual void DisableWidget(Widget* theWidget);
+ virtual void RemoveAllWidgets(bool doDelete = false, bool recursive = false);
+
+ virtual void SetFocus(Widget* theWidget);
+ virtual bool IsBelow(Widget* theWidget1, Widget* theWidget2);
+ virtual void MarkAllDirty();
+ virtual void BringToFront(Widget* theWidget);
+ virtual void BringToBack(Widget* theWidget);
+ virtual void PutBehind(Widget* theWidget, Widget* theRefWidget);
+ virtual void PutInfront(Widget* theWidget, Widget* theRefWidget);
+ virtual Point GetAbsPos(); // relative to top level
+
+ virtual void MarkDirty();
+ virtual void MarkDirtyFull();
+ virtual void MarkDirtyFull(WidgetContainer* theWidget);
+ virtual void MarkDirty(WidgetContainer* theWidget);
+
+ virtual void AddedToManager(WidgetManager* theWidgetManager);
+ virtual void RemovedFromManager(WidgetManager* theWidgetManager);
+
+ virtual void Update();
+ virtual void UpdateAll(ModalFlags* theFlags);
+ virtual void UpdateF(float theFrac);
+ virtual void UpdateFAll(ModalFlags* theFlags, float theFrac);
+ virtual void Draw(Graphics* g);
+ virtual void DrawAll(ModalFlags* theFlags, Graphics* g);
+ virtual void SysColorChangedAll();
+ virtual void SysColorChanged();
+};
+
+};
+
+#endif //__WIDGETCONTAINER_H__