00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef _SUBDIVIDING_MENU_H_
00017 #define _SUBDIVIDING_MENU_H_
00018
00019 #include <QMenu>
00020
00021 #include <QString>
00022 #include <set>
00023 #include <map>
00024
00037 class SubdividingMenu : public QMenu
00038 {
00039 Q_OBJECT
00040
00041 public:
00042 SubdividingMenu(size_t lowerLimit = 0, size_t upperLimit = 0,
00043 QWidget *parent = 0);
00044 SubdividingMenu(const QString &title, size_t lowerLimit = 0,
00045 size_t upperLimit = 0, QWidget *parent = 0);
00046 virtual ~SubdividingMenu();
00047
00048 void setEntries(const std::set<QString> &entries);
00049 void entriesAdded();
00050
00051
00052
00053
00054
00055
00056
00057 virtual void addAction(QAction *);
00058 virtual QAction *addAction(const QString &);
00059 virtual void addAction(const QString &entry, QAction *);
00060
00061 virtual void addMenu(QMenu *);
00062 virtual QMenu *addMenu(const QString &);
00063 virtual void addMenu(const QString &entry, QMenu *);
00064
00065 protected:
00066 std::map<QString, QMenu *> m_nameToChunkMenuMap;
00067
00068 size_t m_lowerLimit;
00069 size_t m_upperLimit;
00070
00071 bool m_entriesSet;
00072 std::map<QString, QObject *> m_pendingEntries;
00073 };
00074
00075 #endif
00076