VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfGuiPluginManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
11 
12 #pragma once
13 
14 #include <vrfGuiCore/vrfGuiCore.h>
15 
19 
20 #include <vrfmsgs/ifPluginData.h>
21 #include <boost/signals2.hpp>
22 #include <boost/function.hpp>
23 
24 namespace makVrv
25 {
26  class DtDe;
27  class DtVrvApplicationConfiguration;
28  class DtVrvCommandLineProcessor;
29 }
30 
31 class DtSimMessage;
32 class DtSimulationAddress;
33 class DtIfPluginData;
34 class DtDynamicLibrary;
35 
36 namespace makVrf
37 {
38  class DtVrfBackendState;
39 
42 
44  {
45  public:
47 
48  virtual ~DtVrfGuiPluginManagerExt() override;
49 
52  virtual void initializePluginsInOrder(bool loadDefaultPlugins = true);
53 
55  {
56  return myLibraryLoader;
57  }
58 
60  virtual void initializeCommandLineArguments(bool loadDefaultPlugins, makVrv::DtVrvCommandLineProcessor*);
61 
63  virtual void initializePluginsToLoad(bool loadDefaultPlugins);
64 
67  typedef boost::function<bool (void)> VerifierFunction;
68  virtual void addLoadVerifierFunction(const DtString&, VerifierFunction f);
69 
70  protected:
71  virtual bool shouldLoadPlugin(const std::string& plugin) const;
72 
73  protected:
75  std::list<std::string> myPlugins;
76  typedef std::map<DtString, VerifierFunction> VerifierFunctions;
78  };
79 
82  {
83  public:
84  typedef std::vector<DtVrfMessagePluginInformation> PluginInformationList;
85  typedef std::map<std::string, PluginInformationList> PluginInformationMap;
86 
87  static const std::string theFrontEndPluginName;
88 
89  public:
91  virtual ~DtVrfGuiPluginManager() override;
92 
94  static DtVrfGuiPluginManager& instance(makVrv::DtDe& de);
95 
97  virtual void readPluginsFrom(makVrv::DtVrvApplicationConfiguration& config);
98 
99  virtual const std::vector<std::string>& additionalPluginsToLoad();
100  virtual void setAdditionalPluginsToLoad(const std::vector<std::string>&);
101 
102  virtual bool loadDefaultPlugins();
103  virtual void setLoadDefaultPlugins(bool);
104 
105  virtual void setPluginsDirectory(const std::string&);
106  virtual const std::string& pluginsDirectory() const;
107 
108  virtual void addPluginRecord(const DtVrfPluginRecord&) override;
109 
111  virtual bool removePluginRecord(const std::string&) override;
112 
115  virtual bool renamePluginRecord(const std::string& curFileName, const std::string& newName) override;
116 
118  virtual void initializeCommandLineArguments(makVrv::DtVrvCommandLineProcessor*, bool initializeDefaultPlugins = true);
119 
122  virtual bool removePlugin(const std::string& fileName, const std::string& application,
123  const std::string& platform, const std::string& configuration, const std::string& transport) override;
124 
126  virtual bool addPlugin(const std::string& fileName, const std::string& application, const std::string& platform,
127  const std::string& configuration, const std::string& transport) override;
128 
130  virtual void setLoadPlugin(const std::string& fileName, bool b) override;
131 
133  const PluginInformationMap& loadedPlugins() const;
134 
136  {
137  myVrvPluginManager = m;
138  }
139 
141  void setCheckPluginVersions(bool);
142  bool checkPluginVersions() const;
143 
144  public:
145  boost::signals2::signal<void (const DtVrfPluginRecord&)> signal_pluginRecordAdded;
146  boost::signals2::signal<void (const DtVrfPluginRecord&)> signal_pluginRecordRemoved;
147  boost::signals2::signal<void (const std::string&, const std::string&)> signal_pluginRecordRenamed;
148  boost::signals2::signal<void (const std::string&, const std::string&,
149  const std::string&, const std::string&, const std::string&)> signal_pluginRemoved;
150  boost::signals2::signal<void (const std::string&, const std::string&,
151  const std::string&, const std::string&, const std::string&)> signal_pluginAdded;
152  boost::signals2::signal<void (const std::string&, bool)> signal_pluginLoadStateChanged;
153 
154  boost::signals2::signal<void (const std::string&, const PluginInformationList&)> signal_pluginsAdded;
155  boost::signals2::signal<void (const std::string&, const PluginInformationList&)> signal_pluginsRemoved;
156 
157  protected:
159  virtual void initializePlugins();
160 
161  virtual void initializeFrontEndPlugins();
162  virtual void initializeBackEndPlugins();
163 
164  virtual void slot_backendDiscovered(const DtVrfBackendState&);
165  virtual void slot_backendRemoved(const DtVrfBackendState&);
166  virtual void slot_allBackendsAboutToBeRemoved();
167 
168  virtual void processPluginData(DtSimMessage*);
169  virtual void removePendingRequest(const DtVrfBackendState&);
170 
171  virtual bool checkVersion(DtDynamicLibrary* lib, const std::string& appVer) const;
172 
174  virtual std::string pluginVersion() const;
175 
178  virtual bool containsPlugin(const makVrv::DtVrvApplicationConfiguration&, const std::string&) const;
179 
180  protected:
181  std::vector<std::string> myAdditionalPluginsToLoad;
182 
185  std::string myPluginsDirectory;
187 
188  std::vector<std::string> myPendingPluginRequests;
189 
191 
193  };
194 }
Definition: vrfBackendState.h:65
makVrv::DtPluginManager * myVrvPluginManager
Definition: vrfGuiPluginManager.h:192
PluginInformationMap myPlugins
Definition: vrfGuiPluginManager.h:190
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Extend the base level Vantage plugin manager class to allow for additional plugins to be loaded after...
Definition: vrfGuiPluginManager.h:43
Loads plugins.
Definition: DtPluginManager.h:26
DT_VRF_DLL_PLUGIN void initializeCommandLineArguments(makVrv::DtVrvCommandLineProcessor *)
This method is called when trying to add additional command line arguments to the command line proces...
std::vector< std::string > myAdditionalPluginsToLoad
Definition: vrfGuiPluginManager.h:181
boost::signals2::signal< void(const std::string &, const PluginInformationList &)> signal_pluginsAdded
Definition: vrfGuiPluginManager.h:154
boost::signals2::signal< void(const std::string &, const std::string &)> signal_pluginRecordRenamed
Definition: vrfGuiPluginManager.h:147
std::map< std::string, PluginInformationList > PluginInformationMap
Definition: vrfGuiPluginManager.h:85
bool myLoadDefaultPlugins
Definition: vrfGuiPluginManager.h:183
class DtVrfPluginRecordManager:
Definition: vrfPluginRecordManager.h:24
static const std::string theFrontEndPluginName
Definition: vrfGuiPluginManager.h:87
makVrv::DtLibraryLoader * libraryLoader()
Definition: vrfGuiPluginManager.h:54
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
The DtVrvCommandLineProcessor is an interface for an application-specific command line parser...
Definition: DtVrvCommandLineProcessor.h:21
void setVrvPluginManager(makVrv::DtPluginManager *m)
Definition: vrfGuiPluginManager.h:135
bool myCheckPluginVersions
Definition: vrfGuiPluginManager.h:184
Contains makVrv::DtVirtualBaseClass class.
std::vector< std::string > myPendingPluginRequests
Definition: vrfGuiPluginManager.h:188
DtLibraryLoader is used to load VR-Vantage plugins.
Definition: DtLibraryLoader.h:27
File: simMsg.h.
Definition: simMessage.h:35
boost::signals2::signal< void(const DtVrfPluginRecord &)> signal_pluginRecordAdded
Definition: vrfGuiPluginManager.h:145
std::list< std::string > myPlugins
Definition: vrfGuiPluginManager.h:75
This owns a list of display engine configurations.
Definition: DtVrvApplicationConfiguration.h:32
boost::signals2::signal< void(const std::string &, const std::string &, const std::string &, const std::string &, const std::string &)> signal_pluginRemoved
Definition: vrfGuiPluginManager.h:149
std::vector< DtVrfMessagePluginInformation > PluginInformationList
Definition: vrfGuiPluginManager.h:84
boost::function< bool(void)> VerifierFunction
Before loading a plugin in the library, make this callback (by lowercase library name without the ext...
Definition: vrfGuiPluginManager.h:67
class DtVrfPluginRecord:
Definition: vrfPluginRecord.h:25
boost::signals2::signal< void(const std::string &, bool)> signal_pluginLoadStateChanged
Definition: vrfGuiPluginManager.h:152
Contains DtPluginManager class.
boost::signals2::signal< void(const std::string &, const std::string &, const std::string &, const std::string &, const std::string &)> signal_pluginAdded
Definition: vrfGuiPluginManager.h:151
std::map< DtString, VerifierFunction > VerifierFunctions
Definition: vrfGuiPluginManager.h:76
bool myPluginsLoaded
Definition: vrfGuiPluginManager.h:74
Definition: vrfGuiPluginManager.h:80
VerifierFunctions myVerifierFunctions
Definition: vrfGuiPluginManager.h:77
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
Definition: ifPluginData.h:54
boost::signals2::signal< void(const std::string &, const PluginInformationList &)> signal_pluginsRemoved
Definition: vrfGuiPluginManager.h:155
std::string myPluginsDirectory
Definition: vrfGuiPluginManager.h:185
boost::signals2::signal< void(const DtVrfPluginRecord &)> signal_pluginRecordRemoved
Definition: vrfGuiPluginManager.h:146
makVrv::DtDe & myDe
Definition: vrfGuiPluginManager.h:186

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)