MenuManager.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef GUI_MENUMANAGER_H
00025 #define GUI_MENUMANAGER_H
00026
00027 #include <string>
00028 #include <QStringList>
00029
00030 class QAction;
00031 class QMenu;
00032
00033 namespace Gui {
00034
00035 class MainWindow;
00036
00037 class GuiExport MenuItem
00038 {
00039 public:
00040 MenuItem();
00041 MenuItem(MenuItem*);
00042 ~MenuItem();
00043
00044 void setCommand(const std::string&);
00045 std::string command() const;
00046
00047 bool hasItems() const;
00048 MenuItem* findItem(const std::string&);
00049 MenuItem* copy() const;
00050 uint count() const;
00051
00052 void appendItem(MenuItem*);
00053 bool insertItem(MenuItem*, MenuItem*);
00054 void removeItem(MenuItem*);
00055 void clear();
00056
00057 MenuItem& operator << (MenuItem* item);
00058 MenuItem& operator << (const std::string& command);
00059 QList<MenuItem*> getItems() const;
00060
00061 private:
00062 std::string _name;
00063 QList<MenuItem*> _items;
00064 };
00065
00073 class GuiExport MenuManager
00074 {
00075 public:
00077 void setup(MenuItem*) const;
00079 void setupContextMenu(MenuItem* item, QMenu &menu) const;
00080 void retranslate() const;
00081
00083 static MenuManager* getInstance();
00084 static void destruct();
00085
00086 protected:
00087 MenuManager();
00088 ~MenuManager();
00089
00090 private:
00091 void setup(MenuItem*, QMenu*) const;
00092 void retranslate(QMenu*) const;
00093 QAction* findAction(const QList<QAction*>&, const QString&) const;
00094 QList<QAction*> findActions(const QList<QAction*>&, const QString&) const;
00095
00096 private:
00097 static MenuManager* _instance;
00098
00099 friend class MainWindow;
00100 };
00101
00102 }
00103
00104
00105 #endif // GUI_MENUMANAGER_H