Functions
gpviewdcreport/main.cpp File Reference
#include <DinverCore.h>
#include <DinverDCCore.h>
#include <DinverDCGui.h>
#include <QGpCoreTools.h>
#include <QGpCoreWave.h>
#include <QGpGuiTools.h>
#include "gpviewdcreportVersion.h"
#include "gpviewdcreportInstallPath.h"

Functions

ApplicationHelphelp ()
int main (int argc, char **argv)
 PACKAGE_INFO (gpviewdcreport, GPVIEWDCREPORT)

Function Documentation

int main ( int  argc,
char **  argv 
)

References DinverDCGui::ViewerParam::autocorr(), DinverDCGui::ViewerParam::dispersion(), Ellipticity, DinverDCGui::ViewerParam::ellipticity(), QGpCoreTools::endl(), SciFigs::GraphicSheet::exportFile(), DinverDCGui::ViewerParam::groundProfile(), help(), DinverDCGui::DCModelViewer::initGraphs(), DinverDCGui::DCModelViewer::loadModels(), mode, DinverDCGui::ViewerParam::refractionVp(), DinverDCGui::ViewerParam::refractionVs(), SAFE_UNINITIALIZED, DinverDCGui::DCModelViewer::selectModels(), DinverDCGui::DCModelViewer::setFrequencyAxis(), DinverDCGui::DCModelViewer::setMode(), QGpCoreWave::Mode::setPolarisation(), QGpCoreWave::Mode::setSlowness(), DinverDCGui::DCModelViewer::setTarget(), DinverDCGui::DCModelViewer::sheet(), QGpCoreTools::tr(), w, and QGpCoreTools::XMLHeader::xml_restoreFile().

{
  Application a(argc, argv, help);
  SciFigsGlobal s;

  // Options
  enum PlotType {Profile, Dispersion, Ellipticity, Autocorr, RefraVp, RefraVs};
  PlotType plotType=Profile;
  bool skipDialog=false;
  int nGraphs=1;
  double maxMisfit=1.0;
  QString exportFile;
  QString exportFormat="PAGE";
  int dpi=0;  // No dpi force
  QString targetFile;
  Mode mode;
  // Check arguments
  int i, j=1;
  for(i=1; i<argc; i++) {
    QByteArray arg=argv[i];
    if(arg[0]=='-') {
      if(arg=="-profile") {
        plotType=Profile;
      } else if(arg=="-dispersion") {
        plotType=Dispersion;
      } else if(arg=="-ellipticity") {
        plotType=Ellipticity;
      } else if(arg=="-autocorr") {
        plotType=Autocorr;
      } else if(arg=="-refraVp") {
        plotType=RefraVp;
      } else if(arg=="-refraVs") {
        plotType=RefraVs;
      } else if(arg=="-m") {
        CoreApplication::checkOptionArg(i, argc, argv);
        maxMisfit=atof(argv[i]);
        skipDialog=true;
      } else if(arg=="-n") {
        CoreApplication::checkOptionArg(i, argc, argv);
        nGraphs=atoi(argv[i]);
        skipDialog=true;
      } else if(arg=="-s") {
        CoreApplication::checkOptionArg(i, argc, argv);
        mode.setSlowness(argv[i] );
        skipDialog=true;
      } else if(arg=="-p") {
        CoreApplication::checkOptionArg(i, argc, argv);
        mode.setPolarisation(argv[i] );
        skipDialog=true;
      } else if(arg=="-target") {
        Application::checkOptionArg(i, argc, argv);
        targetFile=argv[i];
      } else if(arg=="-export" || arg=="-e") {
        Application::checkOptionArg(i, argc, argv);
        exportFile=argv[i];
      } else if(arg=="-format" || arg=="-f") {
        Application::checkOptionArg(i, argc, argv);
        exportFormat=argv[i];
      } else if(arg=="-dpi") {
        Application::checkOptionArg(i, argc, argv);
        dpi=atoi(argv[i]);
        if(dpi>1200) dpi=1200;
        else if(dpi<0) dpi=0;
      } else {
        App::stream() << tr("gpviewdcreport: bad option %1, see --help").arg(argv[i]) << endl;
        return 2;
      }
    } else {
      argv[j++]=argv[i];
    }
  }
  if(j < argc) {
    argv[j]=0;
    argc=j;
  }

  QStringList reportList;
  i=1;
  while(i<argc) {
    reportList.append(argv[i]);
    i++;
  }
  if(reportList.isEmpty()) {
    reportList=Message::getOpenFileNames(tr("View report files"),
                                            tr("Report file (*.report)"));
    if(reportList.isEmpty()) {
      App::stream() << tr("gpviewdcreport: no report files provided") << endl;
      return 2;
    }
  }
  DCModelViewer * w;
  SAFE_UNINITIALIZED(w,0);
  if(skipDialog) {
    switch(plotType) {
    case Profile:
      w=new GroundModelViewer;
      break;
    case Dispersion:
      w=new DispersionViewer;
      w->setMode(mode);
      break;
    case Ellipticity:
      w=new EllipticityViewer;
      break;
    case Autocorr:
      w=new AutocorrViewer;
      w->setMode(mode);
      w->setFrequencyAxis(true);
      break;
    case RefraVp:
      w=new RefractionVpViewer;
      break;
    case RefraVs:
      w=new RefractionVsViewer;
      break;
    };
    w->initGraphs(nGraphs);
    for(QStringList::iterator it=reportList.begin();it!=reportList.end();++it) {
      w->selectModels(*it, maxMisfit);
      QFileInfo fi(*it);
      w->setWindowTitle(w->windowTitle()+" "+fi.completeBaseName());
    }
    w->loadModels();
  } else {
    ViewerParam * d=new ViewerParam();
    switch(plotType) {
    case Profile:
      w=d->groundProfile(reportList);
      break;
    case Dispersion:
      w=d->dispersion(reportList);
      break;
    case Ellipticity:
      w=d->ellipticity(reportList);
      break;
    case Autocorr:
      w=d->autocorr(reportList);
      break;
    case RefraVp:
      w=d->refractionVp(reportList);
      break;
    case RefraVs:
      w=d->refractionVs(reportList);
      break;
    };
    delete d;
  }
  if(!w) return 2;
  if(!targetFile.isEmpty()) {
    TargetList * tl=new TargetList;
    XMLVirtualPlugin plugin(tl, "DispersionCurve");
    XMLDinverHeader hdr(&plugin);
    if(hdr.xml_restoreFile(targetFile)!=XMLClass::NoError) {
      delete w;
      delete tl;
      return 2;
    }
    w->setTarget(tl);
  }

  if( !exportFile.isEmpty()) {
    w->sheet()->exportFile(exportFile, exportFormat, dpi);
    delete w;
    return 0;
  } else if(skipDialog) {
    w->show();
  }

  int appReturn=a.exec();
  return appReturn;
}
PACKAGE_INFO ( gpviewdcreport  ,
GPVIEWDCREPORT   
)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines