![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2006 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: tmPluginManager.h,v $ $Revision: 1.17 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DTTMPLUGINMANAGER_H_ 00013 #define DTTMPLUGINMANAGER_H_ 00014 00015 #include <QtCore/QObject> 00016 #include <QtCore/QStringList> 00017 00018 #include <vector> 00019 #include <mtl/lispEnv.h> 00020 00021 #include "tmqt/pluginExtension.h" 00022 00023 class DtTMApplication; 00024 class DtFilename; 00025 class DtMtlEnvironment; 00026 class DtDynamicLibrary; 00027 00042 #include "tmqt/tmqtDefines.h" 00043 00044 class DT_DLL_tmqt DtTMPlugin 00045 { 00046 public: 00047 DtTMPlugin(const DtString &libName, 00048 bool addPlatExt = true, 00049 bool useLazyEval = true); 00050 00051 virtual ~DtTMPlugin(); 00052 00053 virtual bool init(); 00054 virtual bool init(DtTMApplication*); 00055 virtual bool postAppInitialize(DtTMApplication*); 00056 virtual void unloadPlugin(); 00057 00058 DtTMApplication* createApplication(int argc, char** argv); 00059 00060 const DtPluginInformation& pluginInformation() const; 00061 virtual void pluginInformation(std::string& str) const; 00062 00064 virtual bool checkVersion(const QString& curVersion); 00065 00066 public: 00067 virtual bool isValid() const; 00068 virtual DtString libraryName() const; 00069 virtual const char *error() const; 00070 00071 protected: 00072 DtPluginInformation myPluginInformation; 00073 DtInitializePluginFcn myPluginInit; 00074 DtPostAppInitializeFcn myPostAppInitialize; 00075 DtUnloadPluginFcn myUnloadPlugin; 00076 DtDynamicLibrary* myDynamicLibrary; 00077 }; 00078 00079 class DT_DLL_tmqt DtTMPluginManager : public QObject 00080 { 00081 Q_OBJECT 00082 00083 public: 00084 00085 DtTMPluginManager(); 00086 00088 virtual ~DtTMPluginManager(); 00089 00090 const QList<DtTMPlugin*>& plugins() const; 00091 00093 virtual DtTMPlugin* loadPlugin(const QString&, DtTMApplication* app); 00094 00095 virtual void postAppInitialize(DtTMApplication*); 00096 00100 void setLoadIfVersionMismatch(bool); 00101 bool loadIfVersionMismatch() const; 00102 00103 public: 00104 virtual bool init(const DtFilename& pluginFile, DtTMApplication* app, int argc, char** argv); 00105 00106 static DtlObjPtr addMtlPlugin(const DtlObjPtr& args, const DtlObjPtr&); 00107 static DtTMPluginManager* create(); 00108 00109 protected: 00111 virtual void readPluginsFromPluginFile(const DtString&); 00112 00115 virtual void readPluginsFromCommandLine(DtTMApplication* app, int argc, char** argv); 00116 00120 virtual void loadAllPlugins(DtTMApplication* app); 00121 00125 virtual void initPluginVariables(DtTMApplication* app); 00126 00127 virtual void unloadPlugins(); 00128 00130 virtual void processPluginsDirectory(const DtFilename&); 00131 00132 signals: 00134 void pluginLoaded(const DtTMPlugin*); 00135 00136 protected: 00137 QString myPluginFile; 00138 QList<DtTMPlugin*> myPlugins; 00139 DtMtlEnvironment* myMtlEnv; 00140 static std::vector<DtString> thePluginsFromPluginFile; 00141 bool myLoadIfVersionMismatch; 00142 }; 00143 00144 inline const QList<DtTMPlugin*>& DtTMPluginManager::plugins() const 00145 { 00146 return myPlugins; 00147 } 00148 00149 inline const DtPluginInformation& DtTMPlugin::pluginInformation() const 00150 { 00151 return myPluginInformation; 00152 } 00153 00154 inline void DtTMPluginManager::setLoadIfVersionMismatch(bool b) 00155 { 00156 myLoadIfVersionMismatch = b; 00157 } 00158 00159 inline bool DtTMPluginManager::loadIfVersionMismatch() const 00160 { 00161 return myLoadIfVersionMismatch; 00162 } 00163 00164 #endif