00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef HEADER_CONSTRUO_GUI_MANAGER_HXX
00021 #define HEADER_CONSTRUO_GUI_MANAGER_HXX
00022
00023 #include <vector>
00024
00025 class GUIComponent;
00026 struct ButtonEvent;
00027
00029 class GUIManager
00030 {
00031 private:
00032 unsigned int frame_count;
00033 unsigned int start_time;
00034
00036 GUIComponent* last_component;
00037 GUIComponent* current_component;
00038
00039 GUIComponent* grabbing_component;
00040
00041 int last_x;
00042 int last_y;
00043
00045 typedef std::vector<GUIComponent*> ComponentLst;
00046 ComponentLst components;
00047
00048 void process_events ();
00049 void process_button_events (ButtonEvent&);
00050 GUIComponent* find_component_at (int, int);
00051 public:
00052 GUIManager ();
00053 virtual ~GUIManager ();
00054
00056 virtual void run_once ();
00057
00059 void draw ();
00060 virtual void update() {}
00061
00062 virtual void draw_overlay () {}
00063
00065 void quit();
00066
00069 void add (GUIComponent*);
00070
00071 void grab_mouse (GUIComponent*);
00072 void ungrab_mouse (GUIComponent*);
00073 };
00074
00075 #endif
00076
00077