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

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)