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