Public Member Functions
AutocorrTargetWidget Class Reference

Brief description of class still missing. More...

#include <AutocorrTargetWidget.h>

Inheritance diagram for AutocorrTargetWidget:
QGpGuiWave::ModalCurveBrowser SciFigs::CurveBrowser

List of all members.

Public Member Functions

ModalCurveaddCurve (int index)
void addCurves (const AutocorrCurves &newCurves)
 AutocorrTargetWidget (QWidget *parent=0)
virtual void clear ()
int count ()
AutocorrCurves curves ()
virtual void load ()
virtual void setEditable (bool e)
void setLimits ()
 ~AutocorrTargetWidget ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

AutocorrTargetWidget::AutocorrTargetWidget ( QWidget *  parent = 0)

References SciFigs::CurveBrowser::dock(), QGpGuiWave::ModalCurveBrowser::setModeFlags(), QGpGuiWave::ModalCurveBrowser::setProxy(), QGpCoreTools::tr(), and TRACE.

  : ModalCurveBrowser(parent)
{
  TRACE;

  _rings=new RingBrowser(this);
  qobject_cast<QVBoxLayout *>(frame->layout())->insertWidget(0, _rings);
  connect(_rings, SIGNAL(currentChanged(int)), this, SLOT(setCurrentRing(int) ));
  connect(_rings, SIGNAL(added(int)), this, SLOT(addRing()) );
  connect(_rings, SIGNAL(removed(int)), this, SLOT(removeRing(int) ));
  connect(_rings, SIGNAL(nameChanged(int, QString)), this, SLOT(setRingName(int, QString) ));

  setProxy(new AutocorrProxy);
  setModeFlags(ModeDelegate::Phase |
               ModeDelegate::Vertical |
               ModeDelegate::Radial |
               ModeDelegate::Transverse);
  //curvesChanged();

  _sheet=new GraphicSheet(this);
  dock(_sheet);
  setWindowTitle(tr("Autocorr target"));
  resize(QSize(500, 300).expandedTo(minimumSizeHint()) );
  Settings::getSize(this, "AutocorrTargetWidget" );
}

References TRACE.

{
  TRACE;
  Settings::setSize(this, "AutocorrTargetWidget" );
}

Member Function Documentation

References SciFigs::LineLayer::addLine(), QGpGuiWave::ModalLine::curve(), SciFigs::GraphContentLayer::deepUpdate(), SciFigs::AbstractLine::setPen(), SciFigs::AbstractLine::setSymbol(), and TRACE.

Referenced by addCurves().

{
  TRACE;
  LineLayer * plot=_ringLayers.at(index);
  ModalLine * l=static_cast<ModalLine *>(plot->addLine());
  l->setPen(Pen( Qt::black, 0.6) );
  l->setSymbol(Symbol(Symbol::Circle, 1.2, Pen(Qt::black, 0.3),
                      Brush(Qt::black, Qt::SolidPattern)));
  plot->deepUpdate();
  return l->curve();
}
void AutocorrTargetWidget::addCurves ( const AutocorrCurves newCurves)

References addCurve(), count(), QGpCoreWave::AutocorrCurves::ring(), QGpCoreWave::AutocorrCurves::ringCount(), QGpCoreWave::AutocorrCurves::ringCurves(), setLimits(), and TRACE.

Referenced by TargetListWidget::setFrom().

{
  TRACE;
  int curvesCount=count();
  for(int i=0; i<newCurves.ringCount();i++) {
    int ringIndex=addRing(newCurves.ring(i));
    const QList<ModalCurve>& l=newCurves.ringCurves(i);
    for(QList<ModalCurve>::ConstIterator it=l.begin();it!=l.end();it++ ) {
      addCurve(ringIndex)=*it;
    }
  }
  if(curvesCount==0) setLimits();
  setCurrentRing(0);
  //curvesChanged();
}
void AutocorrTargetWidget::clear ( ) [virtual]

Reimplemented from QGpGuiWave::ModalCurveBrowser.

References RingBrowser::clear(), SciFigs::GraphicSheet::clear(), SciFigs::CurveBrowser::setCurrentLayer(), and TRACE.

Referenced by TargetListWidget::setFrom().

{
  TRACE;
  ModalCurveBrowser::clear();
  setCurrentLayer(0);
  _rings->clear();
  _sheet->clear(true);
  _ringLabels.clear();
  _ringLayers.clear();
}

Return total number of curves for all rings

References TRACE.

