00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef IVT_PLUGINS_MANAGER_H
00025 #define IVT_PLUGINS_MANAGER_H
00026
00028
00029
00030
00032
00033 #include <IvTune/IvTuneExtender/IvtLibName.h>
00034
00035 #include <Inventor/SbString.h>
00036
00037 #include <Inventor/STL/list>
00038 #include <Inventor/STL/map>
00039 #include <Inventor/STL/pair>
00040 #include <Inventor/STL/string>
00041
00042 #include <QObject>
00043 #include <QtXml/QDomElement>
00044
00045 #ifdef _WIN32
00046 # if !defined(IvTuneExtenderAPI_EXPORTS)
00047 # ifndef OIV_DISABLE_AUTOLINK
00048 # pragma comment(lib,__IVTEXLIB)
00049 # endif
00050 # endif
00051 #endif //win
00052
00053 class IvtPlugin;
00054 class IvtProfile;
00055 class IvtProfileSetting;
00056
00073 class IVTEXTENDER_API IvtPluginsManager : public QObject
00074 {
00075 Q_OBJECT
00076 public:
00077
00084 void addProfile( IvtProfile* profile );
00085
00089 IvtProfile* getActiveProfile() const;
00090
00096 IvtPlugin* getPluginByName( const SbString& name );
00097
00101 const std::list< IvtPlugin* >& getPlugins() const;
00102
00106 static IvtPluginsManager* getInstance();
00107
00113 IvtProfile* getProfileByName( const SbString& name );
00114
00118 const std::list<IvtProfile*>& getProfilesList() const;
00119
00126 IvtPlugin* loadPlugin( const SbString& path, const SbString& fileName );
00127
00134 void read( const SbString& configFilePath, bool isPath = true );
00135
00140 static void releaseInstance();
00141
00147 void removeProfile( IvtProfile* profile );
00148
00155 void setActiveProfile( IvtProfile* profile );
00156
00162 void unloadPlugin( IvtPlugin* plugin );
00163
00167 void unloadAllPlugins();
00168
00174 void write( const SbString& configFilePath );
00175
00179 ~IvtPluginsManager();
00180
00181 private:
00183 IvtPluginsManager();
00184
00186 void readControlledExtension ( QDomElement& controlledExtension, IvtProfileSetting* s);
00187
00189 void writeControlledExtension( QDomDocument& doc, QDomElement& extension, IvtProfileSetting* setting );
00190
00192 std::list< IvtPlugin*> m_pluginsInstances;
00193
00195 IvtProfile* m_defaultProfile;
00196
00198 IvtProfile* m_activeProfile;
00199
00201 std::list<IvtProfile*> m_profiles;
00202
00204 static IvtPluginsManager* m_instance;
00205 };
00206
00207 #endif // IVT_PLUGINS_MANAGER_H
00208