![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00008 00010 00011 #pragma once 00012 00013 #include <vrvUtil/signalslib.h> 00014 #include <vrfGuiCoreQt/vrfGuiCoreQt.h> 00015 #include <vrfGuiCoreQt/DtConfigurableMenu.h> 00016 00017 #include <vrvCore/DtSelectionManager.h> 00018 00019 #include <QtGui/QMenu> 00020 00021 class QEvent; 00022 class DtSimStatement; 00023 00024 namespace makVrf 00025 { 00026 class DtVrfConditionalExpressionCreator; 00027 class DtVrfConditionalAction; 00028 00029 class DT_DLL_VRFGUICOREQT DtVrfConditionalMenu : public QMenu 00030 { 00031 public: 00032 DtVrfConditionalMenu(makVrv::DtDe& de, const QString& title, QWidget* parent); 00033 00034 virtual ~DtVrfConditionalMenu(); 00035 00036 boost::signal<void (const DtSimStatement&)> signal_addConditional; 00037 00038 void setEntitySet(const makVrv::DtSelectionManager::IdSet& i) 00039 { 00040 myEntitySet = i; 00041 } 00042 00043 const makVrv::DtSelectionManager::IdSet& entitySet() const 00044 { 00045 return myEntitySet; 00046 } 00047 00048 protected: 00049 virtual void slot_onConditionComplete(const DtSimStatement&); 00050 00051 protected: 00052 virtual bool eventFilter(QObject *, QEvent *); 00053 virtual void actionAdded(QEvent*); 00054 virtual bool shouldAddAsPartOfMenu(const QList<QAction*>& acts, QAction* toMatch) const; 00055 00056 protected: 00057 makVrv::DtSelectionManager::IdSet myEntitySet; 00058 std::vector<DtVrfConditionalAction*> myDisconnectFrom; 00059 makVrv::DtDe& myDe; 00060 }; 00061 00062 class DT_DLL_VRFGUICOREQT DtConditionalMenu : public DtConfigurableMenu 00063 { 00064 public: 00065 00067 DtConditionalMenu(makVrv::DtDe&); 00068 00070 virtual ~DtConditionalMenu(); 00071 00073 virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent); 00074 00075 static DtConditionalMenu& instance(makVrv::DtDe&); 00076 00080 static DtConditionalMenu* menuInstance(makVrv::DtDe&); 00081 00082 virtual DtConditionalMenu* newInstance(); 00083 00084 public: 00086 virtual void addCondition(const std::string& p, DtVrfConditionalExpressionCreator* i); 00087 virtual void addConditionAfter(const std::string& p, const std::string& after, DtVrfConditionalExpressionCreator* i); 00088 virtual void addConditionBefore(const std::string& p, const std::string& before, DtVrfConditionalExpressionCreator* i); 00089 virtual void removeCondition(const std::string& r); 00090 00091 public: 00093 virtual DtSubMenuConfiguration& menuConfiguration(); 00094 00096 virtual DtConfigurableMenuAssembler& menuAssembler(); 00097 00098 protected: 00100 virtual void createMenuConfiguration(makVrv::DtDe& de); 00101 00102 protected: 00104 static DtConfigurableMenuAssembler* theMenuAssembler; 00105 static DtSubMenuConfiguration* theMenuConfiguration; 00106 }; 00107 }