#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.