VR-Forces 4.0.4 Class Documentation
include/vrfGuiCoreQt/vrfRightClickMenu.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2012 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00007 
00008 #pragma once
00009 
00010 #include <vrfGuiCoreQt/vrfGuiCoreQt.h>
00011 #include <vrfGuiCoreQt/DtConfigurableMenu.h>
00012 #include <vrvCore/DtMenuConfiguration.h>
00013 #include <vrvCoreQt/DtQtMenuAssembler.h>
00014 #include <vrvCore/DtSelectionManager.h>
00015 
00016 namespace makVrf
00017 {
00019    typedef bool (*DtVrfRightClickContextFunc) (const makVrv::DtSelectionManager::IdSet& idSet, int selectionType, makVrv::DtDe& de);
00020 
00021    class DtVrfRightClickContextHandler;
00022   
00029    class DT_DLL_VRFGUICOREQT DtVrfRightClickMenu : DtConfigurableMenu
00030    { 
00031    public:
00033       virtual ~DtVrfRightClickMenu();
00034 
00036       static DtVrfRightClickMenu& instance(makVrv::DtDe& de);
00037 
00042       virtual DtSubMenuConfiguration& menuConfiguration();
00043 
00049       virtual void addContext(std::string contextName, DtVrfRightClickContextFunc func);
00050 
00055       virtual void removeContext(std::string contextName);
00056 
00063       virtual void setDefaultContext(std::string contextName);
00064 
00071       virtual void setCurrentContext(std::string contextName);
00072 
00075       virtual void resetContext();
00076 
00078       virtual std::string currentContext();
00079 
00081       virtual std::string defaultContext();
00082 
00087       virtual DtConfigurableMenuAssembler& menuAssembler();
00088       
00089    protected:
00091       void setupDefaultContext();
00092 
00094       DtVrfRightClickMenu(makVrv::DtDe& de);
00095 
00098       virtual QMenu* createMenu(makVrv::DtDe &,QWidget *);
00099 
00102       virtual void createMenuConfiguration(makVrv::DtDe &);
00103 
00104       DtVrfRightClickContextHandler* myAssemblerAndConfig;
00105       makVrv::DtDe& myDe;
00106       static DtVrfRightClickMenu* theInstance;
00107    }; 
00108 
00112    class DT_DLL_VRFGUICOREQT DtVrfRightClickContextHandler : 
00113       public DtSubMenuConfiguration, public DtConfigurableMenuAssembler
00114    {
00115    protected:
00116       struct DtVrfRightClickChanges;
00117 
00118    public:
00120       DtVrfRightClickContextHandler(makVrv::DtDe& de);
00121 
00123       virtual ~DtVrfRightClickContextHandler();
00124 
00126       virtual void addContext(std::string contextName, DtVrfRightClickContextFunc func);
00127 
00129       virtual void removeContext(std::string contextName);
00130 
00132       virtual void setDefaultContext(std::string contextName);
00133 
00135       virtual void setCurrentContext(std::string contextName);
00136 
00138       virtual void resetContext()
00139       {
00140          myCurrentContext = myDefaultContext;
00141       }
00142 
00144       virtual std::string currentContext()
00145       {
00146          return myCurrentContext;
00147       }
00148 
00150       virtual std::string defaultContext()
00151       {
00152          return myDefaultContext;
00153       }
00154 
00160       virtual void addMenuPath(const makVrv::DtMenuPath& path, int weight = -1);
00161 
00167       virtual void removeMenuPath(const makVrv::DtMenuPath&);
00168 
00174       virtual void addMenuPathAfter(const makVrv::DtMenuPath& newPath, const makVrv::DtMenuPath& relativeTo);
00175 
00181       virtual void addMenuPathBefore(const makVrv::DtMenuPath& newPath, const makVrv::DtMenuPath& relativeTo);
00182 
00185       virtual void registerMenu(makVrv::DtMenu* menu);
00186 
00188       virtual void unregisterMenu(makVrv::DtMenu* menu);
00189 
00192       virtual void registerItem(makVrv::DtMenuItem* item);
00193 
00195       virtual void unregisterItem(makVrv::DtMenuItem* item);
00196 
00197    protected:
00199       virtual void applyContext(std::string contextName, makVrv::DtMenuConfiguration& config);
00200 
00202       virtual void applyRegistrations(makVrv::DtQtMenuAssembler& assembler);
00203 
00206       virtual void slot_modifyRightClickMenu(makVrv::DtQtMenuAssembler&, makVrv::DtMenuConfiguration&,
00207          const makVrv::DtSelectionManager::IdSet&, int, makVrv::DtDe&);
00208 
00210       virtual void registerMenu(makVrv::DtMenuItem*);
00211 
00213       virtual void unregisterMenu(makVrv::DtMenu*, bool deleteBuilder = true);
00214 
00216       virtual void unregisterMenu(makVrv::DtMenuItem*, bool deleteBuilder = true);
00217       
00218       std::map<std::string, DtVrfRightClickContextFunc> myChangeRules;
00219    
00220       std::map<std::string, DtVrfRightClickChanges*> myChanges;
00221       std::string myDefaultContext;
00222       std::string myCurrentContext;
00223    
00224       std::vector<makVrv::DtMenu*> myUnregisterMenus;
00225       std::vector<makVrv::DtMenu*> myRegisterMenus;
00226       std::vector<makVrv::DtMenuItem*> myRegisterItems;
00227       std::vector<makVrv::DtMenuItem*> myUnregisterItems;
00228    };
00229 }

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)