Public Slots | Public Member Functions
DCPlugin Class Reference

#include <DCPlugin.h>

Inheritance diagram for DCPlugin:
DinverCore::DinverInterface

List of all members.

Public Slots

void autocorrViewer ()
void dispersionViewer ()
void ellipticityViewer ()
void groundProfilesViewer ()
void magnetoTelluricViewer ()
void refractionVpViewer ()
void refractionVsViewer ()
void setCurrentGroundModel (ParamGroundModel *gm)
void setParamFromTargets ()

Public Member Functions

virtual void addViewMenu (QMenu *m)
virtual void clear ()
virtual AbstractForwardcreateForward ()
virtual QWidget * createParamWidget ()
virtual QWidget * createTargetWidget ()
 DCPlugin ()
virtual QString description () const
virtual bool initForward (AbstractForward *forward)
virtual const char * interfaceVersion () const
virtual void setCurrentForward (AbstractForward *forwards, const QString &caption)
virtual QString tag () const
virtual QString title () const
virtual QString version () const
virtual XMLMember xml_member (XML_MEMBER_ARGS)
virtual bool xml_polishChild (XML_POLISHCHILD_ARGS)
virtual void xml_writeChildren (XML_WRITECHILDREN_ARGS) const
virtual bool xmlSupport () const
 ~DCPlugin ()

Constructor & Destructor Documentation

References TRACE.

{
  TRACE;
  _paramWidget=0;
  _targetWidget=0;
  _param=0;
  _target=0;
}

References TRACE.

{
  TRACE;
  delete _param;
  delete _target;
}

Member Function Documentation

void DCPlugin::addViewMenu ( QMenu *  m) [virtual]

Place to add items to dinver view menu

Reimplemented from DinverCore::DinverInterface.

References autocorrViewer(), dispersionViewer(), ellipticityViewer(), groundProfilesViewer(), magnetoTelluricViewer(), refractionVpViewer(), refractionVsViewer(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  QAction * a;

  a=new QAction(tr( "Ground profiles" ), m);
  a->setStatusTip(tr( "Create a new sheet with plots of ground profiles" ));
  connect(a, SIGNAL(triggered()), this, SLOT(groundProfilesViewer()) );
  m->addAction(a);

  a=new QAction(tr( "Dispersion" ), m);
  a->setStatusTip(tr( "Create a new sheet with plots of dispersion curves" ));
  connect(a, SIGNAL(triggered()), this, SLOT(dispersionViewer()) );
  m->addAction(a);

  a=new QAction(tr( "Autocorrelation" ), m);
  a->setStatusTip(tr( "Create a new sheet with plots of autocorr curves" ));
  connect(a, SIGNAL(triggered()), this, SLOT(autocorrViewer()) );
  m->addAction(a);

  a=new QAction(tr( "Ellipticity" ), m);
  a->setStatusTip(tr( "Create a new sheet with plots of ellipticity curves" ));
  connect(a, SIGNAL(triggered()), this, SLOT(ellipticityViewer()) );
  m->addAction(a);

  a=new QAction(tr( "Refraction Vp" ), m);
  a->setStatusTip(tr( "Create a new sheet with plots of refraction Vp curves" ));
  connect(a, SIGNAL(triggered()), this, SLOT(refractionVpViewer()) );
  m->addAction(a);

  a=new QAction(tr( "Refraction Vs" ), m);
  a->setStatusTip(tr( "Create a new sheet with plots of refraction Vs curves" ));
  connect(a, SIGNAL(triggered()), this, SLOT(refractionVsViewer()) );
  m->addAction(a);

  a=new QAction(tr( "Magneto-telluric" ), m);
  a->setStatusTip(tr( "Create a new sheet with plots of magneto-telluric curves" ));
  connect(a, SIGNAL(triggered()), this, SLOT(magnetoTelluricViewer()) );
  m->addAction(a);
}
void DCPlugin::autocorrViewer ( ) [slot]

References DinverDCGui::ViewerParam::autocorr(), DinverCore::dinverCore, DinverCore::DinverCoreObject::selectedReports(), DinverDCGui::DCModelViewer::setTarget(), TargetListWidget::targetList(), QGpCoreTools::tr(), TRACE, and w.

Referenced by addViewMenu().

{
  TRACE;
  QStringList reportList=dinverCore->selectedReports(tr("View autocorr curves"));
  if(reportList.isEmpty()) return;
  ViewerParam * d=new ViewerParam(QApplication::activeWindow());
  DCModelViewer * w=d->autocorr(reportList);
  delete d;
  if(w) {
    w->setTarget(_targetWidget->targetList());
  }
}
void DCPlugin::clear ( ) [virtual]

