#include <ToolSPAC.h>
Public Member Functions | |
virtual bool | initStations (SubSignalPool *subPool) |
virtual void | setParameters (int &argc, char **argv) |
void | setRings (QString fileName) |
ToolSPAC (QWidget *parent) | |
virtual void | waitFinished () |
~ToolSPAC () | |
Protected Member Functions | |
AbstractParameters * | parameters (AbstractParameters *param=0) const |
void | setArrayMap () |
void | setCoArrayMap () |
void | startLoop (SPACLoop *loop, SPACParameters *param) |
virtual const char * | toolName () |
virtual void | updateAllFields () |
Protected Attributes | |
QTime | _chrono |
ToolSPACd * | _d |
SPACLoop * | _loop |
SPACParameters * | _param |
QVector< StationCouple > | _stationCouples |
TimeWindowList | _winList |
ToolSPAC::ToolSPAC | ( | QWidget * | parent | ) |
References _d, _loop, GeopsyGui::ToolBase::loadLogParameters(), GeopsyGui::ToolBase::setWindowTitle(), and TRACE.
: ToolArrayBase(parent, 2) { TRACE; setWindowIcon(QIcon( ":/images/spac-22x22.png" )); setObjectName("ToolSPAC"); QVBoxLayout * baseLayout=new QVBoxLayout(this); _d=new ToolSPACd(this); baseLayout->addWidget(_d); setWindowTitle( "SPAC toolbox" ); connect(_d->startBut, SIGNAL(clicked()), this, SLOT(start()) ); connect(_d->stopBut, SIGNAL(clicked()), this, SLOT(stop()) ); connect(_d->testBut, SIGNAL(clicked()), this, SLOT(parametersChanged()) ); connect(_d->loadParam, SIGNAL(clicked()), this, SLOT(loadLogParameters()) ); connect(_d->winParam, SIGNAL(parametersChanged()), this, SLOT(parametersChanged()) ); connect(_d->timeLimits, SIGNAL(parametersChanged()), this, SLOT(parametersChanged()) ); connect(_d->testFrequency, SIGNAL(valueChanged( const QString& )), this, SLOT(parametersChanged()) ); _loop=0; }
bool ToolSPAC::initStations | ( | SubSignalPool * | subPool | ) | [virtual] |
Reimplemented from GeopsyGui::ToolBase.
References ToolArrayBase::_array, _arrayMap, GeopsyGui::ToolBase::_childrenList, _coArrayMap, _d, GeopsyGui::ToolBase::_subPool, _winList, GeopsyCore::StationList::components(), geopsyGui, ToolArrayBase::initStations(), MSG_ID, GeopsyCore::SubSignalPool::name(), setArrayMap(), setCoArrayMap(), ToolArrayBase::setTimeWindowLayer(), GeopsyGui::ToolBase::timeWindowLayer(), QGpCoreTools::tr(), TRACE, and GeopsyGui::ToolBase::updateSubPool().
{ TRACE; if( !ToolArrayBase::initStations(subPool, _d->winParam) ) return false; switch (_array.components()) { case StationSignals::VerticalComponent: case StationSignals::AllComponent: break; default: Message::warning(MSG_ID, tr("Creating array"), tr( "Error while checking components: only vertical or 3 components allowed." ), Message::cancel()); return false; } _d->timeLimits->setPicks(_subPool); // Create children plots: coordinates and azimuth if( !_arrayMap || !_coArrayMap) { _childrenList[ 0 ]=new ArrayMap; _childrenList[ 1 ]=new ArrayMap; _arrayMap->QWidget::resize(300, 300); // default size _arrayMap->setObjectName( "arrayMap" ); _arrayMap->setWindowTitle(tr( "%1 - array map" ).arg(_subPool->name()) ); _arrayMap->setAttribute(Qt::WA_DeleteOnClose, false); _coArrayMap->QWidget::resize(300, 300); // default size _coArrayMap->setObjectName( "coArrayMap" ); _coArrayMap->setWindowTitle(tr( "%1 - co-array map " ).arg(_subPool->name()) ); _coArrayMap->setAttribute(Qt::WA_DeleteOnClose, false); _d->ringEdit->setCoArrayGraph(_coArrayMap); geopsyGui->addWindow(_arrayMap); geopsyGui->addWindow(_coArrayMap); } setArrayMap(); setCoArrayMap(); geopsyGui->showWindow(_arrayMap); geopsyGui->showWindow(_coArrayMap); if(timeWindowLayer()) { setTimeWindowLayer(&_winList); } emit updateSubPool(); return true; }
AbstractParameters * ToolSPAC::parameters | ( | AbstractParameters * | param = 0 | ) | const [protected, virtual] |
Reimplemented from GeopsyGui::ToolBase.
References _d, ToolSPACd::getParameters(), and TRACE.
{ TRACE; if(!param) { param=new SPACParameters; } _d->getParameters(*static_cast<SPACParameters *>(param)); return param; }
void ToolSPAC::setArrayMap | ( | ) | [protected] |
References ToolArrayBase::_array, _arrayMap, ToolArrayBase::_log, GeopsyCore::StationSignals::coordinates(), SciFigs::NameLine::curve(), GeopsyCore::StationSignals::name(), QGpCoreTools::Curve< pointType >::resize(), QGpCoreTools::Point::toString(), and TRACE.
Referenced by initStations().
{ TRACE; int n=_array.count(); NameLineLayer * plot=_arrayMap->mapLayer(); LayerLocker ll(plot); NameLine * l=static_cast<NameLine *>(_arrayMap->line(0)); Curve<NamedPoint>& c=l->curve(); c.resize(n); StationSignals * stat; for(int i=0;i < _array.count(); i++ ) { NamedPoint& p=c[ i ]; stat=_array.at(i); _log+=QString( "Station %1, coord %2\n" ). arg(stat->name()).arg(stat->coordinates().toString()); p=stat->coordinates(); p.setName(stat->name()); } _arrayMap->setLimitsArray(); }
void ToolSPAC::setCoArrayMap | ( | ) | [protected] |
References ToolArrayBase::_array, _coArrayMap, ToolArrayBase::_initLog, _stationCouples, GeopsyCore::StationSignals::coordinates(), SciFigs::NameLine::curve(), ArrayCore::StationCouple::name(), QGpCoreTools::Curve< pointType >::resize(), QGpCoreTools::NamedPoint::setName(), QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), ArrayCore::StationCouple::station1(), ArrayCore::StationCouple::station2(), QGpCoreTools::tr(), TRACE, QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
Referenced by initStations().
{ TRACE; // Construct the couple list int nStations=_array.count(); int nCouples=nStations * (nStations - 1)/2; _stationCouples.resize(nCouples); QList<StationSignals *>::iterator statIt1, statIt2; int iCouple=0; for(statIt1=_array.begin();statIt1!=_array.end();++statIt1) { statIt2=statIt1; for( ++statIt2;statIt2!=_array.end();++statIt2, iCouple++ ) _stationCouples[ iCouple ].setStations( *statIt1, *statIt2); } _initLog+=tr("Found %1 couples\n").arg(iCouple); NameLineLayer * plot=_coArrayMap->mapLayer(); LayerLocker ll(plot); NameLine * l=static_cast<NameLine *>(_coArrayMap->line(0)); Curve<NamedPoint>& c=l->curve(); c.resize(nCouples); for(int i=0;i < nCouples;i++ ) { NamedPoint& p=c[ i ]; const StationCouple& couple=_stationCouples[ i ]; const Point& p1=couple.station1()->coordinates(); const Point& p2=couple.station2()->coordinates(); double dx=p1.x() - p2.x(); double dy=p1.y() - p2.y(); if(( dx < 0 && dy > 0) || (dx > 0 && dy < 0) ) p.setX( -fabs(dx) ); else p.setX(fabs( dx) ); p.setY(fabs( dy) ); p.setName(couple.name()); } _coArrayMap->setLimitsCoArray( ); }
void ToolSPAC::setParameters | ( | int & | argc, |
char ** | argv | ||
) | [virtual] |
By default loads parameters values from current settings. If you redefine this function do not forget to call this version before doing anything else.
Reimplemented from GeopsyGui::ToolBase.
References _d, GeopsyGui::ToolBase::loadLogParameters(), and TRACE.
{ TRACE; ToolBase::setParameters(argc, argv); int i, j=1; for(i=1; i<argc; i++) { QByteArray arg=argv[i]; if(arg[0]=='-') { if(arg=="-param") { CoreApplication::checkOptionArg(i, argc, argv); loadLogParameters(argv[i] ); } else if(arg=="-rings") { CoreApplication::checkOptionArg(i, argc, argv); _d->ringEdit->load(argv[i] ); } else { argv[j++]=argv[i]; } } else { argv[j++]=argv[i]; } } if(j < argc) { argv[j]=0; argc=j; } }
void ToolSPAC::setRings | ( | QString | fileName | ) |
void ToolSPAC::startLoop | ( | SPACLoop * | loop, |
SPACParameters * | param | ||
) | [protected] |
References _chrono, _d, ToolArrayBase::_log, _loop, _param, QGpCoreTools::SamplingParameters::count(), ArrayCore::ArrayParameters::frequencySampling(), GeopsyGui::ToolBase::lockSubPool(), ArrayCore::ArrayParameters::outputFile(), ToolSPACd::setRunning(), QGpCoreTools::ParallelLoop::start(), QGpCoreTools::tr(), and ToolArrayBase::writeParameterLogs().
{ _d->detailedStatus->setLoop(loop); _loop=loop; _param=param; // Start main loop lockSubPool(); // Prevent any change on the orignal signals _d->setRunning(true); writeParameterLogs(_param->outputFile()); _log += tr("Process started at %1\n").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")); _chrono.start(); _loop->start(0, _param->frequencySampling().count()); }
const char * ToolSPAC::toolName | ( | ) | [protected, virtual] |
Implements ToolArrayBase.
{ return "SPAC Array analysis"; }
void ToolSPAC::updateAllFields | ( | ) | [protected, virtual] |
void ToolSPAC::waitFinished | ( | ) | [virtual] |
Reimplemented from GeopsyGui::ToolBase.
References _loop, TRACE, and QGpCoreTools::ParallelLoop::waitFinished().
{ TRACE; if(_loop) { _loop->waitFinished(); } }
QTime ToolSPAC::_chrono [protected] |
Referenced by startLoop().
ToolSPACd* ToolSPAC::_d [protected] |
Referenced by initStations(), parameters(), setParameters(), setRings(), startLoop(), ToolSPAC(), and updateAllFields().
SPACLoop* ToolSPAC::_loop [protected] |
Referenced by startLoop(), ToolSPAC(), and waitFinished().
SPACParameters* ToolSPAC::_param [protected] |
Referenced by startLoop().
QVector<StationCouple> ToolSPAC::_stationCouples [protected] |
Referenced by setCoArrayMap().
TimeWindowList ToolSPAC::_winList [protected] |
Referenced by initStations().