VR-Forces 4.0.4 Class Documentation
include/tmqt/contextMenu.h
Go to the documentation of this file.
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_

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)