![]() |
VR-Forces 4.0.4 Class Documentation
|
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 }