Function called after "File/New"

Reimplemented from DinverCore::DinverInterface.

References TargetListWidget::clear(), ParamGroundModelWidget::clear(), and TRACE.

{
  TRACE;
  _targetWidget->clear();
  _paramWidget->clear();
}

Implements DinverCore::DinverInterface.

{
  return new Forward;
}
QWidget * DCPlugin::createParamWidget ( ) [virtual]

Create and return a widget that lets the user customize the parameter space definition

Reimplemented from DinverCore::DinverInterface.

References TRACE.

{
  TRACE;
  _paramWidget=new ParamGroundModelWidget;
  return _paramWidget;
}
QWidget * DCPlugin::createTargetWidget ( ) [virtual]

Create and return a widget that lets the user customize the target definition

Reimplemented from DinverCore::DinverInterface.

References setParamFromTargets(), TargetListFrameWidget::targetListWidget, and TRACE.

{
  TRACE;
  TargetListFrameWidget * targetFrame=new TargetListFrameWidget;
  _targetWidget=targetFrame->targetListWidget;
  connect(_targetWidget, SIGNAL(targetChanged()), this, SLOT(setParamFromTargets()) );
  return targetFrame;
}
QString DCPlugin::description ( ) const [virtual]

Detailed description of the plugin

Reimplemented from DinverCore::DinverInterface.

References QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  return tr("<p>Inversion of theoretical dispersion curves, autocorrelation curves, "
            "ellipticity curves and refraction curves. This module is based upon "
            "surface wave algorithms developed by Marc Wathelet (<a href=\"http://"
            "marc.geopsy.org/publications.html\">http://marc.geopsy.org/publications.html</a>).</p>");
}
void DCPlugin::dispersionViewer ( ) [slot]

References DinverCore::dinverCore, DinverDCGui::ViewerParam::dispersion(), DinverCore::DinverCoreObject::selectedReports(), DinverDCGui::DCModelViewer::setTarget(), TargetListWidget::targetList(), QGpCoreTools::tr(), TRACE, and w.

Referenced by addViewMenu().

{
  TRACE;
  QStringList reportList=dinverCore->selectedReports(tr("View dispersion curves"));
  if(reportList.isEmpty()) return;
  ViewerParam * d=new ViewerParam(QApplication::activeWindow());
  DCModelViewer * w=d->dispersion(reportList);
  delete d;
  if(w) {
    w->setTarget(_targetWidget->targetList());
  }
}
void DCPlugin::ellipticityViewer ( ) [slot]

References DinverCore::dinverCore, DinverDCGui::ViewerParam::ellipticity(), DinverCore::DinverCoreObject::selectedReports(), DinverDCGui::DCModelViewer::setTarget(), TargetListWidget::targetList(), QGpCoreTools::tr(), TRACE, and w.

Referenced by addViewMenu().

{
  TRACE;
  QStringList reportList=dinverCore->selectedReports(tr("View ellipticity curves"));
  if(reportList.isEmpty()) return;
  ViewerParam * d=new ViewerParam(QApplication::activeWindow());
  DCModelViewer * w=d->ellipticity(reportList);
  delete d;
  if(w) {
    w->setTarget(_targetWidget->targetList());
  }
}

References DinverCore::dinverCore, DinverDCGui::ViewerParam::groundProfile(), DinverCore::DinverCoreObject::selectedReports(), QGpCoreTools::tr(), and TRACE.

Referenced by addViewMenu().

{
  TRACE;
  QStringList reportList=dinverCore->selectedReports(tr("View ground profiles"));
  if(reportList.isEmpty()) return;
  ViewerParam * d=new ViewerParam(QApplication::activeWindow());
  d->groundProfile(reportList);
  delete d;
}
bool DCPlugin::initForward ( AbstractForward forward) [virtual]

Reimplemented from DinverCore::DinverInterface.

References DinverDCCore::TargetList::dispersionSampleCount(), QGpCoreTools::endl(), DinverDCCore::ParamGroundModel::isEmpty(), MSG_ID, ParamGroundModelWidget::paramGroundModel(), Forward::setParamSpace(), Forward::setTargets(), TargetListWidget::targetList(), and QGpCoreTools::tr().

