![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVrfEntityMenu.h,v $ $Revision: 1.3 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00013 00014 #pragma once 00015 00016 #include <vrfGuiCoreQt/vrfGuiCoreQt.h> 00017 #include <vrfGuiCoreQt/DtSelectionEnabledMenu.h> 00018 #include <vrfGuiCore/DtGuiThreadVrfRemoteController.h> 00019 00020 #include <vrvCoreQt/DtMenuItem.h> 00021 00022 class QEvent; 00023 00024 namespace makVrf 00025 { 00026 class DtVrfBackendState; 00027 class DtVrfEntityMenu; 00028 00029 class DT_DLL_VRFGUICOREQT DtVrfEntityAction : public makVrv::DtMenuItem 00030 { 00031 Q_OBJECT 00032 00033 public: 00034 enum MatchFlags 00035 { 00036 NoOtherOptions = 0, 00037 AllObjectsAreVrfSimulated = 0x00000001, 00038 AllEditable = 0x00000002, 00039 }; 00040 00041 DtVrfEntityAction(const std::string&, makVrv::DtDe&); 00042 virtual ~DtVrfEntityAction(); 00043 00044 virtual QAction* registerEntityAction(QAction*); 00045 virtual void validate(QAction*) = 0; 00046 00048 virtual bool selectionMatchesTypes(const makVrv::DtSelectionManager::IdSet&, 00049 const std::vector<makVrv::DtElementEntry::ObjectType>&, MatchFlags flags = AllObjectsAreVrfSimulated) const; 00050 00051 protected: 00052 virtual void executeEntityAction(const makVrv::DtSelectionManager::IdSet&, 00053 const boost::function<void (std::string, DtSimulationAddress addr)>& function, 00054 DtSimulationAddress addr = DtSimSendToAll); 00055 00056 virtual void executeAggregateAction(const makVrv::DtSelectionManager::IdSet&, bool ignoreSubordinates, 00057 const boost::function<void (std::string, DtSimulationAddress addr)>& function, 00058 DtSimulationAddress addr = DtSimSendToAll); 00059 00060 virtual void slot_onValidate(QAction*); 00061 virtual void slot_backendUpdated(const DtVrfBackendState&, int, QAction*); 00062 00063 virtual void on_aboutToShow(); 00064 00065 boost::signal<void ()> signal_validateMenuItem; 00066 00067 protected slots: 00068 virtual void onActionDestroyed(); 00069 00070 protected: 00071 makVrv::DtDe& myDe; 00072 }; 00073 00074 class DT_DLL_VRFGUICOREQT DtVrfEntityMenu : public DtSelectionEnabledMenu 00075 { 00076 Q_OBJECT 00077 00078 public: 00080 DtVrfEntityMenu(const QString& title, QWidget* parent, makVrv::DtDe&); 00081 00083 virtual ~DtVrfEntityMenu(); 00084 00085 protected: 00086 virtual bool eventFilter(QObject *, QEvent *); 00087 virtual void actionAdded(QEvent*); 00088 virtual bool shouldAddAsPartOfMenu(const QList<QAction*>& acts, QAction* toMatch) const; 00089 00090 virtual void validateMenuItems(int terrainPatchOffset); 00091 00092 protected: 00093 std::vector<std::pair<DtVrfEntityAction*, QAction*> > myEntityActions; 00094 }; 00095 }