VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtDriverManager.h
Go to the documentation of this file.
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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)