1 /*! 2 @file 3 @author Albert Semenov 4 @date 01/2009 5 */ 6 #ifndef CONTEXT_MENU_H_ 7 #define CONTEXT_MENU_H_ 8 9 #include <MyGUI.h> 10 #include <BaseLayout/BaseLayout.h> 11 12 namespace wraps 13 { 14 15 class ContextMenu : 16 public BaseLayout 17 { 18 public: ContextMenu(const std::string & _layout)19 ContextMenu(const std::string& _layout) : 20 BaseLayout(_layout, nullptr) 21 { 22 assignWidget(mMenu, "_Main"); 23 mMenu->setVisible(false); 24 mMenu->eventMenuCtrlAccept += MyGUI::newDelegate(this, &ContextMenu::notifyMenuCtrlAccept); 25 } 26 setVisible(bool _value)27 void setVisible(bool _value) 28 { 29 mMenu->setPosition(MyGUI::InputManager::getInstance().getMousePosition()); 30 mMenu->setVisibleSmooth(_value); 31 } 32 isVisible()33 bool isVisible() 34 { 35 return mMenu->getVisible(); 36 } 37 38 /** Event : Menu accept.\n 39 signature : void method(wraps::ContextMenu* _sender, const std::string& _id) 40 @param _sender 41 @param _id 42 */ 43 MyGUI::delegates::CDelegate2<ContextMenu*, const std::string&> eventMenuAccept; 44 45 private: notifyMenuCtrlAccept(MyGUI::MenuControl * _sender,MyGUI::MenuItem * _item)46 void notifyMenuCtrlAccept(MyGUI::MenuControl* _sender, MyGUI::MenuItem* _item) 47 { 48 eventMenuAccept(this, _item->getItemId()); 49 } 50 51 private: 52 MyGUI::PopupMenu* mMenu; 53 54 }; 55 56 } // namespace wraps 57 58 #endif // CONTEXT_MENU_H_ 59