VR-Forces 4.0.4 Class Documentation
include/commonWgt/menuWidget.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2009 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: menuWidget.h,v $ $Revision: 1.29 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef QTMENUWIDGET_H
00013 #define QTMENUWIDGET_H
00014 
00015 #include <QtGui/QMenuBar>
00016 
00017 #include "commonWgt/commonWgtDefines.h"
00018 #include "commonWgt/popupMenu.h"
00019 
00020 #include "ngutil/dtqlist.h"
00021 #include <QtCore/QHash>
00022 
00023 class DtFeatureActionManager;
00024 
00027 
00028 const int DtAfterMenu         = 0x80000000;
00029 const int DtSwapMenu          = 0x40000000;
00030 const int DtReconfigureMenu   = 0x20000000;
00031 const int DtByPosition        = 0x10000000;
00032 
00038 
00039 class DT_DLL_commonWgt DtGlobalChange
00040 {
00041 public:
00042    virtual bool operator==(const DtGlobalChange&) const;
00043 
00044 public:
00045    DtMainMenuType          myPos;
00046    DtMainMenuType          myType;
00047    DtMainMenuType          myReplace;
00048    QList<DtMenuItemType>   myKeepOnlyItems;
00049    DtPopupMenuCreatorFcn   myFcn;
00050 };
00051 
00052 class DT_DLL_commonWgt DtPopupCreator
00053 {
00054 public:
00055    DtPopupCreator(DtPopupMenuCreatorFcn fcn) : myFcn(fcn) {};
00056    DtPopupCreator(const DtPopupCreator& orig) : myFcn(orig.myFcn) {};
00057 
00058    DtPopupMenuCreatorFcn myFcn;
00059 };
00060 
00061 class DT_DLL_commonWgt DtMenuWidget : public QMenuBar
00062 {
00063    Q_OBJECT
00064 
00065 public:
00066   
00067    DtMenuWidget(QWidget* parent = NULL);
00068 
00069    virtual ~DtMenuWidget();
00070 
00071    virtual bool init(DtFeatureActionManager*);
00072    virtual bool createMenuSystem();
00073 
00076    virtual DtMenuItemType typeFromAction(QAction* action);
00077 
00079    virtual DtPopupMenu* menuFromAction(QAction*);
00080 
00082    virtual QAction* menuItemForType(DtMenuItemType iType);
00083 
00085    virtual DtPopupMenu* menuForType(DtMainMenuType iType);
00086 
00088    virtual DtPopupMenu* menuThatHasMenuType(DtMenuItemType iType);
00089 
00091    virtual DtPopupMenu* menuThatHasActionGroupType(DtMenuItemType iType);
00092 
00095    virtual DtPopupMenu* createMenuOfType(DtMainMenuType iType, QWidget* owner);
00096 
00100    virtual DtPopupMenu* initializeMenuOfType(DtMainMenuType iType, QWidget* owner);
00101 
00104    virtual bool createMenu(DtPopupMenu* newMenu);
00105 
00107    virtual void updateMenuItems();
00108 
00111    virtual DtPopupMenu* menuWithName(const QString&);
00112 
00114    virtual DtMenuItemType uniqueId() const;
00115 
00117    virtual DtMainMenuType uniqueMenuId() const;
00118 
00122    virtual DtMainMenuType insertItem(DtPopupMenu* menu, int index = -1);
00123 
00126    virtual QAction* addMenuItem(const QString& featureName, const QString& item, 
00127       const QString& addToMenu, DtMenuItemType& retId,
00128       bool toggle = false, QObject* actionReceiver = NULL, 
00129       const char* action = NULL, QObject* validationReceiver = NULL,
00130       const char* validation = NULL, const QString& tooltip = QString::null, 
00131       const QString& accelerator = QString::null, bool addSep = false);
00132 
00134    virtual void appendMenuValidator(const QString& menuName, const QString& itemName,
00135       QObject* validatorReceiver, char* validator);
00136 
00139    virtual bool removeMenuItem(const QString& item);
00140 
00143    virtual bool removeMenuGroup(const QString& group);
00144 
00147    virtual void recreateMenu(DtMainMenuType menu, bool useBaseMenuIfExists = true);
00148 
00150    DtFeatureActionManager* featureActionManager() const;
00151    void setFeatureActionManager(DtFeatureActionManager*);
00152 
00154    virtual DtPopupMenu* menuAt(int iPos);
00155 
00158    virtual QString menuTextForAction(QAction*);
00159 
00160 public:
00166    virtual int insertPopupMenu(DtMainMenuType iType, DtPopupMenuCreatorFcn fcn, DtMainMenuType iPos = DtNoMenu);
00167 
00170    virtual int replacePopupMenu(DtMainMenuType iType, DtPopupMenuCreatorFcn with);
00171 
00175    virtual bool removePopupMenu(DtMainMenuType iType, bool permenant = true);
00176 
00180    virtual DtPopupMenu* restoreMenu(DtMainMenuType type);
00181 
00183    virtual void removeMenuAtPosition(int iPos, bool freeMemory = false);
00184 
00186    virtual QHash<DtMainMenuType, DtPopupMenu*>& popupMenus();
00187 
00189    virtual void swapMenus(DtMainMenuType iA, DtMainMenuType iB);
00190 
00191 public:
00193 
00196    static void globalInsertPopupMenu(DtMainMenuType iType, DtPopupMenuCreatorFcn fcn, DtMainMenuType iAfterType = DtNoMenu);
00197 
00199    static void globalReplacePopupMenu(DtMainMenuType iType, DtPopupMenuCreatorFcn with);
00200 
00202    static void globalRemovePopupMenu(DtMainMenuType iType);
00203 
00205    static void globalSwapMenuPositions(DtMainMenuType iA, DtMainMenuType iB);
00206 
00211    static void globalCreateOnlyItemsForMenu(DtMainMenuType iType, QList<DtMenuItemType> menuItems);
00212 
00213 public:
00215    static DtMenuWidget* create(QWidget* parent = NULL);
00216 
00217 protected:
00220    virtual void modifyLocalMenuWithGlobalChanges();
00221 
00223    virtual DtPopupMenu* createMenu(DtPopupMenuCreatorFcn fcn, DtMainMenuType iType, int iPos = -1, bool initializeOnly = false,
00224       DtPopupMenu* menuBase = NULL);
00225 
00227    virtual int positionOfCreator(DtPopupMenuCreatorFcn fcn);
00228    virtual int positionOfCreator(DtMainMenuType iType);
00229 
00231    virtual DtMainMenuType typeForCreator(DtPopupMenuCreatorFcn fcn);
00232 
00234    virtual void removeOrderedCreator(int iPos);
00235 
00237    virtual void insertOrderedCreator(DtPopupMenuCreatorFcn, int iPos);
00238 
00239 signals:
00240 
00242    void validate();
00243 
00246    void menuRecreated(DtMainMenuType);
00247 
00248 public slots:
00250    virtual void validateMenuItems();
00251 
00252 protected:
00253    QList<DtPopupMenuCreatorFcn> myOrderedCreators;
00254    QHash<DtMainMenuType, DtPopupCreator> myPopupMenuCreators;
00255    QHash<DtMainMenuType, DtPopupMenu*> myPopupMenus;
00256    bool myCreated;
00257    QWidget* myOwner;
00258    bool myGloballyModified;
00259    DtFeatureActionManager* myFeatureActionManager;
00260    static QList<DtGlobalChange> myGlobalPopups;
00261 };
00262 
00263 inline DtFeatureActionManager* DtMenuWidget::featureActionManager() const
00264 {
00265    return myFeatureActionManager;
00266 }
00267 
00268 inline void DtMenuWidget::setFeatureActionManager(DtFeatureActionManager* m)
00269 {
00270    myFeatureActionManager = m;
00271 }
00272 
00273 #endif

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)