{
  ParamGroundModel * gm;
  if(_paramWidget) {
    gm=_paramWidget->paramGroundModel();
  } else {
    if(!_param) {
      App::stream() << tr("Parameters are missing.") << endl;
      return 0;
    }
    gm=new ParamGroundModel(*_param);
  }
  if(gm->isEmpty()) {
    App::stream() << tr("Parametrized model is empty or at least one of its profiles is missing.") << endl;
    delete gm;
    return false;
  }
  TargetList * tl;
  if(_targetWidget)
    tl=_targetWidget->targetList();
  else {
   if(_target) {
     tl=new TargetList(*_target);
   } else {
     tl=new TargetList();
   }
  }
  if(tl->dispersionSampleCount()>100) {
    if(Message::warning(MSG_ID, tr("Creating a new inversion run"),
                                     tr("The effective number of samples for dispersion curve is greater than 100 (%1). This is "
                                        "likely to slow down the inversion process. A usual number of samples is 50. A high number "
                                        "of samples may be observed when various curves are inverted together (dispersion, spac,...). "
                                        "In this case make sure that all these curves use the same frequency samples. Resample "
                                        "all curves if necessary.").arg(tl->dispersionSampleCount()),
                                     tr("Continue"), Message::cancel(), true) ==Message::Answer1) {
      delete gm;
      delete tl;
      return false;
    }
  }
  Forward * f=static_cast<Forward *>(forward);
  f->setTargets(tl);
  return f->setParamSpace(gm);
}
virtual const char* DCPlugin::interfaceVersion ( ) const [inline, virtual]

Returns the dinvercore version of the plugin (at compile time)

Implements DinverCore::DinverInterface.

{return DINVERCORE_VERSION;}

References DinverCore::dinverCore, DinverDCGui::ViewerParam::magnetoTelluric(), DinverCore::DinverCoreObject::selectedReports(), DinverDCGui::DCModelViewer::setTarget(), TargetListWidget::targetList(), QGpCoreTools::tr(), TRACE, and w.

Referenced by addViewMenu().

{
  TRACE;
  QStringList reportList=dinverCore->selectedReports(tr("View magneto-telluric curves"));
  if(reportList.isEmpty()) return;
  ViewerParam * d=new ViewerParam(QApplication::activeWindow());
  DCModelViewer * w=d->magnetoTelluric(reportList);
  delete d;
  if(w) {
    w->setTarget(_targetWidget->targetList());
  }
}

References DinverCore::dinverCore, DinverDCGui::ViewerParam::refractionVp(), DinverCore::DinverCoreObject::selectedReports(), DinverDCGui::DCModelViewer::setTarget(), TargetListWidget::targetList(), QGpCoreTools::tr(), TRACE, and w.

Referenced by addViewMenu().

{
  TRACE;
  QStringList reportList=dinverCore->selectedReports(tr("View refraction Vp curves"));
  if(reportList.isEmpty()) return;
  ViewerParam * d=new ViewerParam(QApplication::activeWindow());
  DCModelViewer * w=d->refractionVp(reportList);
  delete d;
  if(w) {
    w->setTarget(_targetWidget->targetList());
  }
}

References DinverCore::dinverCore, DinverDCGui::ViewerParam::refractionVs(), DinverCore::DinverCoreObject::selectedReports(), DinverDCGui::DCModelViewer::setTarget(), TargetListWidget::targetList(), QGpCoreTools::tr(), TRACE, and w.

Referenced by addViewMenu().

{
  TRACE;
  QStringList reportList=dinverCore->selectedReports(tr("View refraction Vs curves"));
  if(reportList.isEmpty()) return;
  ViewerParam * d=new ViewerParam(QApplication::activeWindow());
  DCModelViewer * w=d->refractionVs(reportList);
  delete d;
  if(w) {
    w->setTarget(_targetWidget->targetList());
  }
}
void DCPlugin::setCurrentForward ( AbstractForward forwards,
const QString &  caption 
) [virtual]

Reimplemented from DinverCore::DinverInterface.

References Forward::paramGroundModel(), ParamGroundModelWidget::paramGroundModel(), ParamGroundModelWidget::setEditable(), TargetListWidget::setEditable(), ParamGroundModelWidget::setFrom(), TargetListWidget::setFrom(), TargetListWidget::setTitles(), Forward::targetList(), TargetListWidget::targetList(), and TRACE.

{
  TRACE;
  if(forward) {
    if(!_param) {
      // Means that last list of forwards was null or contained more than 1 forward
      // Hence the main global parameterization and target are currently active
      // Save them before showing a particular case
      ASSERT(!_target);
      _param=_paramWidget->paramGroundModel();
      _target=_targetWidget->targetList();
    }
    Forward * f=static_cast<Forward *>(forward);
    _paramWidget->setFrom(f->paramGroundModel());
    _paramWidget->setEditable(false);
    _targetWidget->setEditable(false);
    _targetWidget->setFrom(f->targetList());
    _targetWidget->setTitles(caption);
  } else if(_param) {
    ASSERT(_target);
    _paramWidget->setFrom(_param);
    _paramWidget->setEditable(true);
    _targetWidget->setFrom(_target);
    _targetWidget->setEditable(true);
    _targetWidget->setTitles(QString::null);
    delete _param;
    delete _target;
    _param=0;
    _target=0;
  }
}

