All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Static Public Member Functions
DinverCore::DinverCoreObject Class Reference

#include <DinverCoreObject.h>

Inheritance diagram for DinverCore::DinverCoreObject:
QGpCoreTools::GlobalObject DinverGui

List of all members.

Public Member Functions

virtual void addWindow (QWidget *w)
 DinverCoreObject ()
bool isModified () const
DinverInterfaceplugin () const
virtual AbstractProgressprogress ()
virtual int progressMaximum ()
virtual void removeWindow (QWidget *w)
virtual QStringList selectedReports (const QString &title) const
void setModified (bool m)
bool setPlugin (QString pluginFile, bool debug)
virtual void setProgressMaximum (int)
virtual void setProgressValue (int)
virtual void showMessage (QString)
virtual void showWindow (QWidget *w)
virtual bool useProgress ()
virtual ~DinverCoreObject ()

Static Public Member Functions

static QStringList defaultPluginPaths ()
static DinverInterfaceloadPlugin (QString pluginFile, bool debug)
static QString pluginFile (QString tag, bool debug)
static void printPluginList ()

Constructor & Destructor Documentation

References DinverCore::dinverCore, and TRACE.

  {
    TRACE;
    // Make sure dinverCore is not NULL, if so set this object as the current dinver core
    if( !dinverCore) dinverCore=this;
    _modified=false;
    _plugin=0;
  }

References TRACE.

  {
    TRACE;
    delete _plugin;
  }

Member Function Documentation

void DinverCore::DinverCoreObject::addWindow ( QWidget *  w) [virtual]

References QGpCoreTools::PackageInfo::dllDir(), and TRACE.

Referenced by pluginFile(), and printPluginList().

  {
    TRACE;
    QSettings reg;
    reg.beginGroup( "Plugins" );
    reg.beginGroup(DINVERCORE_VERSION_TYPE);
    QStringList paths;
  #ifdef Q_WS_MAC
    QString dll="/Library/Geopsy.org/plugins";
  #else
    const PackageInfo * info=PackageInfo::package("dinver");
    ASSERT (info);
    QString dll=info->dllDir();
  #endif
    QDir d(dll);
    if(d.exists()) paths << dll;
    reg.setValue( "Paths", paths);
    return paths;
  }

Referenced by DinverGui::warnBeforeClose().

{return _modified;}
DinverInterface * DinverCore::DinverCoreObject::loadPlugin ( QString  pluginFile,
bool  debug 
) [static]

References QGpCoreTools::endl(), DinverCore::DinverInterface::interfaceVersion(), QGpCoreTools::tr(), and TRACE.

Referenced by pluginFile(), printPluginList(), and setPlugin().

  {
    TRACE;
    if(debug) {
      App::stream() << tr("Load library %1").arg(pluginFile) << endl;
    }
    // test loading
    QPluginLoader pluginTest;
    pluginTest.setFileName(pluginFile);
    QObject * instance=pluginTest.instance();
    if(instance) {
      if(debug) {
        App::stream() << tr("  Library loaded successfully") << endl;
      }
      DinverInterface * dinverInstance=qobject_cast<DinverInterface *>(instance);
      if(dinverInstance) {
        if(debug) {
          App::stream() << tr("  Dinver plugin interface version=%1")
                   .arg(dinverInstance->interfaceVersion()) << endl;
        }
        return dinverInstance;
      }
      CoreApplication::instance()->deletePlugin(instance);
    } else {
      if(debug) {
        App::stream() << "  " << pluginTest.errorString() << endl;
      }
    }
    return 0;
  }
QString DinverCore::DinverCoreObject::pluginFile ( QString  tag,
bool  debug 
) [static]

Return the complete path to plugin with tag

References defaultPluginPaths(), DinverCore::DinverInterface::isValid(), loadPlugin(), DinverCore::DinverInterface::tag(), and TRACE.

