1 #ifndef __OBJMENU_H 2 #define __OBJMENU_H 3 4 #include "ymenu.h" 5 #include "ymenuitem.h" 6 #include "yaction.h" 7 #include "obj.h" 8 9 class DObject; 10 11 class ObjectMenu: 12 public YMenu, 13 public ObjectContainer, 14 public YActionListener 15 { 16 public: 17 ObjectMenu(YActionListener *wmActionListener, YWindow *parent = nullptr); 18 virtual ~ObjectMenu(); 19 20 virtual void actionPerformed(YAction action, unsigned modifiers) override; 21 virtual void addObject(DObject* object) override; 22 virtual void addSeparator() override; 23 virtual void addContainer(mstring name, ref<YIcon> icon, ObjectMenu *container) override; 24 25 YMenuItem* addObject(DObject* object, const char* icon, 26 ObjectMenu* sub = nullptr, bool check = false); 27 YMenuItem* getObjectItem(DObject* object); 28 setActionListener(YActionListener * al)29 void setActionListener(YActionListener* al) override { 30 wmActionListener = al; 31 } getActionListener()32 YActionListener* getActionListener() const override { 33 return const_cast<ObjectMenu*>(this); 34 } 35 36 private: 37 struct ObjectAction { 38 DObject* object; 39 YAction action; ObjectActionObjectAction40 ObjectAction(DObject* obj, YAction act) : object(obj), action(act) { } 41 }; 42 typedef YArray<ObjectAction> ArrayType; 43 ArrayType fArray; 44 45 YActionListener* wmActionListener; 46 }; 47 48 #endif 49 50 // vim: set sw=4 ts=4 et: 51