Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

GuiMgr.h

Go to the documentation of this file.
00001 //     $Id: GuiMgr.h,v 1.2 2001/01/25 23:05:25 tlindner Exp $
00002 //  Author: Toby Burnett
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     // these needed to implement MenuClient interface
00071     void quit();
00072     void finishSetup(){};  // dummy
00073 
00074 
00075     // these connected to keys, buttons
00076     void pause();  // set status to pause on next loop (or single step)
00077     void resume(); // set status to skip next loop (or resume if paused)
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 // inline trivial access functions
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 // inline the constructor to force the GUI::createGUI call into the user's 
00110 // application
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 } // namespace gui
00118 
00119 
00120 #endif
00121 

Generated at Mon Nov 26 18:18:11 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000