00001
00002
00003
00004
00005 #ifndef GUIMGR_H
00006 #define GUIMGR_H
00007
00008 #include "gui/SubMenu.h"
00009 #include "gui/PrintControl.h"
00010 #include "gui/DisplayControl.h"
00011 #include "gui/GUI.h"
00012
00013 #include <vector>
00014 #include <iostream>
00015
00016 namespace gui {
00017
00022 class GuiMgr {
00023 public:
00024
00029 GuiMgr( float size=2000, int initial_view=1, int pause_interval=-1 );
00030
00031 ~GuiMgr();
00032
00034 void begin_event();
00035
00037 void end_event();
00038
00043 void break_point(const std::string& title_bar_text = "[user pause]");
00044
00046 bool done() const;
00047
00048
00050 static GuiMgr* instance();
00051
00053 GUI& gui()const;
00054
00056 DisplayControl& display()const;
00057
00059 PrintControl& printer()const;
00060
00062 Menu& menu()const;
00063
00065 SubMenu& subMenu()const;
00066
00068 float size()const;
00069
00070
00071 void quit();
00072 void finishSetup(){};
00073
00074
00075
00076 void pause();
00077 void resume();
00078 void stop_loop();
00079 void queryPause();
00080 enum State {INITIAL, RUNNING, PAUSED, DONE};
00081 State state()const;
00082 void setState(State s);
00083
00084 private:
00085
00086 GUI* m_gui;
00087 Menu* m_menu;
00088 DisplayControl* m_display;
00089 PrintControl* m_print;
00090 float m_size;
00091 SubMenu* m_sub_menu;
00092 int m_pause_interval;
00093 State m_state;
00094 void setup(float size, int initial_view, int pause_interval);
00095 static GuiMgr* s_instance;
00096 };
00097
00098
00099 inline float GuiMgr::size()const {return m_size;}
00100 inline GUI& GuiMgr::gui()const {return *m_gui; }
00101 inline DisplayControl& GuiMgr::display()const{return *m_display;}
00102 inline PrintControl& GuiMgr::printer()const{return *m_print;}
00103 inline Menu& GuiMgr::menu()const {return *m_menu;}
00104 inline SubMenu& GuiMgr::subMenu()const{return *m_sub_menu;}
00105 inline bool GuiMgr::done()const {return m_state==DONE;}
00106 inline gui::GuiMgr::State GuiMgr::state()const {return m_state;}
00107 inline void GuiMgr::setState(gui::GuiMgr::State state) {m_state=state;}
00108
00109
00110
00111
00112 inline GuiMgr::GuiMgr( float size, int initial_view, int pause_interval)
00113 :m_gui(GUI::createGUI("GuiMgr", "GuiMgr"))
00114 {
00115 setup(size,initial_view,pause_interval);
00116 }
00117 }
00118
00119
00120 #endif
00121