00001 00002 // Name: ax_menu_modal.h 00003 // Purpose: Modal menu class 00004 // Author: Julian Smart 00005 // Modified by: 00006 // Created: 2009-03-20 00007 // RCS-ID: 00008 // Copyright: (c) Julian Smart 00009 // Licence: New BSD License 00011 00012 #ifndef _AX_MENU_MODAL_H_ 00013 #define _AX_MENU_MODAL_H_ 00014 00015 /* 00016 * Includes 00017 */ 00018 00019 #include "ax/ax_menu.h" 00020 00021 /* 00022 * Forward declarations 00023 */ 00024 00025 class AxResource; 00026 class AxMenuController; 00027 class wxEventLoop; 00028 00038 class AxModalMenu: public wxEvtHandler 00039 { 00040 DECLARE_CLASS( AxModalMenu ) 00041 00042 public: 00043 // Constructors 00044 00045 AxModalMenu() { Init(); } 00046 AxModalMenu(AxMenuController* controller, AxMenuItem* item = NULL); 00047 00048 ~AxModalMenu(); 00049 00050 // Operations 00051 00052 void Init(); 00053 00056 virtual wxString ShowModal(AxMenu* childMenu = NULL); 00057 00059 virtual bool EndModal(const wxString& returnCode); 00060 00062 virtual bool Hide(); 00063 00064 AxMenuItem* GetMenuItem() const { return m_menuItem; } 00065 void SetMenuItem(AxMenuItem* item) { m_menuItem = item; } 00066 00067 AxMenuController* GetController() const { return m_controller; } 00068 void SetController(AxMenuController* controller) { m_controller = controller; } 00069 00070 const wxString& GetReturnCode() const { return m_returnCode; } 00071 void SetReturnCode(const wxString& code) { m_returnCode = code; } 00072 00073 bool IsModal() const { return m_modalShowing; } 00074 void SetModal(bool modal) { m_modalShowing = modal; } 00075 00076 void SetPreviousMenu(AxMenu* menu) { m_previousMenu = menu; } 00077 AxMenu* GetPreviousMenu() const { return m_previousMenu; } 00078 00079 void SetMenu(AxMenu* menu) { m_menu = menu; } 00080 AxMenu* GetMenu() const { return m_menu; } 00081 00082 bool RestorePreviousMenu(); 00083 00084 protected: 00085 AxMenuItem* m_menuItem; 00086 AxMenuController* m_controller; 00087 wxString m_returnCode; 00088 wxEventLoop* m_eventLoop; 00089 bool m_modalShowing; 00090 AxMenu* m_menu; 00091 AxMenu* m_previousMenu; 00092 }; 00093 00094 #endif 00095 // _AX_MENU_MODAL_H_