![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVrfContextMenuManager.h,v $ $Revision: 1.3 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00013 00014 #pragma once 00015 00016 #include <vrvUtil/signalslib.h> 00017 00018 #include <vrfGuiCoreQt/vrfGuiCoreQt.h> 00019 00020 #include <vrvCoreQt/DtContextMenuManager.h> 00021 #include <vrvCore/DtSelectionManager.h> 00022 #include <vrvCoreQt/DtMenu.h> 00023 00024 #include <QtCore/QObject> 00025 00026 namespace makVrv 00027 { 00028 class DtDe; 00029 class DtMenuConfiguration; 00030 class DtQtMenuAssembler; 00031 } 00032 00033 namespace makVrf 00034 { 00035 class DtVrfContextMenuAssembler; 00036 class DtVrfContextMenuConfiguration; 00037 00040 class DT_DLL_VRFGUICOREQT DtVrfRightClickContextMenu : public makVrv::DtMenu 00041 { 00042 public: 00043 00044 DtVrfRightClickContextMenu(makVrv::DtDe&); 00045 00046 virtual ~DtVrfRightClickContextMenu(); 00047 00049 virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent); 00050 00051 }; 00052 00053 class DT_DLL_VRFGUICOREQT DtVrfContextMenuQtSignalHandler : public QObject 00054 { 00055 Q_OBJECT 00056 00057 public: 00058 DtVrfContextMenuQtSignalHandler(makVrv::DtDe&); 00059 00060 virtual ~DtVrfContextMenuQtSignalHandler(); 00061 00062 protected: 00063 makVrv::DtDe& myDe; 00064 }; 00065 00066 class DT_DLL_VRFGUICOREQT DtVrfContextMenuManager : public makVrv::DtContextMenuManager 00067 { 00068 public: 00070 DtVrfContextMenuManager(makVrv::DtDe& de); 00071 00073 virtual ~DtVrfContextMenuManager(); 00074 00076 virtual void setEnabled(bool); 00077 bool enabled() const; 00078 00079 static DtVrfContextMenuManager& instance(makVrv::DtDe&); 00080 00081 boost::signal<void (makVrv::DtQtMenuAssembler& menuAssembler, 00082 makVrv::DtMenuConfiguration& menus, 00083 const makVrv::DtSelectionManager::IdSet& idSet, 00084 int selectionType, makVrv::DtDe&)> signal_contextMenuAboutToBeCreated; 00085 00086 //Signal sent when a right click happens on a VRF object that does not account for the object type. Connect to this 00087 //to create right click context menus for your specialized VRF object types 00088 boost::signal<void (makVrv::DtQtMenuAssembler& menuAssembler, 00089 makVrv::DtMenuConfiguration& menus, 00090 const makVrv::DtSelectionManager::IdSet& idSet)> signal_unhandledRightClick; 00091 00092 protected: 00093 virtual void requestSelectionContextMenu(const QPoint& p); 00094 virtual void requestTerrainContextMenu(const QPoint& p); 00095 00096 protected: 00097 virtual void createTerrainContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus); 00098 00100 virtual void createLocalContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00101 const makVrv::DtSelectionManager::IdSet&); 00102 00103 protected: 00104 virtual void createEntityContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00105 const makVrv::DtSelectionManager::IdSet&); 00106 virtual void createPropContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00107 const makVrv::DtSelectionManager::IdSet&); 00108 virtual void createSingleEntityContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00109 const makVrv::DtSelectionManager::IdSet&); 00110 virtual void createSingleVertexContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00111 const makVrv::DtSelectionManager::IdSet&); 00112 virtual void createMultipleEntityContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00113 const makVrv::DtSelectionManager::IdSet&); 00114 00115 protected: 00116 virtual void createAggregateContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00117 const makVrv::DtSelectionManager::IdSet&); 00118 virtual void createSingleAggregateContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00119 const makVrv::DtSelectionManager::IdSet&); 00120 virtual void createMultipleAggregateContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00121 const makVrv::DtSelectionManager::IdSet&); 00122 00123 protected: 00124 virtual void createEnvironmentalContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00125 const makVrv::DtSelectionManager::IdSet&); 00126 virtual void createIntervisibilityContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00127 const makVrv::DtSelectionManager::IdSet&); 00128 virtual void createSingleEnvironmentalContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00129 const makVrv::DtSelectionManager::IdSet&); 00130 virtual void createMultipleEnvironmentalContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00131 const makVrv::DtSelectionManager::IdSet&); 00132 00133 protected: 00134 virtual void createMixedContextMenu(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00135 const makVrv::DtSelectionManager::IdSet&); 00136 00137 protected: 00138 virtual void addPlanActions(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00139 const makVrv::DtSelectionManager::IdSet&); 00140 virtual void addStealthAttachActions(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00141 const makVrv::DtSelectionManager::IdSet&); 00142 virtual void addEmbarkationActions(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00143 const makVrv::DtSelectionManager::IdSet&); 00144 virtual void addObjectSettingsActions(DtVrfContextMenuAssembler&, makVrv::DtMenuConfiguration& menus, 00145 const makVrv::DtSelectionManager::IdSet&); 00146 00147 protected: 00148 DtVrfContextMenuQtSignalHandler myQtSignalHandler; 00149 bool myEnabled; 00150 }; 00151 00153 class DT_DLL_VRFGUICOREQT DtVrfContextMenuManagerCreator : public makVrv::DtContextMenuManagerCreator 00154 { 00155 public: 00157 virtual ~DtVrfContextMenuManagerCreator(); 00158 00160 virtual makVrv::DtContextMenuManager* create( makVrv::DtDe& de ); 00161 }; 00162 }