/* client/entitymenu.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_CLIENT_ENTITYMENU_H__ #define __INCLUDED_CLIENT_ENTITYMENU_H__ #include "core/entity.h" #include "ui/container.h" #include "ui/label.h" #include "ui/window.h" namespace client { /// entity menu class EntityMenu : public ui::Window { public: /// create a new menu EntityMenu(ui::Widget *parent, const char * label = 0); ~EntityMenu(); /* ---- inspectors ----------------------------------------- */ /// entity the current menu was generated for inline core::Entity *generated_entity() { return menu_generated_entity; } /// the current generated menu inline const std::string & generated_menu() const { return menu_generated_menu; } /* ---- mutators ------------------------------------------- */ /// generate a menu from menu descriptions void generate(core::Entity *entity, const char *menulabel); /// clear the current menu void clear(); protected: /// resize event virtual void resize(); /// keypress event handler virtual bool on_keypress(const int key, const unsigned int modifier); private: ui::Container *menu_container; core::Entity *menu_generated_entity; std::string menu_generated_menu; }; } #endif // __INCLUDED_CLIENT_ENTITYMENU_H__