Brief description of class still missing. More...
#include <LinearFKActiveResults.h>
Public Slots | |
void | adjust (int ig, ModalCurve &curve, double min, double max, SamplingOptions options) |
void | autoPick () |
void | exportCurves () |
void | setPick (bool on) |
void | stackGrids () |
Signals | |
void | newCurve (int iGraph) |
void | newPlot (LineLayer *curveLayer, QString caption) |
Public Member Functions | |
void | createObjects (const QList< LinearFKActiveArrayStations * > &arrays) |
LineLayer * | curveLayer (int index) const |
IrregularGrid2DPlot * | gridLayer (int index) const |
LinearFKActiveResults (QWidget *parent=0) | |
void | setLimits () |
void | setWaveLengthLimit (int ig, double wl) |
void | setXAxis (const SamplingParameters &s) |
void | setYAxis (Scale::Type t, double min, double max) |
~LinearFKActiveResults () |
Brief description of class still missing.
Full description of class still missing
LinearFKActiveResults::LinearFKActiveResults | ( | QWidget * | parent = 0 | ) |
Description of constructor still missing
References SciFigs::GraphicSheetMenu::addMenu(), autoPick(), exportCurves(), setPick(), stackGrids(), QGpCoreTools::tr(), and TRACE.
: GraphicSheetMenu(parent) { TRACE; Settings::getSize(this, "LinearFKActiveResults" ); // Tools menu QMenu * m; QAction * a; m=addMenu(tr( "&Tools" )); a=new QAction(tr( "Stack selected plots" ), this); a->setStatusTip(tr( "Grids of selected plot are stacked and a new plot is added" )); connect(a, SIGNAL(triggered()), this, SLOT(stackGrids()) ); m->addAction(a); m->addSeparator(); a=new QAction(tr( "Pick curves" ), this); a->setStatusTip(tr( "Switch all selected graphs to pick mode (pick ordered)" )); a->setCheckable(true); connect(a, SIGNAL(toggled(bool)), this, SLOT(setPick(bool)) ); m->addAction(a); a=new QAction(tr( "Auto pick curves" ), this); a->setStatusTip(tr( "Scan grids to find the absolute maximum and start picking from there" )); connect(a, SIGNAL(triggered()), this, SLOT(autoPick()) ); m->addAction(a); a=new QAction(tr( "Export all curves" ), this); a->setStatusTip(tr( "Export al curves from all selected plots" )); connect(a, SIGNAL(triggered()), this, SLOT(exportCurves()) ); m->addAction(a); }
void LinearFKActiveResults::adjust | ( | int | ig, |
ModalCurve & | curve, | ||
double | min, | ||
double | max, | ||
SamplingOptions | options | ||
) | [slot] |
References QGpCoreTools::Function, QGpCoreTools::InversedScale, TRACE, and QGpCoreTools::Curve< pointType >::xInverse().
{ TRACE; ASSERT(options & Function); // Transforms X scale according to options (log and inv) if(options & InversedScale) { curve.xInverse(options); } _gridLayers[ig]->grid().followMaximumX<ModalCurve, FactoryPoint>(curve, min, max); // Re-Transforms axis according options (log and inv) if(options & InversedScale) curve.xInverse(options); }
void LinearFKActiveResults::autoPick | ( | ) | [slot] |
References newCurve(), QGpCoreTools::tr(), and TRACE.
Referenced by LinearFKActiveResults().
{ TRACE; if(!selectAll(tr("Automatic picking"))) return; int n=_gridLayers.count(); for(int ig=0;ig < n;ig++ ) { if(_curveLayers[ ig ]->graph()->isSelected()) { ModalCurve& curve=static_cast<ModalLine *>(_curveLayers[ig]->addLine())->curve(); curve=_gridLayers[ig]->grid().followMaximumX<ModalCurve, FactoryPoint>(); _curveLayers[ig]->deepUpdate(); emit newCurve(ig); } } }
void LinearFKActiveResults::createObjects | ( | const QList< LinearFKActiveArrayStations * > & | arrays | ) |
References SciFigs::GraphicSheetMenu::addGraph(), SciFigs::GraphicSheetMenu::addText(), geopsyGui, SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::GraphicSheet::setStatusBar(), SciFigs::TextEdit::setText(), SciFigs::GraphicSheetMenu::sheet(), TRACE, and w.
{ TRACE; sheet()->setStatusBar(geopsyGui->statusBar()); int n=arrays.count(); double x=0.5, y=0.5; _gridLayers.resize(n); _curveLayers.resize(n); _limitLayers.resize(n); for(int ig=0;ig < n;ig++ ) { AxisWindow * w=addGraph(); setGraphGeometry(w, x, 9, y+1, 9); TextEdit * c=addText(x, y, 9, 1); c->setText(arrays.at(ig)->name()); x += 9; if(x==18.5) {x=0.5;y += 10;} _gridLayers[ig]=new IrregularGrid2DPlot(w); _curveLayers[ig]=new LineLayer(w); _limitLayers[ig]=new DispersionLimitLayer(w); _curveLayers[ig]->setReferenceLine(createReferenceLine()); _limitLayers[ig]->addLine(); } }
LineLayer* LinearFKActiveResults::curveLayer | ( | int | index | ) | const [inline] |
Referenced by exportCurves(), and stackGrids().
{return _curveLayers[index];}
void LinearFKActiveResults::exportCurves | ( | ) | [slot] |
References SciFigs::LineLayer::count(), curveLayer(), QGpCoreTools::endl(), fileName, SciFigs::GraphContentLayer::graph(), SciFigs::GraphicObject::isSelected(), SciFigs::LineLayer::line(), MSG_ID, SciFigs::CurveBrowserProxy::save(), SciFigs::CurveBrowserProxy::setLine(), QGpCoreTools::tr(), and TRACE.
Referenced by LinearFKActiveResults().
{ TRACE; if(!selectAll(tr("Export all curves"))) return; QString fileName=Message::getSaveFileName(tr("Export all curves"), tr("4 columns file(*)")); if(!fileName.isEmpty()) { QFile f(fileName); if(!f.open(QIODevice::WriteOnly) ) { Message::warning(MSG_ID, tr("Export all curves"), tr("Cannot to write to file %1").arg(fileName), Message::cancel()); return ; } QTextStream s(&f); int n=_gridLayers.count(); DispersionProxy proxy; for(int ig=0;ig < n;ig++ ) { LineLayer * curveLayer=_curveLayers[ig]; if(curveLayer->graph()->isSelected()) { int n=curveLayer->count(); s << "# Shot " << ig << endl; for(int i=0;i<n;i++ ) { proxy.setLine(curveLayer->line(i)); proxy.save(s); } } } } }
IrregularGrid2DPlot* LinearFKActiveResults::gridLayer | ( | int | index | ) | const [inline] |
Referenced by stackGrids().
{return _gridLayers[index];}
void LinearFKActiveResults::newCurve | ( | int | iGraph | ) | [signal] |
Referenced by autoPick().
void LinearFKActiveResults::newPlot | ( | LineLayer * | curveLayer, |
QString | caption | ||
) | [signal] |
Referenced by stackGrids().
void LinearFKActiveResults::setLimits | ( | ) |
void LinearFKActiveResults::setPick | ( | bool | on | ) | [slot] |
References TRACE.
Referenced by LinearFKActiveResults().
{ TRACE; int n=_gridLayers.count(); for(int ig=0;ig < n;ig++ ) { if(_curveLayers[ ig ]->graph()->isSelected()) { _curveLayers[ig]->setTrackingAction(LineLayer::PickOrdered, on); } } }
void LinearFKActiveResults::setWaveLengthLimit | ( | int | ig, |
double | wl | ||
) |
void LinearFKActiveResults::setXAxis | ( | const SamplingParameters & | s | ) |
References SciFigs::AxisWindow::deepUpdate(), QGpCoreTools::SamplingParameters::maximum(), QGpCoreTools::SamplingParameters::minimum(), SciFigs::Axis::setRange(), SciFigs::Axis::setScaleType(), TRACE, QGpCoreTools::SamplingParameters::type(), SciFigs::AxisWindow::updateInternalGeometry(), w, and SciFigs::AxisWindow::xAxis().
{ TRACE; int n=_gridLayers.count(); for(int ig=0;ig < n;ig++ ) { AxisWindow * w=_gridLayers[ ig ]->graph(); if(s.type()==SamplingParameters::Linear) { w->xAxis()->setScaleType(Scale::Linear); } else { w->xAxis()->setScaleType(Scale::Log); } w->xAxis()->setRange(s.minimum(), s.maximum()); _limitLayers[ig]->setFrequencySampling(s); w->updateInternalGeometry(); w->deepUpdate(); } }
void LinearFKActiveResults::setYAxis | ( | Scale::Type | t, |
double | min, | ||
double | max | ||
) |
References SciFigs::AxisWindow::deepUpdate(), SciFigs::Axis::setRange(), SciFigs::Axis::setScaleType(), TRACE, SciFigs::AxisWindow::updateInternalGeometry(), w, and SciFigs::AxisWindow::yAxis().
{ TRACE; int n=_gridLayers.count(); for(int ig=0;ig < n;ig++ ) { AxisWindow * w=_gridLayers[ ig ]->graph(); w->yAxis()->setScaleType(t); w->yAxis()->setRange(min, max); w->updateInternalGeometry(); w->deepUpdate(); } }
void LinearFKActiveResults::stackGrids | ( | ) | [slot] |
References SciFigs::GraphicSheetMenu::addGraph(), SciFigs::LineLayer::addLine(), SciFigs::GraphicSheetMenu::addText(), curveLayer(), SciFigs::GraphicObject::deepUpdate(), SciFigs::GraphContentLayer::graph(), SciFigs::IrregularGrid2DPlot::grid(), gridLayer(), SciFigs::GraphicObject::isSelected(), SciFigs::Axis::maximum(), SciFigs::Axis::minimum(), newPlot(), SciFigs::Axis::scaleType, SciFigs::GraphicSheetMenu::setGraphGeometry(), SciFigs::IrregularGrid2DPlot::setGrid(), SciFigs::IrregularGrid2DPlot::setLinearPalette(), SciFigs::Axis::setRange(), SciFigs::LineLayer::setReferenceLine(), SciFigs::Axis::setScaleType(), SciFigs::TextEdit::setText(), SciFigs::TextEdit::text, QGpCoreTools::tr(), TRACE, SciFigs::AxisWindow::updateInternalGeometry(), w, SciFigs::AxisWindow::xAxis(), and SciFigs::AxisWindow::yAxis().
Referenced by LinearFKActiveResults().
{ TRACE; if(!selectAll(tr("Stack grids"))) return; IrregularGrid2D stackedGrid; int nStacks=0; int n=_gridLayers.count(); for(int ig=0;ig < n;ig++ ) { IrregularGrid2DPlot * gridLayer=_gridLayers[ig]; if(gridLayer->graph()->isSelected()) { if(nStacks==0) { stackedGrid=gridLayer->grid(); nStacks++; } else { stackedGrid += gridLayer->grid(); nStacks++; } } } // Add plot if(nStacks>0) { double x=0.5 + 9 * (n % 2), y=0.5 + (n/2) * 10; AxisWindow * w=addGraph(); setGraphGeometry(w, x, 9, y+1, 9); IrregularGrid2DPlot * gridLayer=new IrregularGrid2DPlot(w); _gridLayers.append(gridLayer); LineLayer * curveLayer=new LineLayer(w); curveLayer->setReferenceLine(createReferenceLine()); _curveLayers.append(curveLayer); gridLayer->setGrid(stackedGrid); gridLayer->setLinearPalette(0); DispersionLimitLayer * dispLimitLayer=new DispersionLimitLayer(w); dispLimitLayer->addLine(); _limitLayers.append(dispLimitLayer); // Add text label TextEdit * c=addText(x, y, 9, 1); c->setText(tr("Stack of %1 grids").arg(nStacks)); c->deepUpdate(); // Copy axis range and scale from last plot AxisWindow * w1=_gridLayers[n-1]->graph(); emit newPlot(curveLayer, c->text()); w->xAxis()->setScaleType(w1->xAxis()->scaleType()); w->yAxis()->setScaleType(w1->yAxis()->scaleType()); w->xAxis()->setRange(w1->xAxis()->minimum(), w1->xAxis()->maximum()); w->yAxis()->setRange(w1->yAxis()->minimum(), w1->yAxis()->maximum()); w->updateInternalGeometry(); } }