00001 #ifndef CSMenu_h 00002 #define CSMenu_h 00003 00004 #ifdef WIN32 00005 #pragma warning(disable : 4786 ) 00006 #endif 00007 00008 #include <vector> 00009 #include <string> 00010 00011 #include "CSPicture.h" 00012 #include "CSMessage.h" 00013 #include "CSButton.h" 00014 #include "CSGrafikElement.h" 00015 #include "CSDesktop.h" 00016 #include "CSLog.h" 00017 00018 #include "CSIcon.h" 00019 00020 class CSMenu; 00021 class CSMenuItem; 00022 class CSWindow; 00023 class CSMenuBar; 00024 typedef std::vector<CSMenu *> CSMenus; 00025 00026 class CSMenu : public CSButton 00027 { 00028 private: 00029 std::string mTitle; 00030 CSPanel *mMenuPanel; 00031 bool mMenuIsOpen; 00032 00033 protected: 00034 CSMenuBar *mMenuBar; 00035 void layoutSetupMenu(); 00036 00037 public: 00038 static const char *CLASS; 00039 virtual std::string getType() {return (std::string) CLASS;} 00040 00041 CSMenu(const std::string &menuTitle); 00042 virtual ~CSMenu(); 00043 std::string getTitle() {return mTitle;} 00044 00045 void reactOnMessageMenu(CSMessage *message); 00046 virtual void reactOnMessage(CSMessage *message); 00047 00048 virtual void layoutSetup() {layoutSetupMenu();} 00049 virtual void addMenuItem(CSMenuItem *item); 00050 virtual void removeMenuItem(CSMenuItem *item); 00051 virtual void openMenu(); 00052 virtual void closeMenu(); 00053 virtual CSMenuBar *getMenuBar(); 00054 void setMenuBar(CSMenuBar *bar); 00055 virtual int getButtonState(); 00056 }; 00057 00058 #endif // CSMenu_h