Referenced by addCurves(), and TargetListWidget::updateInfo().

{
  TRACE;
  int n=_ringLayers.count();
  int total=0;
  for(int i=0; i<n;i++ ) {
    total+=_ringLayers.at(i)->count();
  }
  return total;
}

References QGpCoreWave::AutocorrCurves::addCurve(), QGpCoreWave::AutocorrCurves::addRing(), RingBrowser::at(), RingBrowser::count(), SciFigs::LineLayer::count(), QGpCoreWave::AutocorrCurves::curves(), SciFigs::LineLayer::line(), and TRACE.

Referenced by TargetListWidget::targetList().

{
  TRACE;
  AutocorrCurves c;
  int nRings=_rings->count();
  for(int iRing=0;iRing<nRings;iRing++) {
    c.addRing(_rings->at(iRing));
    LineLayer * l=_ringLayers.at(iRing);
    int n=l->count();
    for(int j=0;j<n;j++) {
      ModalCurve& curve=static_cast<ModalLine *>(l->line(j))->curve();
      c.addCurve(curve);
      // Ring index is stored inside the modal curve modes, set the definitive index
      QList<Mode>& modes=c.curves().last().modes();
      for(QList<Mode>::Iterator it=modes.begin(); it!=modes.end(); it++ ) {
        it->setRingIndex(iRing);
      }
    }
  }
  return c;
}
void AutocorrTargetWidget::load ( ) [virtual]

Can be overloaded to add support for custom file format import. Mandatory to call curvesChanged() at the end. And even better to adjust graph limits if the number of curves was initialty zero.

Reimplemented from SciFigs::CurveBrowser.

References RingBrowser::add(), RingBrowser::count(), RingBrowser::current(), SciFigs::CurveBrowser::currentLayer(), fileName, setLimits(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  MessageContext();
  QStringList fileNames=Message::getOpenFileNames(tr("Load autocorr to fit"),
                                                       tr("All files (*);;"
                                                          "Text file (*);;"
                                                          "Dinver targets (*.target);;"
                                                          "Dinver environment (*.dinver);;"
                                                          "Cap SPAC output (*.stmap);;"
                                                          "na_viewer reports (*.report)"));
  if( !fileNames.isEmpty()) {
    // Count the number of rings and the number of rings with no curve for a correct setLimit after load
    int ringCount=_ringLayers.count();
    int nullRingCount=emptyRingCount();
    ColumnTextParser * parser=0;
    int n=fileNames.count();
    for(int i=0;i<n;i++) {
      QString fileName=fileNames.at(i);
      QFileInfo fi(fileName);
      if(fi.suffix()=="target" || fi.suffix()=="dinver") {
        loadTarget(fileName);
      } else if(fi.suffix()=="stmap") {
        loadCap(fileName);
      } else if(fi.suffix()=="report") {
        loadNaViewerReport(fileName);
      } else {
        if(_rings->count()==0) _rings->add();
        ModalCurveBrowser::loadMultiColumns(fileName, i==n-1, parser);
      }
    }
    delete parser;
    if(currentLayer()) {
      if(ringCount!=_ringLayers.count() || nullRingCount!=emptyRingCount()) {
        setLimits();
      }
      //curvesChanged();
    }
    // Force refreshment of curve area
    setCurrentRing(_rings->current());
  }
}
void AutocorrTargetWidget::setEditable ( bool  e) [virtual]

Set the browser as editable or not.

Reimplemented from QGpGuiWave::ModalCurveBrowser.

References RingBrowser::setEditable(), and TRACE.

Referenced by TargetListWidget::setEditable().

void AutocorrTargetWidget::setLimits ( ) [virtual]

Reimplemented from SciFigs::CurveBrowser.

References SciFigs::LineLayer::boundingRect(), SciFigs::GraphContentLayer::graph(), SciFigs::Axis::setRange(), TRACE, QGpCoreTools::Rect::x1(), QGpCoreTools::Rect::x2(), SciFigs::AxisWindow::xAxis(), and SciFigs::AxisWindow::yAxis().

Referenced by addCurves(), and load().

{
  TRACE;
  int n=_ringLayers.count();
  for(int i=0; i<n;i++ ) {
    LineLayer * l=_ringLayers.at(i);
    AxisWindow * w=l->graph();
    Rect r=l->boundingRect();
    w->xAxis()->setRange(r.x1()*0.95, r.x2()*1.05);
    w->yAxis()->setRange(-1.05, 1.05);
  }
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines