![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: contextMenu.h,v $ $Revision: 1.13 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef CONTEXTMENU_H_ 00013 #define CONTEXTMENU_H_ 00014 00015 #include <QtGui/QMenu> 00016 #include <QtGui/QAction> 00017 00018 #include "vrfGuiCore/menuItems.h" 00019 #include "tmqt/eventSignaller.h" 00020 00021 class DtBaseWindow; 00022 class DtMenuWidget; 00023 const int DtItemIsMenu = 0x80000000; 00024 00030 #include "tmqt/tmqtDefines.h" 00031 class DT_DLL_tmqt DtContextItems 00032 { 00033 public: 00034 DtContextItems() : myInternalId(-1) {}; 00035 DtContextItems(const DtContextItems& orig) : 00036 myMenuName(orig.myMenuName), myAccel(orig.myAccel), myMenuType(orig.myMenuType), 00037 myMenuItem(orig.myMenuItem), myActionGroupType(orig.myActionGroupType), 00038 myAddSeparator(orig.myAddSeparator), myCreateMenu(orig.myCreateMenu), 00039 myCreateItem(orig.myCreateItem), myItem(orig.myItem), mySlot(orig.mySlot), myInternalId(orig.myInternalId) 00040 {}; 00041 00042 QString myMenuName; 00043 QString myAccel; 00044 DtMainMenuType myMenuType; 00045 DtMenuItemType myMenuItem; 00046 DtMenuItemType myActionGroupType; 00047 bool myAddSeparator; 00048 bool myCreateMenu; 00049 bool myCreateItem; 00050 QObject *myItem; 00051 const char *mySlot; 00052 int myInternalId; 00053 }; 00054 00056 class DT_DLL_tmqt DtContextMenu : public QMenu 00057 { 00058 Q_OBJECT 00059 00060 public: 00062 DtContextMenu(QWidget* parent); 00063 00065 virtual ~DtContextMenu(); 00066 00067 virtual void setOwner(DtBaseWindow*); 00068 virtual DtBaseWindow* owner() const; 00069 00070 virtual void setMenuWidget(DtMenuWidget* menuWidget); 00071 00072 public: 00075 virtual void addMenuActionGroup(DtMainMenuType iType, DtMenuItemType iActionGroup, 00076 bool addSeparator = false, DtMenuItemType iBeforeType = DtNoMenuItem, DtMenuItemType iAfterType = DtNoMenuItem); 00077 00078 virtual void addMenu(QString menuName, DtMainMenuType iType, bool addSeparator = false, 00079 DtMenuItemType iBeforeType = DtNoMenuItem, DtMenuItemType iAfterType = DtNoMenuItem); 00080 00081 virtual void addMenuItem(DtMenuItemType iType, bool addSeparator = false, 00082 DtMenuItemType iBeforeType = DtNoMenuItem, DtMenuItemType iAfterType = DtNoMenuItem); 00083 00084 virtual void addMenuForGroup(QString menuName, DtMainMenuType iType, DtMenuItemType iGroup, bool addSeparator, 00085 DtMenuItemType iBeforeType = DtNoMenuItem, DtMenuItemType iAfterType = DtNoMenuItem); 00086 00088 virtual void addSeparator(DtMenuItemType iBeforeType = DtNoMenuItem, DtMenuItemType iAfterType = DtNoMenuItem); 00089 00092 virtual void removeOccurancesOf(DtMenuItemType iType, DtMenuItemType iActionGroup = DtNoMenuItem); 00093 00095 virtual void removeItem(const QString& name); 00096 00099 virtual int addMenuItem(QString itemName, QObject* slotObj, const char* slot, 00100 QString accel = QString::null, bool addSeparator = false, 00101 DtMenuItemType iBeforeType = DtNoMenuItem, 00102 DtMenuItemType iAfterType = DtNoMenuItem); 00103 00105 virtual void cleanup(); 00106 00107 public slots: 00109 virtual bool createMenu(); 00110 00111 protected: 00113 virtual void addMenuItems(); 00114 00116 virtual bool exists(const DtContextItems& item); 00117 00119 virtual void addContextItem(DtContextItems& item, DtMenuItemType iBeforeType = DtNoMenuItem, 00120 DtMenuItemType iAfterType = DtNoMenuItem); 00121 00123 virtual void insertBefore(DtContextItems& item, DtMenuItemType iType); 00124 00126 virtual void insertAfter(DtContextItems& item, DtMenuItemType iType); 00127 00129 virtual const char* eventMenuContext() const { return DtContextMenuEvent; }; 00130 00131 virtual DtMenuItemType uniqueId() const; 00133 virtual bool matchesName(QString lhs, QString rhs) const; 00134 00136 virtual void addedMenuItem(QObject*, const DtContextItems&); 00137 00138 public: 00139 static DtContextMenu* create(QWidget* parent); 00140 00141 protected: 00142 DtBaseWindow* myOwner; 00143 QList<DtContextItems> myContextItems; 00144 QList<QObject*> myAllocatedItems; 00145 DtMenuWidget* myMenuWidget; 00146 int myInternalIdCount; 00147 }; 00148 00149 #endif //CONTEXTMENU_H_