![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00008 00011 00012 #pragma once 00013 00014 #include <vrfGuiCore/vrfGuiCore.h> 00015 00016 #include <vrvCore/DtPluginManager.h> 00017 #include <vrfutil/vrfPluginRecordManager.h> 00018 #include <vrvUtil/DtVirtualBaseClass.h> 00019 #include <vrvUtil/signalslib.h> 00020 00021 #include <vrfmsgs/ifPluginData.h> 00022 00023 namespace makVrv 00024 { 00025 class DtDe; 00026 class DtVrvApplicationConfiguration; 00027 } 00028 00029 class DtSimMessage; 00030 class DtSimulationAddress; 00031 class DtIfPluginData; 00032 class DtDynamicLibrary; 00033 00034 namespace makVrf 00035 { 00036 class DtVrfBackendState; 00037 00040 00041 class DT_DLL_VRFGUICORE DtVrfGuiPluginManagerExt : public makVrv::DtPluginManager 00042 { 00043 public: 00044 DtVrfGuiPluginManagerExt(makVrv::DtDe&); 00045 00046 virtual ~DtVrfGuiPluginManagerExt(); 00047 00050 virtual void initializePluginsInOrder(); 00051 00052 makVrv::DtLibraryLoader* libraryLoader() 00053 { 00054 return myLibraryLoader; 00055 } 00056 00057 }; 00058 00059 class DT_DLL_VRFGUICORE DtVrfGuiPluginManager : public DtVrfPluginRecordManager, 00060 public makVrv::DtVirtualBaseClass 00061 { 00062 public: 00063 typedef std::vector<DtVrfMessagePluginInformation> PluginInformationList; 00064 typedef std::map<std::string, PluginInformationList> PluginInformationMap; 00065 00066 public: 00067 DtVrfGuiPluginManager(makVrv::DtDe&); 00068 virtual ~DtVrfGuiPluginManager(); 00069 00071 static DtVrfGuiPluginManager& instance(makVrv::DtDe& de); 00072 00074 virtual void readPluginsFrom(makVrv::DtVrvApplicationConfiguration& config); 00075 00076 virtual const std::vector<std::string>& additionalPluginsToLoad(); 00077 virtual void setAdditionalPluginsToLoad(const std::vector<std::string>&); 00078 00079 virtual bool loadDefaultPlugins(); 00080 virtual void setLoadDefaultPlugins(bool); 00081 00082 virtual void setPluginsDirectory(const std::string&); 00083 virtual const std::string& pluginsDirectory() const; 00084 00085 virtual void addPluginRecord(const DtVrfPluginRecord&); 00086 00088 virtual bool removePluginRecord(const std::string&); 00089 00092 virtual bool renamePluginRecord(const std::string& curFileName, const std::string& newName); 00093 00096 virtual bool removePlugin(const std::string& fileName, const std::string& application, 00097 const std::string& platform, const std::string& configuration, const std::string& transport); 00098 00100 virtual bool addPlugin(const std::string& fileName, const std::string& application, 00101 const std::string& platform, const std::string& configuration, const std::string& transport); 00102 00104 virtual void setLoadPlugin(const std::string& fileName, bool b); 00105 00107 const PluginInformationMap& loadedPlugins() const; 00108 00109 void setVrvPluginManager(makVrv::DtPluginManager* m) 00110 { 00111 myVrvPluginManager = m; 00112 } 00113 00115 void setCheckPluginVersions(bool); 00116 bool checkPluginVersions() const; 00117 00118 public: 00119 boost::signal<void (const DtVrfPluginRecord&)> signal_pluginRecordAdded; 00120 boost::signal<void (const DtVrfPluginRecord&)> signal_pluginRecordRemoved; 00121 boost::signal<void (const std::string&, const std::string&)> signal_pluginRecordRenamed; 00122 boost::signal<void (const std::string&, const std::string&, 00123 const std::string&, const std::string&, const std::string&)> signal_pluginRemoved; 00124 boost::signal<void (const std::string&, const std::string&, 00125 const std::string&, const std::string&, const std::string&)> signal_pluginAdded; 00126 boost::signal<void (const std::string&, bool)> signal_pluginLoadStateChanged; 00127 00128 boost::signal<void (const std::string&, const PluginInformationList&)> signal_pluginsAdded; 00129 boost::signal<void (const std::string&, const PluginInformationList&)> signal_pluginsRemoved; 00130 00131 protected: 00133 virtual void initializePlugins(); 00134 virtual void initializeFrontEndPlugins(); 00135 virtual void initializeBackEndPlugins(); 00136 00137 virtual void slot_backendDiscovered(const DtVrfBackendState&); 00138 virtual void slot_backendRemoved(const DtVrfBackendState&); 00139 virtual void slot_allBackendsAboutToBeRemoved(); 00140 00141 virtual void processPluginData(DtSimMessage*); 00142 virtual void removePendingRequest(const DtVrfBackendState&); 00143 00144 virtual bool checkVersion(DtDynamicLibrary* lib, const std::string& appVer) const; 00145 00147 virtual std::string pluginVersion() const; 00148 00149 protected: 00150 std::vector<std::string> myAdditionalPluginsToLoad; 00151 00152 bool myLoadDefaultPlugins; 00153 bool myCheckPluginVersions; 00154 std::string myPluginsDirectory; 00155 makVrv::DtDe& myDe; 00156 00157 std::vector<std::string> myPendingPluginRequests; 00158 00159 PluginInformationMap myPlugins; 00160 00161 makVrv::DtPluginManager* myVrvPluginManager; 00162 }; 00163 }