Referenced by modeImportanceSampling(), modeNeighborhoodOptimization(), modeSnoopOptimization(), and DinverGui::pluginSelector().

  {
    TRACE;
    QStringList libs;
    // Make sure plugins are correctly initialized
    QSettings reg;
    reg.beginGroup( "Plugins" );
    reg.beginGroup(DINVERCORE_VERSION_TYPE);
    if( !reg.contains( "pluginList" )) {
      libs=File::getLibList(defaultPluginPaths());
    } else {
      libs=reg.value( "pluginList" ).toStringList();
    }

    int n=libs.count();
    for(int i=0;i < n;i++ ) {
      QString libFile=libs.at(i);
      DinverInterface * dinverInstance=loadPlugin(libFile, debug);
      if(dinverInstance) {
        if(dinverInstance->isValid() && dinverInstance->tag()==tag) {
          CoreApplication::instance()->deletePlugin(dinverInstance);
          return libFile;
        }
        CoreApplication::instance()->deletePlugin(dinverInstance);
      }
    }
    return QString::null;
  }

References defaultPluginPaths(), DinverCore::DinverInterface::isValid(), loadPlugin(), DinverCore::DinverInterface::tag(), DinverCore::DinverInterface::title(), TRACE, and DinverCore::DinverInterface::version().

Referenced by main().

  {
    TRACE;
    QStringList libs;
    // Make sure plugins are correctly initialized
    QSettings reg;
    reg.beginGroup( "Plugins" );
    reg.beginGroup(DINVERCORE_VERSION_TYPE);
    if( !reg.contains( "pluginList" )) {
      libs=File::getLibList(defaultPluginPaths());
    } else {
      libs=reg.value( "pluginList" ).toStringList();
    }

    int n=libs.count();
    for(int i=0;i < n;i++ ) {
      QString libFile=libs.at(i);
      DinverInterface * dinverInstance=loadPlugin(libFile, false);
      if(dinverInstance) {
        if(dinverInstance->isValid()) {
          ApplicationHelp::print(dinverInstance->title() + "-" + dinverInstance->version() + " (tag=" + dinverInstance->tag() + ")", 0);
        }
        CoreApplication::instance()->deletePlugin(dinverInstance);
      }
    }
  }

Reimplemented in DinverGui.

{return 0;}
virtual int DinverCore::DinverCoreObject::progressMaximum ( ) [inline, virtual]

Reimplemented in DinverGui.

{return 0;}
void DinverCore::DinverCoreObject::removeWindow ( QWidget *  w) [virtual]

Remove a window in Dinver framework. This function doos nothing by default, re-implement it.

Reimplemented in DinverGui.

References TRACE.

Referenced by DinverDCGui::DCModelViewer::~DCModelViewer(), and PSViewer::~PSViewer().

  {
    TRACE;
  }
QStringList DinverCore::DinverCoreObject::selectedReports ( const QString &  title) const [virtual]

Returns the reports of selected runs. This function returns nothing by default, re-implement it.

Reimplemented in DinverGui.

Referenced by DCPlugin::autocorrViewer(), DCPlugin::dispersionViewer(), DCPlugin::ellipticityViewer(), DCPlugin::groundProfilesViewer(), DCPlugin::magnetoTelluricViewer(), DCPlugin::refractionVpViewer(), and DCPlugin::refractionVsViewer().

  {
    return QStringList();
  }
void DinverCore::DinverCoreObject::setModified ( bool  m) [inline]

Referenced by DinverGui::save().

{_modified=m;}
bool DinverCore::DinverCoreObject::setPlugin ( QString  pluginFile,
bool  debug 
)

References loadPlugin(), and TRACE.

Referenced by modeImportanceSampling(), modeNeighborhoodOptimization(), and modeSnoopOptimization().

  {
    TRACE;
    ASSERT(!_plugin);
    _plugin=loadPlugin(pluginFile, debug);
    return _plugin;
  }
virtual void DinverCore::DinverCoreObject::setProgressMaximum ( int  ) [inline, virtual]

Reimplemented in DinverGui.

{}
virtual void DinverCore::DinverCoreObject::setProgressValue ( int  ) [inline, virtual]

Reimplemented in DinverGui.

{}
virtual void DinverCore::DinverCoreObject::showMessage ( QString  ) [inline, virtual]

Reimplemented in DinverGui.

Referenced by ThreadLauncher::processFinished().

{}
void DinverCore::DinverCoreObject::showWindow ( QWidget *  w) [virtual]
virtual bool DinverCore::DinverCoreObject::useProgress ( ) [inline, virtual]

Reimplemented in DinverGui.

{return false;}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines