![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVrfConditionalDialogManager.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00013 00014 #pragma once 00015 00016 #include <vrfGuiCoreQt/vrfGuiCoreQt.h> 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 00019 #include <vrvUtil/signalslib.h> 00020 00021 #include <QtCore/QObject> 00022 00023 namespace makVrv 00024 { 00025 class DtDe; 00026 class DtSimEntry; 00027 } 00028 00029 class QWidget; 00030 class DtSimCondExpr; 00031 00032 namespace makVrf 00033 { 00034 class DtConditionalDialogInterface; 00035 class DtVrfConditionalDialogCreator; 00036 class DtVrfConditionalExpressionCreator; 00037 class DtVrfConditionalDialogManager; 00038 class DtVrfConditionalAction; 00039 class DtConditionalExpressionInterface; 00040 00041 class DT_DLL_VRFGUICOREQT DtVrfConditionalDialogSignalHandler : public QObject 00042 { 00043 Q_OBJECT 00044 00045 public: 00046 DtVrfConditionalDialogSignalHandler(makVrv::DtDe&); 00047 virtual ~DtVrfConditionalDialogSignalHandler(); 00048 00049 virtual void connectDialogSignals(DtConditionalDialogInterface*); 00050 virtual void disconnectDialogSignals(QObject*); 00051 00052 virtual void connectExpressionSignals(DtConditionalExpressionInterface*); 00053 virtual void disconnectExpressionSignals(QObject*); 00054 00055 public: 00057 boost::signal<void (DtConditionalDialogInterface*)> signal_dialogDestroyed; 00058 00059 public: 00061 boost::signal<void (DtConditionalExpressionInterface*)> signal_expressionDestroyed; 00062 00063 protected slots: 00064 virtual void onDialogDestroyed(); 00065 virtual void onExpressionDestroyed(); 00066 00067 protected: 00068 makVrv::DtDe& myDe; 00069 }; 00070 00072 class DT_DLL_VRFGUICOREQT DtVrfConditionalDialogManager : public makVrv::DtVirtualBaseClass 00073 { 00074 typedef std::map<std::string, DtVrfConditionalDialogCreator*> DtVrfConditionalDialogCreatorMap; 00075 typedef std::map<std::string, DtVrfConditionalExpressionCreator*> DtVrfConditionalExpressionCreatorMap; 00076 00077 public: 00078 typedef std::pair<std::string, std::string> DtConditionalExpressionItem; 00079 typedef std::vector<DtConditionalExpressionItem> DtConditionalExpressionsList; 00080 00081 public: 00083 DtVrfConditionalDialogManager(makVrv::DtDe&); 00084 00086 virtual ~DtVrfConditionalDialogManager(); 00087 00089 static DtVrfConditionalDialogManager& instance(makVrv::DtDe& de); 00090 00091 public: 00095 virtual bool processDialogFor(const std::string& menuItemType, QWidget* parent, 00096 const std::vector<makVrv::DtSimEntry*>& data, DtVrfConditionalAction* forAction); 00097 00098 bool dialogInProgress() const 00099 { 00100 return myDialogInProgress; 00101 } 00102 00103 public: 00106 virtual void addDialogCreator(const std::string& menuItemType, DtVrfConditionalDialogCreator*); 00107 00109 virtual bool removeDialogCreator(const std::string& menuItemType); 00110 00112 virtual bool hasDialogCreator(const std::string& menuItemType) const; 00113 00115 virtual void removeAllDialogCreators(); 00116 00117 public: 00121 virtual void addConditionalExpression(const std::string& menuItemType, DtVrfConditionalExpressionCreator*); 00122 virtual void addConditionalExpressionAfter(const std::string& p, const std::string& after, DtVrfConditionalExpressionCreator* i); 00123 virtual void addConditionalExpressionBefore(const std::string& p, const std::string& before, DtVrfConditionalExpressionCreator* i); 00124 00126 virtual bool removeConditionalExpression(const std::string& menuItemType); 00127 00129 virtual bool hasConditionalExpression(const std::string& menuItemType) const; 00130 00132 virtual bool hasConditionalExpression(int type) const; 00133 00135 virtual void removeAllConditionalExpressions(); 00136 00138 virtual int expressionDisplayOrder(const std::string&) const; 00139 00142 virtual void setExpressionDisplayOrder(const std::string&, int); 00143 00145 virtual DtConditionalExpressionsList getConditionalExpressionsList() const; 00146 00148 virtual DtConditionalExpressionInterface* createExpression(const std::string& s, QWidget* parent); 00149 00151 virtual DtConditionalExpressionInterface* createExpression(int type, QWidget* parent); 00152 00154 virtual DtVrfConditionalExpressionCreator* expressionCreatorFor(const std::string& s) const; 00155 00157 virtual DtVrfConditionalExpressionCreator* expressionCreatorFor(int type) const; 00158 00160 virtual bool canEditType(int iType) const; 00161 00163 virtual DtConditionalDialogInterface* createDialog(int iType, QWidget* parent); 00164 00165 protected: 00166 virtual void slot_onDialogDestroyed(DtConditionalDialogInterface*); 00167 virtual void slot_onExpressionDestroyed(DtConditionalExpressionInterface*); 00168 00169 protected: 00172 virtual void prepDialog(DtConditionalDialogInterface*, const std::vector<makVrv::DtSimEntry*>& data, 00173 DtVrfConditionalAction* forAction); 00174 00175 virtual void addConditional(const std::string&, const std::string&, DtVrfConditionalExpressionCreator*, bool after = true); 00176 00177 public: 00179 boost::signal<void (DtConditionalDialogInterface*)> signal_dialogCreated; 00180 00182 boost::signal<void (DtConditionalDialogInterface*)> signal_dialogDestroyed; 00183 00184 public: 00186 boost::signal<void (DtConditionalExpressionInterface*)> signal_expressionCreated; 00187 00189 boost::signal<void (DtConditionalExpressionInterface*)> signal_expressionDestroyed; 00190 00191 protected: 00192 makVrv::DtDe& myDe; 00193 DtVrfConditionalDialogCreatorMap myDialogCreatorMap; 00194 DtVrfConditionalExpressionCreatorMap myExpressionCreatorMap; 00195 std::vector<std::string> myExpressionOrder; 00196 DtVrfConditionalDialogSignalHandler myConditionalDialogSignalHandler; 00197 bool myDialogInProgress; 00198 }; 00199 }