![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtDriverManager.h,v $ $Revision: 1.38 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtDriverManager_H_ 00014 #define DtDriverManager_H_ 00015 00016 #include <vrvCore/vrvCore.h> 00017 00018 #include <vrvUtil/DtVirtualBaseClass.h> 00019 #include <boost/signals.hpp> 00020 00021 #include <vector> 00022 00023 namespace makVrv 00024 { 00025 class DtDe; 00026 class DtInputDriver; 00027 class DtMessage; 00028 class DtSceneDriver; 00029 class DtDriver; 00030 class DtDriverManager; 00031 class DtDriverManagerSignaler; 00032 00035 class DT_DLL_VRVCORE DtDriverManager 00036 { 00037 public: 00038 00040 typedef std::vector<DtDriver*> Drivers; 00041 00043 DtDriverManager(DtDe& de); 00044 00046 ~DtDriverManager(); 00047 00050 void tick(); 00051 00056 void addDriver(DtDriver* driver); 00057 00059 void startDriver(DtDriver* driver); 00060 00062 void stopDriver(DtDriver* driver); 00063 00066 void destroyDriver(DtDriver* driver); 00067 00069 void renameDriver( DtDriver* driver, const std::string& newName); 00070 00072 DtDriver* findDriver(const std::string& name); 00073 00075 00076 Drivers& drivers(); 00077 const Drivers& drivers() const; 00079 00081 DtSceneDriver& sceneDriver(); 00082 00084 DtInputDriver& inputDriver(); 00085 00087 inline DtDe& de() 00088 { 00089 return myDe; 00090 } 00091 00092 //@name Signals 00094 boost::signal<void (DtDriver&)> signal_driverAdded; 00095 boost::signal<void (DtDriver&)> signal_driverToBeDestroyed; 00096 boost::signal<void (DtDriver&)> signal_driverStarted; 00097 boost::signal<void (DtDriver&)> signal_driverStopped; 00098 00099 boost::signal<void (const std::string&)> signal_autoDriverChanged; 00100 00102 00104 void saveDriverToFile(const DtDriver& driver) const; 00105 00107 void deleteDriverFile(const DtDriver& driver) const; 00108 00110 std::string createDriverFileName(const DtDriver& driver) const; 00111 00113 void saveAutoDriver(); 00114 00116 void loadAutoDriversFromFile(bool errorIfNotFound); 00117 00119 void autoStartDrivers(); 00120 00122 void setAutoDriver(const std::string& driver, bool saveToFile); 00123 00124 const std::string& autoDriver() const; 00125 00127 void startDrivers( const std::vector<std::string>& drivers); 00128 00130 void autoLoadDrivers(); 00131 00133 void saveDrivers(); 00134 00136 void loadDriver(const std::string& filename); 00137 00138 protected: 00139 00141 void startWindowDependendDrivers(); 00142 00144 void stopWindowDependentDrivers(); 00145 00148 void onViewCreated(); 00149 void onViewToBeDestroyed(); 00150 00151 protected: 00152 00153 DtDe& myDe; 00154 bool myAllowDriversFlag; 00155 Drivers myDrivers; 00156 Drivers myActiveDrivers; 00157 DtSceneDriver* mySceneDriver; 00158 DtInputDriver* myInputDriver; 00159 DtDriverManagerSignaler& mySignaler; 00160 std::string myAutoDriver; 00161 bool myAutoStartDrivers; 00162 bool myInvalidToAddFlag; 00163 00164 }; 00165 00168 class DT_DLL_VRVCORE DtDriverManagerSignaler : public DtVirtualBaseClass 00169 { 00170 public: 00172 static DtDriverManagerSignaler& instance(DtDe& anIG); 00173 00175 virtual ~DtDriverManagerSignaler(); 00176 00177 protected: 00178 DtDriverManagerSignaler(); 00179 00180 }; 00181 00182 } 00183 00184 #endif