An abstract layer to plot AbstractLine. More...
#include <LineLayer.h>
Public Types | |
| typedef QList< AbstractLine * > ::const_iterator | const_iterator |
| enum | ErrorBar { NoBar, VerticalBar, HorizontalBar, VerticalLogBar, HorizontalLogBar } |
| enum | TrackingModes { Select = 0, Pick, PickOrdered, Edit } |
Public Slots | |
| Q_SCRIPTABLE void | attributesHelp () |
| Q_SCRIPTABLE void | rmStdDev (int curveIndex) |
| virtual Q_SCRIPTABLE void | setLegend (Legend legend) |
| Q_SCRIPTABLE void | setPenColor (int curveIndex, int red, int green, int blue) |
| Q_SCRIPTABLE void | setPenStyle (int curveIndex, double width, QString lineStyle, QString capStyle, QString joinStyle) |
| Q_SCRIPTABLE void | setSymBrushColor (int curveIndex, int red, int green, int blue) |
| Q_SCRIPTABLE void | setSymBrushStyle (int curveIndex, QString brushStyle) |
| Q_SCRIPTABLE void | setSymPenColor (int curveIndex, int red, int green, int blue) |
| Q_SCRIPTABLE void | setSymPenStyle (int curveIndex, double width, QString lineStyle, QString capStyle, QString joinStyle) |
| Q_SCRIPTABLE void | setSymSize (int curveIndex, double size) |
| Q_SCRIPTABLE void | setSymType (int curveIndex, QString type) |
Signals | |
| void | lineEdited (int lineIndex) |
| void | pickLine (AbstractLine *line) |
| void | pointAdded (AbstractLine *line, int pointIndex) |
Public Member Functions | |
| AbstractLine * | addLine () |
| AbstractLine * | addLine (const Pen &pen, const Symbol &sym) |
| virtual void | addProperties (PropertyProxy *pp) |
| const_iterator | begin () const |
| virtual Rect | boundingRect () const |
| void | clear () |
| int | count () const |
| void | divYbyX (double constant) |
| const_iterator | end () const |
| ErrorBar | errorBar () const |
| QString | errorBarString () const |
| virtual bool | hasProperties () |
| virtual bool | keyPressEvent (QKeyEvent *e) |
| virtual Legend | legend () const |
| AbstractLine * | line (int i) |
| const AbstractLine * | line (int i) const |
| LineLayer (AxisWindow *parent=0) | |
| QList< AbstractLine * > | lines () const |
| virtual void | mouseMoveEvent (const QPoint &pt, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers) |
| virtual bool | mousePressEvent (QMouseEvent *e, int id=-1) |
| virtual bool | mouseReleaseEvent (QMouseEvent *e, int id=-1) |
| void | mulYbyX (double constant) |
| virtual void | paintData (const LayerPainterRequest &lp, QPainter &p, double dotpercm) const |
| const CurvePointOptions * | pointOptions () const |
| void | removeEmptyLines () |
| void | removeLine (int i) |
| void | removeLine (AbstractLine *l) |
| virtual void | removeProperties (PropertyProxy *pp) |
| void | resetLineProperties () |
| void | setErrorBar (ErrorBar b) |
| void | setErrorBar (QString b) |
| void | setLogErrorBar (bool b) |
| void | setPointOptions (CurvePointOptions *o) |
| void | setReferenceLine (AbstractLine *l) |
| void | setReferencePen (const Pen &p) |
| void | setReferenceSymbol (const Symbol &s) |
| void | setSelected (int i, bool s) |
| void | setVisible (int i, bool v) |
| virtual void | toggleTrackingAction (bool checked, int id=-1) |
| virtual bool | trackRectangle (int, double rx1, double ry1, double rx2, double ry2, Qt::KeyboardModifiers m) |
| virtual bool | wheelEvent (QWheelEvent *e) |
| virtual const QString & | xml_tagName () const |
| ~LineLayer () | |
Static Public Attributes | |
| static const QString | xmlLineLayerTag = "LineLayer" |
Protected Member Functions | |
| virtual XMLMember | xml_member (XML_MEMBER_ARGS) |
| virtual bool | xml_setProperty (XML_SETPROPERTY_ARGS) |
| virtual void | xml_writeChildren (XML_WRITECHILDREN_ARGS) const |
Protected Attributes | |
| int | _currentLine |
| ErrorBar | _errorBar |
| LineEditor * | _lineEditor |
| CurvePointOptions * | _pointOptions |
Properties | |
| QString | errorBar |
| bool | logErrorBars |
An abstract layer to plot AbstractLine.
Full description of class still missing
| typedef QList<AbstractLine *>::const_iterator SciFigs::LineLayer::const_iterator |
{Select=0, Pick, PickOrdered, Edit};
| SciFigs::LineLayer::LineLayer | ( | AxisWindow * | parent = 0 | ) |
References TRACE.
:
GraphContentLayer(parent)
{
TRACE;
_currentLine=-1;
_errorBar=VerticalBar;
_lineEditor=0;
_referenceLine=0;
_pointOptions=0;
}
References _pointOptions, clear(), and TRACE.
{
TRACE;
clear();
delete _referenceLine;
delete _pointOptions;
}
Adds one new line with default pen and symbol.
Reimplemented in SciFigs::NameLineLayer.
References SciFigs::AbstractLine::clone(), line(), and TRACE.
Referenced by SciFigs::ActivityMonitor::ActivityMonitor(), QGpGuiWave::DispersionLimitLayer::addArrayLimits(), RefractionTargetWidget::addCurve(), MagnetoTelluricTargetWidget::addCurve(), AutocorrTargetWidget::addCurve(), QGpGuiWave::ModalCurveBrowser::addCurve(), Seismic1DThread::addModel(), MagnetoTelluricThread::addModel(), SciFigs::CurveBrowser::average(), DampingResults::compute(), createCurve(), createCurvePlot(), ArrayGui::ArrayResponse::createObjects(), HistogramWidget::HistogramWidget(), Seismic1DThread::initModelGraphs(), MagnetoTelluricThread::initModelGraphs(), SciFigs::CurveBrowser::loadMultiColumns(), DinverDCGui::GroundModelViewer::minMaxProfiles(), Simulator::on_addSource_clicked(), Results::Results(), MonoStation::AbstractSummary::setAverageValues(), MonoStation::StationResults::setGraph(), StatGridAnalyser::setGrid(), MonoStation::AbstractSummary::setStackedValues(), MonoStation::StatisticResults::setStatPlot(), DinverDCGui::MagnetoTelluricViewer::setTarget(), DinverDCGui::EllipticityViewer::setTarget(), DinverDCGui::DispersionViewer::setTarget(), DinverDCGui::AutocorrViewer::setTarget(), DinverDCGui::RefractionVpViewer::setTarget(), DinverDCGui::RefractionVsViewer::setTarget(), SpacSelector::SpacSelector(), LinearFKActiveResults::stackGrids(), MonoStation::StatisticResults::studentTest(), toggleTrackingAction(), and ProcessStatus::updateMisfitCurve().
| AbstractLine * SciFigs::LineLayer::addLine | ( | const Pen & | pen, |
| const Symbol & | sym | ||
| ) |
Adds one new line with pen pen and symbol sym.
Reimplemented in SciFigs::NameLineLayer.
References SciFigs::AbstractLine::clone(), line(), SciFigs::AbstractLine::setPen(), SciFigs::AbstractLine::setSymbol(), and TRACE.
| void SciFigs::LineLayer::addProperties | ( | PropertyProxy * | pp | ) | [virtual] |
Setup property editor
Reimplemented from SciFigs::GraphContentLayer.
Reimplemented in SciFigs::NameLineLayer, and SciFigs::GridMaxFollower.
References SciFigs::LineLayerProperties::addLayer(), QGpGuiTools::PropertyProxy::addReference(), QGpGuiTools::PropertyProxy::addTab(), QGpGuiTools::PropertyProxy::currentTabWidget(), QGpGuiTools::PropertyProxy::setCurrentTab(), QGpCoreTools::tr(), TRACE, and w.
{
TRACE;
if(pp->setCurrentTab(_tabLineLayer)) {
pp->addReference(this);
LineLayerProperties * w=static_cast<LineLayerProperties *>(pp->currentTabWidget());
w->addLayer(this);
} else {
LineLayerProperties * w=new LineLayerProperties;
pp->addTab(_tabLineLayer, tr("Lines"), w, this);
w->addLayer(this);
}
}
| void SciFigs::LineLayer::attributesHelp | ( | ) | [slot] |
References TRACE.
{
TRACE;
qDebug("SYMBOL TYPE: NoSymbol, Cross, Square, Circle, Triangle, "
"Losange, Star\n"
"PEN STYLE: NoPen, SolidLine, DashLine, DotLine, DashDotLine, "
"DashDotDotLine\n"
"PEN CAP STYLE: FlatCap, SquareCap, RoundCap\n"
"PEN JOIN STYLE: MiterJoin, BevelJoin, RoundJoin\n"
"BRUSH STYLES: NoBrush, SolidPattern, Dense1Pattern, Dense2Pattern, "
"Dense3Pattern, Dense4Pattern, Dense5Pattern, Dense6Pattern, "
"Dense7Pattern, HorPattern, VerPattern, CrossPattern, BDiagPattern, "
"FDiagPattern, DiagCrossPattern\n");
}
| const_iterator SciFigs::LineLayer::begin | ( | ) | const [inline] |
Referenced by boundingRect(), divYbyX(), lines(), mulYbyX(), SciFigs::SlopeEstimator::paintData(), SciFigs::NameLineLayer::paintData(), paintData(), SciFigs::SlopeEstimator::paintText(), SciFigs::NameLineLayer::paintText(), and trackRectangle().
{return _lines.begin();}
| Rect SciFigs::LineLayer::boundingRect | ( | ) | const [virtual] |
Implements SciFigs::GraphContentLayer.
References _pointOptions, begin(), SciFigs::AbstractLine::count(), end(), SciFigs::AbstractLine::isValid(), line(), SciFigs::AbstractLine::point(), TRACE, QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
Referenced by MonoStation::StationResults::maximumAmplitude(), ProcessStatus::setCostMinMax(), MapWindow::setLimits(), AutocorrTargetWidget::setLimits(), MonoStation::WinResults::setLimits(), MonoStation::AbstractSummary::setLimits(), GeopsyGui::ArrayMap::setLimitsArray(), GeopsyGui::ArrayMap::setLimitsCoArray(), CurvesThread::setResultsLimits(), MagnetoTelluricThread::setResultsLimits(), MonoStation::StatisticResults::studentTest(), and ProcessStatus::synchronize().
{
TRACE;
QList<AbstractLine *>::const_iterator it;
// Find the first non null curve with valid points
AbstractLine * line=0;
int j;
for(it=begin() ;it!=end();++it) {
line=*it;
int n=line->count();
for(j=0;j < n;j++ ) {
if(line->isValid(j)) break;
}
if(j < n) break;
}
if(it==end()) {
return Rect();
}
Point p=line->point(j, _pointOptions);
Rect r(p.x(), p.y(), p.x(), p.y());
for( ;it!=end();++it) {
AbstractLine& line=**it;
int n=line.count();
for(int j=0;j < n;j++ ) {
if(line.isValid(j))
r.add(line.point(j, _pointOptions));
}
}
return r;
}
| void SciFigs::LineLayer::clear | ( | ) |
References _currentLine, _lineEditor, and TRACE.
Referenced by Seismic1DThread::clear(), CurvesThread::clear(), MagnetoTelluricThread::clear(), ProcessStatus::clear(), DampingResults::compute(), MonoStation::AbstractSummary::setAverageValues(), MonoStation::AbstractSummary::setStackedValues(), MonoStation::StatisticResults::setStatPlot(), MapWindow::signalsUpdate(), MonoStation::StatisticResults::studentTest(), ~LineLayer(), and SciFigs::NameLineLayer::~NameLineLayer().
{
TRACE;
delete _lineEditor;
_lineEditor=0;
_currentLine=-1;
LayerLocker ll(this);
qDeleteAll(_lines);
_lines.clear();
resetLayerProperties();
}
| int SciFigs::LineLayer::count | ( | ) | const [inline] |
Referenced by Seismic1DThread::addModel(), MagnetoTelluricThread::addModel(), SciFigs::CurveBrowser::clear(), SciFigs::CurveBrowser::count(), GeopsyGui::ArrayMap::countPoints(), AutocorrTargetWidget::curves(), LinearFKActiveResults::exportCurves(), SciFigs::NameLineLayer::legend(), legend(), SciFigs::CurveBrowser::loadMultiColumns(), mouseReleaseEvent(), GeopsyGui::ArrayMap::optimizeRing(), removeEmptyLines(), rmStdDev(), SciFigs::NameLineItem::rowCount(), MonoStation::AbstractSummary::setBubbleValues(), SciFigs::CurveBrowser::setCurrentLayer(), QGpGuiWave::DispersionLimitLayer::setFrequencySampling(), SciFigs::NameLineLayer::setLegend(), setLegend(), setPenColor(), setPenStyle(), setSymBrushColor(), setSymBrushStyle(), setSymPenColor(), setSymPenStyle(), setSymSize(), setSymType(), toggleTrackingAction(), ProcessStatus::updateMisfitCurve(), and xml_writeChildren().
{return _lines.count();}
| void SciFigs::LineLayer::divYbyX | ( | double | constant | ) |
| const_iterator SciFigs::LineLayer::end | ( | ) | const [inline] |
Referenced by boundingRect(), divYbyX(), lines(), mulYbyX(), SciFigs::SlopeEstimator::paintData(), SciFigs::NameLineLayer::paintData(), paintData(), SciFigs::SlopeEstimator::paintText(), SciFigs::NameLineLayer::paintText(), and trackRectangle().
{return _lines.end();}
| ErrorBar SciFigs::LineLayer::errorBar | ( | ) | const [inline] |
{return _errorBar;}
| QString SciFigs::LineLayer::errorBarString | ( | ) | const |
References _errorBar, HorizontalBar, HorizontalLogBar, NoBar, TRACE, and VerticalLogBar.
{
TRACE;
switch(_errorBar) {
case NoBar:
return "NoBar";
case HorizontalBar:
return "HorizontalBar";
case HorizontalLogBar:
return "HorizontalLogBar";
case VerticalLogBar:
return "VerticalLogBar";
default:
return "VerticalBar";
}
}
| virtual bool SciFigs::LineLayer::hasProperties | ( | ) | [inline, virtual] |
Reimplemented from SciFigs::GraphContentLayer.
Reimplemented in SciFigs::NameLineLayer, and SciFigs::GridMaxFollower.
{return true;}
| bool SciFigs::LineLayer::keyPressEvent | ( | QKeyEvent * | e | ) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _lineEditor, SciFigs::GraphContentLayer::deepUpdate(), and TRACE.
{
TRACE;
if(_lineEditor && e->key()==Qt::Key_Escape) {
delete _lineEditor;
_lineEditor=0;
deepUpdate();
return true;
}
return false;
}
| Legend SciFigs::LineLayer::legend | ( | ) | const [virtual] |
Reimplemented in SciFigs::NameLineLayer.
References count(), line(), SciFigs::AbstractLine::pen(), SciFigs::Legend::setPen(), SciFigs::Legend::setSymbol(), SciFigs::Legend::setText(), SciFigs::AbstractLine::symbol(), and TRACE.
Referenced by SciFigs::CurveBrowser::legend().
| AbstractLine* SciFigs::LineLayer::line | ( | int | i | ) | [inline] |
Reimplemented in SciFigs::NameLineLayer.
Referenced by addLine(), MonoStation::StationResults::averageCurve(), boundingRect(), MonoStation::StationResults::clear(), createCurve(), AutocorrTargetWidget::curves(), Simulator::displaySource(), LinearFKActiveResults::exportCurves(), SpacSelector::inverseAt(), legend(), MonoStation::StationResults::maximumCurve(), MonoStation::StationResults::minimumCurve(), StatGridAnalyser::on_freqScroll_valueChanged(), SciFigs::SlopeEstimator::paintData(), SciFigs::SlopeEstimator::paintText(), SpacSelector::selectSamples(), ArrayGui::ArrayResponse::setArray(), ArrayGui::ArrayResponse::setAzimuth(), SciFigs::CurveBrowser::setCurrentLayer(), Seismic1DThread::setModel(), MagnetoTelluricThread::setModel(), MonoStation::StatisticResults::setStatPlot(), MonoStation::StatisticResults::studentTest(), HistogramWidget::toStream(), ProcessStatus::updateMisfitCurve(), xml_member(), and xml_writeChildren().
{return _lines.at(i);}
| const AbstractLine* SciFigs::LineLayer::line | ( | int | i | ) | const [inline] |
Reimplemented in SciFigs::NameLineLayer.
{return _lines.at(i);}
| void SciFigs::LineLayer::lineEdited | ( | int | lineIndex | ) | [signal] |
Referenced by mouseMoveEvent().
| QList< AbstractLine * > SciFigs::LineLayer::lines | ( | ) | const |
| void SciFigs::LineLayer::mouseMoveEvent | ( | const QPoint & | pt, |
| Qt::MouseButtons | buttons, | ||
| Qt::KeyboardModifiers | modifiers | ||
| ) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _lineEditor, SciFigs::GraphContentLayer::deepUpdate(), lineEdited(), SciFigs::LineEditor::lineIndex(), SciFigs::LineEditor::mouseMoveEvent(), and TRACE.
{
TRACE;
if(_lineEditor) {
_lineEditor->mouseMoveEvent(pt);
emit lineEdited(_lineEditor->lineIndex());
deepUpdate();
}
}
| bool SciFigs::LineLayer::mousePressEvent | ( | QMouseEvent * | e, |
| int | id = -1 |
||
| ) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _lineEditor, SciFigs::GraphContentLayer::deepUpdate(), Edit, SciFigs::LineEditor::mousePressEvent(), and TRACE.
{
TRACE;
if(e->button()==Qt::LeftButton) {
if(id==Edit) {
if(_lineEditor) {
if(_lineEditor->mousePressEvent(e)) { // If return true, means that user accept the modification
delete _lineEditor;
_lineEditor=0;
deepUpdate();
}
return false;
} else {
_lineEditor=new LineEditor(this);
if(_lineEditor->mousePressEvent(e)) {
delete _lineEditor;
_lineEditor=0;
deepUpdate();
}
return false;
}
}
}
return true;
}
| bool SciFigs::LineLayer::mouseReleaseEvent | ( | QMouseEvent * | e, |
| int | id = -1 |
||
| ) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _currentLine, _pointOptions, SciFigs::AbstractLine::append(), SciFigs::AbstractLine::count(), count(), SciFigs::GraphContentLayer::deepUpdate(), SciFigs::GraphContentLayer::graphContent(), SciFigs::AbstractLine::insert(), SciFigs::GraphContent::options(), Pick, PickOrdered, SciFigs::AbstractLine::point(), pointAdded(), Select, SciFigs::AbstractLine::setX(), SciFigs::AbstractLine::setY(), TRACE, QGpCoreTools::Point2D::x(), and SciFigs::GraphContentOptions::xs2r().
{
TRACE;
if(e->button()==Qt::LeftButton) {
switch(id) {
case Select: // This mode uses rectangle, hence directly handled by GraphContent
return false;
case Pick:
if(_currentLine>-1 && _currentLine<count()) {
AbstractLine * l=_lines.at(_currentLine);
int i=l->count();
LayerLocker ll(this);
l->append();
l->setX(i, graphContent()->options().xs2r(e->pos().x()) );
l->setY(i, graphContent()->options().ys2r(e->pos().y()), _pointOptions);
emit pointAdded(l, i);
deepUpdate();
}
return true;
case PickOrdered:
if(_currentLine>-1 && _currentLine<count()) {
AbstractLine * l=_lines.at(_currentLine);
double x=graphContent()->options().xs2r(e->pos().x());
int i, n=l->count();
for(i=0; i<n; i++ ) {
if(l->point(i, _pointOptions).x() > x) break;
}
LayerLocker ll(this);
l->insert(i);
l->setX(i, x);
l->setY(i, graphContent()->options().ys2r(e->pos().y()), _pointOptions);
emit pointAdded(l, i);
deepUpdate();
}
return true;
default:
break;
}
}
return false;
}
| void SciFigs::LineLayer::mulYbyX | ( | double | constant | ) |
| void SciFigs::LineLayer::paintData | ( | const LayerPainterRequest & | lp, |
| QPainter & | p, | ||
| double | dotpercm | ||
| ) | const [virtual] |
Implements SciFigs::GraphContentLayer.
Reimplemented in SciFigs::NameLineLayer, and SciFigs::SlopeEstimator.
References begin(), SciFigs::AbstractLine::count(), end(), SciFigs::LayerPainterRequest::options(), SciFigs::LayerPainterRequest::size(), SciFigs::LayerPainterRequest::terminated(), TRACE, SciFigs::GraphContentOptions::xVisMax(), SciFigs::GraphContentOptions::xVisMin(), SciFigs::GraphContentOptions::yVisMax(), and SciFigs::GraphContentOptions::yVisMin().
{
TRACE;
QList<AbstractLine *>::const_iterator it;
const GraphContentOptions& gc=lp.options();
int h=lp.size().height();
Rect r(gc.xVisMin(), gc.yVisMin(), gc.xVisMax(), gc.yVisMax());
for(it=begin() ;it!=end();++it) {
if(lp.terminated()) return;
AbstractLine& line=**it;
drawCurve(gc, p, dotpercm, h, r, line, 0, line.count());
}
}
| void SciFigs::LineLayer::pickLine | ( | AbstractLine * | line | ) | [signal] |
Referenced by toggleTrackingAction().
| void SciFigs::LineLayer::pointAdded | ( | AbstractLine * | line, |
| int | pointIndex | ||
| ) | [signal] |
Referenced by mouseReleaseEvent().
| const CurvePointOptions* SciFigs::LineLayer::pointOptions | ( | ) | const [inline] |
| void SciFigs::LineLayer::removeEmptyLines | ( | ) |
References _currentLine, _lineEditor, SciFigs::AbstractLine::count(), count(), and TRACE.
{
TRACE;
delete _lineEditor;
_lineEditor=0;
LayerLocker ll(this);
for(int i=count() - 1;i >= 0;i-- ) {
AbstractLine * l=_lines.at(i);
if(l->count()==0) {
delete l;
_lines.removeAt(i);
if(i==_currentLine) _currentLine=-1;
}
}
resetLayerProperties();
}
| void SciFigs::LineLayer::removeLine | ( | int | i | ) |
References _currentLine, _lineEditor, and TRACE.
Referenced by ProcessStatus::clearThread(), Simulator::on_removeSource_clicked(), SciFigs::CurveBrowser::remove(), SciFigs::CurveBrowser::removeLine(), and ProcessStatus::removeThread().
{
TRACE;
delete _lineEditor;
_lineEditor=0;
AbstractLine * l=_lines.at(i);
if(i==_currentLine) _currentLine=-1;
LayerLocker ll(this);
delete l;
_lines.removeAt(i);
resetLayerProperties();
}
| void SciFigs::LineLayer::removeLine | ( | AbstractLine * | l | ) |
References _currentLine, _lineEditor, and TRACE.
{
TRACE;
delete _lineEditor;
_lineEditor=0;
int i=_lines.indexOf(l);
if(i==_currentLine) _currentLine=-1;
LayerLocker ll(this);
delete l;
_lines.removeAt(i);
resetLayerProperties();
}
| void SciFigs::LineLayer::removeProperties | ( | PropertyProxy * | pp | ) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
Reimplemented in SciFigs::NameLineLayer.
References QGpGuiTools::PropertyProxy::currentTabWidget(), SciFigs::LineLayerProperties::removeLayer(), QGpGuiTools::PropertyProxy::removeTab(), QGpGuiTools::PropertyProxy::setCurrentTab(), TRACE, and w.
{
TRACE;
if(pp->setCurrentTab(_tabLineLayer)) {
LineLayerProperties * w=static_cast<LineLayerProperties *>(pp->currentTabWidget());
w->removeLayer(this);
pp->removeTab(_tabLineLayer, this);
}
}
Update the property tab, if active. Call this function after changing the number of samples in a curve or changing its values.
References QGpGuiTools::PropertyProxy::currentTabWidget(), SciFigs::GraphContentLayer::graph(), SciFigs::GraphicObject::proxy(), QGpGuiTools::PropertyProxy::setCurrentTab(), TRACE, SciFigs::LineLayerProperties::updateCurrentLayer(), and w.
Referenced by rmStdDev(), MonoStation::StationResults::setAverageLayer(), and ArrayGui::ArrayResponse::setAzimuth().
{
TRACE;
PropertyProxy * pp=graph()->proxy();
if(pp) {
if(pp->setCurrentTab(_tabLineLayer)) {
LineLayerProperties * w=static_cast<LineLayerProperties *>(pp->currentTabWidget());
w->updateCurrentLayer();
}
}
}
| void SciFigs::LineLayer::rmStdDev | ( | int | curveIndex | ) | [slot] |
References _pointOptions, SciFigs::AbstractLine::count(), count(), resetLineProperties(), SciFigs::AbstractLine::setZ(), and TRACE.
{
TRACE;
if(curveIndex>=count()) return;
AbstractLine& l=* _lines.at(curveIndex);
int n=l.count();
LayerLocker ll(this);
for(int i =0; i<n; i++) {
l.setZ(i, 0.0, _pointOptions);
}
resetLineProperties();
}
| void SciFigs::LineLayer::setErrorBar | ( | ErrorBar | b | ) | [inline] |
| void SciFigs::LineLayer::setErrorBar | ( | QString | b | ) |
References HorizontalBar, HorizontalLogBar, NoBar, setErrorBar(), TRACE, VerticalBar, and VerticalLogBar.
{
TRACE;
if(b.count()>0) {
switch(b[0].unicode()) {
case 'N':
setErrorBar(NoBar);
break;
case 'H':
if(b=="HorizontalLogBar")
setErrorBar(HorizontalLogBar);
else
setErrorBar(HorizontalBar);
break;
default:
if(b=="VerticalLogBar")
setErrorBar(VerticalLogBar);
else
setErrorBar(VerticalBar);
break;
}
}
}
| void SciFigs::LineLayer::setLegend | ( | Legend | legend | ) | [virtual, slot] |
Reimplemented in SciFigs::NameLineLayer.
References count(), SciFigs::GraphContentLayer::deepUpdate(), SciFigs::Legend::pen(), SciFigs::AbstractLine::setPen(), SciFigs::AbstractLine::setSymbol(), SciFigs::Legend::symbol(), and TRACE.
Referenced by SciFigs::CurveBrowser::legend(), and ProcessStatus::updatePens().
| void SciFigs::LineLayer::setLogErrorBar | ( | bool | b | ) | [inline] |
{_errorBar=b ? VerticalLogBar : VerticalBar;} // Compatibility
| void SciFigs::LineLayer::setPenColor | ( | int | curveIndex, |
| int | red, | ||
| int | green, | ||
| int | blue | ||
| ) | [slot] |
References count(), SciFigs::AbstractLine::pen(), SciFigs::Pen::setColor(), SciFigs::AbstractLine::setPen(), and TRACE.
| void SciFigs::LineLayer::setPenStyle | ( | int | curveIndex, |
| double | width, | ||
| QString | lineStyle, | ||
| QString | capStyle, | ||
| QString | joinStyle | ||
| ) | [slot] |
References SciFigs::Pen::capStyleValue(), count(), SciFigs::Pen::joinStyleValue(), SciFigs::AbstractLine::pen(), SciFigs::Pen::setCapStyle(), SciFigs::Pen::setJoinStyle(), SciFigs::AbstractLine::setPen(), SciFigs::Pen::setStyle(), SciFigs::Pen::setWidth(), SciFigs::Pen::styleValue(), and TRACE.
{
TRACE;
if(curveIndex>=count()) return;
AbstractLine * l=_lines.at(curveIndex);
Pen p=l->pen();
p.setWidth(width);
p.setStyle(Pen::styleValue(lineStyle) );
p.setCapStyle(Pen::capStyleValue(capStyle) );
p.setJoinStyle(Pen::joinStyleValue(joinStyle) );
LayerLocker ll(this);
l->setPen(p);
}
| void SciFigs::LineLayer::setPointOptions | ( | CurvePointOptions * | o | ) | [inline] |
| void SciFigs::LineLayer::setReferenceLine | ( | AbstractLine * | l | ) |
Defines the type of line implementation to use with this object
References TRACE.
Referenced by SciFigs::ActivityMonitor::ActivityMonitor(), GeopsyGui::ArrayMap::ArrayMap(), MonoStation::AbstractSummary::createAverageGraph(), MonoStation::AbstractSummary::createBubbleGraph(), createCurveNamePlot(), createCurvePlot(), MonoStation::AbstractSummary::createGridCrossSectionGraph(), DampingResults::createObjects(), ArrayGui::ArrayResponse::createObjects(), MonoStation::AbstractSummary::createStackedGraph(), QGpGuiWave::DispersionLimitLayer::DispersionLimitLayer(), SciFigs::GridMaxFollower::GridMaxFollower(), HistogramWidget::HistogramWidget(), Simulator::init(), DinverDCGui::DCModelViewer::initGraphs(), MagnetoTelluricTargetWidget::initLayer(), QGpGuiWave::ModalCurveBrowser::initLayer(), Seismic1DThread::initModelGraphs(), MagnetoTelluricThread::initModelGraphs(), CurvesThread::initResultsGraphs(), MagnetoTelluricThread::initResultsGraphs(), DinverDCGui::GroundModelViewer::minMaxProfiles(), ProcessStatus::ProcessStatus(), MonoStation::StationResults::setGraph(), StatGridAnalyser::setGrid(), SciFigs::SlopeEstimator::SlopeEstimator(), SpacSelector::SpacSelector(), LinearFKActiveResults::stackGrids(), xml_member(), and xml_setProperty().
{
TRACE;
ASSERT(!_referenceLine);
_referenceLine=l;
}
| void SciFigs::LineLayer::setReferencePen | ( | const Pen & | p | ) |
References SciFigs::AbstractLine::setPen(), and TRACE.
Referenced by HistogramWidget::HistogramWidget(), and StatGridAnalyser::setGrid().
| void SciFigs::LineLayer::setReferenceSymbol | ( | const Symbol & | s | ) |
References SciFigs::AbstractLine::setSymbol(), and TRACE.
| void SciFigs::LineLayer::setSelected | ( | int | i, |
| bool | s | ||
| ) |
{
LayerLocker ll(this);
_lines.at(i)->setSelected(s);
}
| void SciFigs::LineLayer::setSymBrushColor | ( | int | curveIndex, |
| int | red, | ||
| int | green, | ||
| int | blue | ||
| ) | [slot] |
| void SciFigs::LineLayer::setSymBrushStyle | ( | int | curveIndex, |
| QString | brushStyle | ||
| ) | [slot] |
References SciFigs::Symbol::brush(), count(), SciFigs::Symbol::setBrush(), SciFigs::AbstractLine::setSymbol(), SciFigs::Brush::styleValue(), SciFigs::AbstractLine::symbol(), and TRACE.
{
TRACE;
if(curveIndex>=(int)count()) return;
AbstractLine * l=_lines.at(curveIndex);
Symbol s=l->symbol();
Brush b=s.brush();
b.setStyle(Brush::styleValue(brushStyle) );
s.setBrush(b);
LayerLocker ll(this);
l->setSymbol(s);
}
| void SciFigs::LineLayer::setSymPenColor | ( | int | curveIndex, |
| int | red, | ||
| int | green, | ||
| int | blue | ||
| ) | [slot] |
| void SciFigs::LineLayer::setSymPenStyle | ( | int | curveIndex, |
| double | width, | ||
| QString | lineStyle, | ||
| QString | capStyle, | ||
| QString | joinStyle | ||
| ) | [slot] |
References SciFigs::Pen::capStyleValue(), count(), SciFigs::Pen::joinStyleValue(), SciFigs::Symbol::pen(), SciFigs::Pen::setCapStyle(), SciFigs::Pen::setJoinStyle(), SciFigs::Symbol::setPen(), SciFigs::Pen::setStyle(), SciFigs::AbstractLine::setSymbol(), SciFigs::Pen::setWidth(), SciFigs::Pen::styleValue(), SciFigs::AbstractLine::symbol(), and TRACE.
{
TRACE;
if(curveIndex>=count()) return;
AbstractLine * l=_lines.at(curveIndex);
Symbol s=l->symbol();
Pen p=s.pen();
p.setWidth(width);
p.setStyle(Pen::styleValue(lineStyle) );
p.setCapStyle(Pen::capStyleValue(capStyle) );
p.setJoinStyle(Pen::joinStyleValue(joinStyle));
s.setPen(p);
LayerLocker ll(this);
l->setSymbol(s);
}
| void SciFigs::LineLayer::setSymSize | ( | int | curveIndex, |
| double | size | ||
| ) | [slot] |
| void SciFigs::LineLayer::setSymType | ( | int | curveIndex, |
| QString | type | ||
| ) | [slot] |
References count(), SciFigs::AbstractLine::setSymbol(), SciFigs::Symbol::setType(), SciFigs::AbstractLine::symbol(), SciFigs::Symbol::symbolValue(), and TRACE.
{
TRACE;
if(curveIndex>=count()) return;
AbstractLine * l=_lines.at(curveIndex);
Symbol s=l->symbol();
s.setType(Symbol::symbolValue(type) );
LayerLocker ll(this);
l->setSymbol(s);
}
| void SciFigs::LineLayer::setVisible | ( | int | i, |
| bool | v | ||
| ) |
{
LayerLocker ll(this);
_lines.at(i)->setVisible(v);
}
| void SciFigs::LineLayer::toggleTrackingAction | ( | bool | checked, |
| int | id = -1 |
||
| ) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _currentLine, addLine(), SciFigs::GraphContentLayer::beginMouseTracking(), count(), Edit, SciFigs::GraphContentLayer::endMouseTracking(), SciFigs::GraphContentLayer::isMouseTracking(), Pick, pickLine(), PickOrdered, Select, SciFigs::LayerMouseTracking::setId(), SciFigs::LayerMouseTracking::setIdleCursor(), SciFigs::LayerMouseTracking::setRectangle(), SciFigs::LayerMouseTracking::showRectangle(), and TRACE.
{
TRACE;
if(id==-1) {
QAction * a=qobject_cast<QAction *>(sender());
if(!a) return;
id=a->data().toInt();
}
if(checked) {
if(!isMouseTracking(id)) {
LayerMouseTracking mt(this);
mt.setId(id);
switch (id) {
case Select:
mt.setIdleCursor(QPixmap(":/images/selectcursor.png"), 4, 4);
mt.setRectangle(true);
mt.showRectangle();
break;
case Pick: {
mt.setIdleCursor(QPixmap(":/images/pickcursor.png"), 4, 4);
_currentLine=count();
emit pickLine(addLine());
break;
}
case PickOrdered: {
mt.setIdleCursor(QPixmap(":/images/pickorderedcursor.png"), 4, 4);
_currentLine=count();
emit pickLine(addLine());
break;
}
case Edit:
mt.setIdleCursor(QPixmap(":/images/editcursor.png"), 4, 4);
break;
default:
return; // Do not start mouse tracking
}
beginMouseTracking(mt);
}
} else {
if(isMouseTracking(id)) {
endMouseTracking(id);
}
}
}
| bool SciFigs::LineLayer::trackRectangle | ( | int | , |
| double | rx1, | ||
| double | ry1, | ||
| double | rx2, | ||
| double | ry2, | ||
| Qt::KeyboardModifiers | m | ||
| ) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _pointOptions, begin(), SciFigs::AbstractLine::count(), SciFigs::GraphContent::deepUpdate(), end(), SciFigs::GraphContentLayer::graphContent(), QGpCoreTools::Rect::includes(), SciFigs::AbstractLine::point(), SciFigs::AbstractLine::setSelected(), and TRACE.
{
TRACE;
Rect r(rx1, ry1, rx2, ry2);
QList<AbstractLine *>::const_iterator it;
Point2D p;
for(it=begin() ;it!=end();++it) {
AbstractLine& line=**it;
int n=line.count();
bool hit=false;
for(int j=0;j < n;j++ ) {
p=line.point(j, _pointOptions);
if(r.includes(p, Rect::AllRect) ) {
hit=true;
break;
}
}
if(hit) line.setSelected(true);
else if( !(m & Qt::SHIFT) ) line.setSelected(false);
}
graphContent() ->deepUpdate();
return true;
}
| bool SciFigs::LineLayer::wheelEvent | ( | QWheelEvent * | e | ) | [virtual] |
Reimplemented from SciFigs::GraphContentLayer.
References _lineEditor, SciFigs::GraphContentLayer::deepUpdate(), TRACE, and SciFigs::LineEditor::wheelEvent().
{
TRACE;
if(_lineEditor) {
_lineEditor->wheelEvent(e);
deepUpdate();
return false;
}
return true;
}
| XMLMember SciFigs::LineLayer::xml_member | ( | XML_MEMBER_ARGS | ) | [protected, virtual] |
Re-implement this function to offer XML restore (children and properties) support to your class.
From tag and map (with contains the attibute value) return a unique identifier under the format of a XMLMember. XMLMember is initialized with 3 types of contructors:
Map of attributes can be inspected in this way (can be achived also in xml_setProperty()):
static const QString tmp("childrenName"); XMLRestoreAttributeIterator it=map.find(tmp); if(it!=map.end()) { // found attribute "childrenName" }
If the map of attributes is not used:
Q_UNUSED(attributes);
if(tag=="x1") return XMLMember(0);
else if(tag=="y1") return XMLMember(1);
else if(tag=="x2") return XMLMember(2);
else if(tag=="y2") return XMLMember(3);
else return XMLMember(XMLMember::Unknown);
Arithmetic operations + and - apply to XMLMember to avoid confusion of property id numbers between inherited objects. Offset 3 corresponds to the number of properties defined in this object.
if(tag=="anInteger") return XMLMember(0); else if(tag=="aString") return XMLMember(1); else if(tag=="aDouble") return XMLMember(2); return AbstractLine::xml_member(tag, attributes, context)+3;
For the arguments of this function use Macro XML_MEMBER_ARGS.
Reimplemented from SciFigs::GraphContentLayer.
References _pointOptions, SciFigs::AbstractLine::clone(), SciFigs::LineFactory::create(), SciFigs::XMLSciFigs::data(), QGpCoreTools::endl(), SciFigs::LineFactory::instance(), line(), setReferenceLine(), QGpCoreTools::tr(), TRACE, and SciFigs::AbstractLine::xml_tagName().
{
TRACE;
static const QString att="index";
XMLSciFigs * scifigsContext=static_cast<XMLSciFigs *>(context);
if(_referenceLine) {
bool correctType;
if(tag==_referenceLine->xml_tagName()) {
correctType=true;
} else { // Recognition of synonyms when comparing to reference type
AbstractLine * line=LineFactory::instance()->create(tag.toString());
correctType=line ? (line->xml_tagName()==_referenceLine->xml_tagName()) : false;
delete line;
}
if(correctType) {
AbstractLine * line;
XMLRestoreAttributeIterator it=attributes.find(att);
if(it!=attributes.end() && it.value().toString()=="reference") {
line=_referenceLine;
} else {
if(scifigsContext->data()) {
line=_referenceLine->clone();
_lines.append(line);
} else {
if(it==attributes.end()) {
App::stream() << tr("Make-up for line: index attribute is mising") << endl;
return XMLMember(XMLMember::Skip);
}
int index=it.value().toInt();
if(index<0 || index>=_lines.count()) {
App::stream() << tr("Make-up for line: index is out of range") << endl;
return XMLMember(XMLMember::Skip);
}
line=_lines.at(index);
}
}
return XMLMember(line, false, new LineLayerContext(scifigsContext, _pointOptions));
}
} else {
AbstractLine * line=LineFactory::instance()->create(tag.toString());
if(line) {
XMLRestoreAttributeIterator it=attributes.find(att);
if(it!=attributes.end() && it.value().toString()=="reference") {
setReferenceLine(line);
} else if(scifigsContext->data()) { // For compatibility if reference line is missing
setReferenceLine(line);
line=line->clone();
_lines.append(line);
}
return XMLMember(line, false, new LineLayerContext(scifigsContext, _pointOptions));
}
}
return GraphContentLayer::xml_member(tag, attributes, context);
}
| bool SciFigs::LineLayer::xml_setProperty | ( | XML_SETPROPERTY_ARGS | ) | [protected, virtual] |
Re-implement this function to offer XML restore properties support to your class.
From memberID set the corresponding property with value content. The map of attributes is given as a supplementary information (not useful in all cases).
For a general case:
Q_UNUSED(attributes); double val=content.toDouble(); switch (memberID) { case 0: _x1=val; return true; case 1: _y1=val; return true; case 2: _x2=val; return true; case 3: _y2=val; return true; default: return false; }
For classes inheriting other classes (see also xml_member())
switch (memberID) { case 0: _anInteger=content.toString(); return true; case 1: _aString=content.toInt(); return true; case 2: _aDouble=content.toDouble(); return true; default: return AbstractLine::xml_setProperty(memberID-3, map, content);
For the arguments of this function use Macro XML_SETPROPERTY_ARGS.
Reimplemented from SciFigs::GraphContentLayer.
References SciFigs::LineFactory::create(), QGpCoreTools::endl(), SciFigs::LineFactory::instance(), setReferenceLine(), QGpCoreTools::tr(), and TRACE.
{
TRACE;
Q_UNUSED(attributes);
switch (memberID) {
case 0: {
AbstractLine * line=LineFactory::instance()->create(content.toString());
if(line) {
setReferenceLine(line);
return true;
} else {
App::stream() << tr("Unknown line type: %1").arg(content.toString()) << endl;
return false;
}
}
default:
return GraphContentLayer::xml_setProperty(memberID, tag, attributes, content, context);
}
}
| virtual const QString& SciFigs::LineLayer::xml_tagName | ( | ) | const [inline, virtual] |
Reimplemented from SciFigs::GraphContentLayer.
Reimplemented in SciFigs::NameLineLayer, and SciFigs::SlopeEstimator.
{return xmlLineLayerTag;}
| void SciFigs::LineLayer::xml_writeChildren | ( | XML_WRITECHILDREN_ARGS | ) | const [protected, virtual] |
Reimplemented from QGpCoreTools::XMLClass.
References _pointOptions, QGpCoreTools::XMLSaveAttributes::add(), count(), line(), TRACE, and QGpCoreTools::XMLClass::xml_save().
{
TRACE;
int n=count();
XMLSciFigs * scifigsContext=static_cast<XMLSciFigs *>(context);
LineLayerContext lineContext(scifigsContext, _pointOptions);
static const QString key("index");
XMLSaveAttributes att;
QString& value=att.add(key);
if(_referenceLine) {
value="reference";
_referenceLine->xml_save(s, &lineContext, att);
}
for(int i=0; i< n ; i++) {
if(line(i)->count()>0) {
value=QString::number(i);
_lines.at(i)->xml_save(s, &lineContext, att);
}
}
}
int SciFigs::LineLayer::_currentLine [protected] |
Referenced by clear(), mouseReleaseEvent(), removeEmptyLines(), removeLine(), and toggleTrackingAction().
ErrorBar SciFigs::LineLayer::_errorBar [protected] |
Referenced by errorBarString().
LineEditor* SciFigs::LineLayer::_lineEditor [protected] |
Referenced by clear(), keyPressEvent(), mouseMoveEvent(), mousePressEvent(), removeEmptyLines(), removeLine(), and wheelEvent().
CurvePointOptions* SciFigs::LineLayer::_pointOptions [protected] |
Referenced by boundingRect(), divYbyX(), mouseReleaseEvent(), mulYbyX(), rmStdDev(), trackRectangle(), xml_member(), xml_writeChildren(), and ~LineLayer().
const QString SciFigs::LineLayer::xmlLineLayerTag = "LineLayer" [static] |
QString SciFigs::LineLayer::errorBar [read, write] |
bool SciFigs::LineLayer::logErrorBars [read, write] |