#include <SciFigsPlugin.h>
Public Member Functions | |
virtual QString | description () const |
virtual const char * | interfaceVersion () const =0 |
bool | isValid () const |
virtual QString | tag () const =0 |
virtual QString | title () const =0 |
virtual | ~SciFigsPlugin () |
Static Public Member Functions | |
static QStringList | getPluginList (QStringList libs, bool &ok, bool debug=false) |
static SciFigsPlugin * | loadPlugin (QString pluginFile, bool debug=false) |
static bool | loadPlugins (QStringList libs, bool debug=false) |
virtual SciFigs::SciFigsPlugin::~SciFigsPlugin | ( | ) | [inline, virtual] |
{}
virtual QString SciFigs::SciFigsPlugin::description | ( | ) | const [inline, virtual] |
{return QString::null;}
QStringList SciFigs::SciFigsPlugin::getPluginList | ( | QStringList | libs, |
bool & | ok, | ||
bool | debug = false |
||
) | [static] |
References QGpCoreTools::endl(), interfaceVersion(), isValid(), loadPlugin(), QGpCoreTools::tr(), and TRACE.
Referenced by SciFigs::SciFigsGlobal::initPlugins(), and SciFigs::SciFigsPreferences::on_searchPlugin_clicked().
{ TRACE; QStringList plugins; int n=libs.count(); if(n<=0) return plugins; QProgressDialog * d=new QProgressDialog(tr("Searching SciFigs plugins ..."), QString::null, 0, n-1, QApplication::activeWindow()); ok=true; for(int i=0;i<n;i++) { QString libFile=libs.at(i); if(!libFile.isEmpty()) { if(debug) { printf("Load library %s\n",libFile.toAscii().data()); fflush(stdout); } SciFigsPlugin * pluginInstance=loadPlugin(libFile, debug); d->setValue(i); if(pluginInstance) { if( pluginInstance->isValid()) { if(debug) { printf(" SciFigs plugin interface\n"); printf(" SciFigs interface version=%s\n",pluginInstance->interfaceVersion()); fflush(stdout); } plugins << libFile; } else { App::stream() << tr("%1 is not compatible with current SciFigs version.").arg(libFile) << endl; ok=false; } } CoreApplication::instance()->deletePlugin(pluginInstance); } } delete d; return plugins; }
const char * SciFigs::SciFigsPlugin::interfaceVersion | ( | ) | const [pure virtual] |
Returns the SciFigs version of the plugin (at compile time)
Implemented in GeopsyFigs.
Referenced by getPluginList(), isValid(), and loadPlugins().
bool SciFigs::SciFigsPlugin::isValid | ( | ) | const |
Check if the plugin is compatible with SciFigs library
References QGpCoreTools::Version::compatible(), and interfaceVersion().
Referenced by getPluginList(), and loadPlugins().
{ static const Version vRef(SCIFIGS_VERSION); Version v(interfaceVersion()); return v.compatible(vRef); }
SciFigsPlugin * SciFigs::SciFigsPlugin::loadPlugin | ( | QString | pluginFile, |
bool | debug = false |
||
) | [static] |
References TRACE.
Referenced by getPluginList(), and loadPlugins().
{ TRACE; QPluginLoader pluginTest; pluginTest.setFileName(pluginFile); QObject * instance=pluginTest.instance(); if(instance) { if(debug) { printf(" Library loaded successfully\n"); fflush(stdout); } SciFigsPlugin * pluginInstance=qobject_cast<SciFigsPlugin *>(instance); if(pluginInstance) { return pluginInstance; } else { delete instance; } } else if(debug) { printf(" %s\n",pluginTest.errorString().toAscii().data()); fflush(stdout); } return 0; }
bool SciFigs::SciFigsPlugin::loadPlugins | ( | QStringList | libs, |
bool | debug = false |
||
) | [static] |
Returns false if at least one plugin has not been built with a compatible SciFigs version.
References QGpCoreTools::endl(), interfaceVersion(), isValid(), loadPlugin(), QGpCoreTools::tr(), and TRACE.
Referenced by SciFigs::SciFigsGlobal::initPlugins(), and SciFigs::SciFigsGlobal::SciFigsGlobal().
{ TRACE; bool correctInterfaceVersion=true; for(QStringList::Iterator it=libs.begin();it!=libs.end();++it) { if( !( *it).isEmpty()) { if(debug) { printf("Load library %s\n",it->toAscii().data()); fflush(stdout); } SciFigsPlugin * instance=loadPlugin( *it, debug); if(instance) { if(instance->isValid()) { if(debug) { printf(" SciFigs plugin interface\n"); printf(" SciFigs interface version=%s\n",instance->interfaceVersion()); fflush(stdout); } CoreApplication::instance()->addPlugin(instance); } else { App::stream() << tr("%1 is not compatible with current SciFigs version.").arg(*it) << endl; correctInterfaceVersion=false; CoreApplication::instance()->deletePlugin(instance); } } } } return correctInterfaceVersion; }
virtual QString SciFigs::SciFigsPlugin::tag | ( | ) | const [pure virtual] |
Implemented in GeopsyFigs.
virtual QString SciFigs::SciFigsPlugin::title | ( | ) | const [pure virtual] |
Implemented in GeopsyFigs.