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();
}
}