References ParamGroundModelWidget::setFrom(), and TRACE.

{
  TRACE;
  _paramWidget->setFrom(gm);
}

References TargetListWidget::setParamProfiles(), and TRACE.

Referenced by createTargetWidget().

{
  TRACE;
  _targetWidget->setParamProfiles(_paramWidget);
}
QString DCPlugin::tag ( ) const [virtual]

Unique tag to identify in .report files models generated by this plugin.

Implements DinverCore::DinverInterface.

References TRACE.

Referenced by xml_member().

{
  TRACE;
  return "DispersionCurve";
}
QString DCPlugin::title ( ) const [virtual]

User friendly title, displayed at Dinver startup.

Implements DinverCore::DinverInterface.

References QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  return tr("Surface Wave Inversion");
}
QString DCPlugin::version ( ) const [virtual]

Current version of the plugin

Implements DinverCore::DinverInterface.

References TRACE.

{
  TRACE;
  return DINVERDC_VERSION;
}

Re-implement this function to load parameters and targets (e.g. while restoring dinver environments)

Reimplemented from DinverCore::DinverInterface.

References DinverCore::XMLDinverContext::parameters(), tag(), DinverCore::XMLDinverContext::targets(), and TRACE.

{
  TRACE;
  Q_UNUSED(attributes)
  XMLDinverContext * dinverContext=static_cast<XMLDinverContext *>(context);
  if(tag=="TargetList" ) {
    if(dinverContext->targets()) {
      if(_targetWidget) {
        return XMLMember(new TargetList, true);
      } else {
        delete _target;
        _target=new TargetList;
        return XMLMember(_target);
      }
    } else {
      return XMLMember(XMLMember::Skip);
    }
  } else if(tag=="ParamGroundModel" ) {
    if(dinverContext->parameters()) {
      if(_paramWidget) {
        return XMLMember(new ParamGroundModel, true);
      } else {
        delete _param;
        _param=new ParamGroundModel;
        return XMLMember(_param);
      }
    } else {
      return XMLMember(XMLMember::Skip);
    }
  } else return XMLMember(XMLMember::Unknown);
}

Re-implement this function to initialize parameters and targets (e.g. after restoring dinver environments)

Reimplemented from DinverCore::DinverInterface.

References DinverCore::XMLDinverContext::parameters(), ParamGroundModelWidget::setFrom(), TargetListWidget::setFrom(), DinverCore::XMLDinverContext::targets(), and TRACE.

{
  TRACE;
  XMLDinverContext * dinverContext=static_cast<XMLDinverContext *>(context);
  if(dinverContext->targets() && child->xml_tagName()=="TargetList") {
    if(_targetWidget) {
      _targetWidget->setFrom(static_cast<TargetList *>(child));
    }
    return true;
  } else if(dinverContext->parameters() && child->xml_tagName()=="ParamGroundModel") {
    if(_paramWidget) { // gui run
      _paramWidget->setFrom(static_cast<ParamGroundModel *>(child));
    }
    return true;
  } else
    return false;
}

Re-implement this function to save parameters and targets (e.g. while saving dinver environments)

Reimplemented from DinverCore::DinverInterface.

References DinverCore::XMLDinverContext::parameters(), ParamGroundModelWidget::paramGroundModel(), TargetListWidget::targetList(), DinverCore::XMLDinverContext::targets(), TRACE, and QGpCoreTools::XMLClass::xml_save().

{
  TRACE;
  XMLDinverContext * dinverContext=static_cast<XMLDinverContext *>(context);
  if(dinverContext->targets()) {
    if(_targetWidget) {
      TargetList * t=_targetWidget->targetList();
      t->xml_save(s, context);
      delete t;
    } else {
      _target->xml_save(s, context);
    }
  }
  if(dinverContext->parameters()) {
    if(_paramWidget) {
      ParamGroundModel * p=_paramWidget->paramGroundModel();
      p->xml_save(s, context);
      delete p;
    } else {
      _param->xml_save(s, context);
    }
  }
}
virtual bool DCPlugin::xmlSupport ( ) const [inline, virtual]

Reimplemented from DinverCore::DinverInterface.

{return true;}

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