All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Slots | Signals | Public Member Functions
GeopsyGui::TimeRangeParameterWidget Class Reference

#include <TimeRangeParameterWidget.h>

List of all members.

Public Slots

void on_fromType_activated (int)
void on_toType_activated (int)
void setPicks (Signal *sig)
void updateAllFields ()

Signals

void parametersChanged ()

Public Member Functions

void getParameters (TimeRangeParameters &param) const
void removeUseFirstOnly ()
void setParameters (const TimeRangeParameters &param)
void setPicks (SubSignalPool *subPool)
 TimeRangeParameterWidget (QWidget *parent=0, Qt::WFlags fl=0)

Constructor & Destructor Documentation

GeopsyGui::TimeRangeParameterWidget::TimeRangeParameterWidget ( QWidget *  parent = 0,
Qt::WFlags  fl = 0 
)

References parametersChanged(), and TRACE.

    : QWidget(parent, fl)
{
  TRACE;
  setupUi(this);

  // signals and slots connections
  connect(fromType, SIGNAL(activated(int)), this, SIGNAL(parametersChanged()));
  connect(toType, SIGNAL(activated(int)), this, SIGNAL(parametersChanged()));
  connect(from, SIGNAL(textChanged(const QString&)), this, SIGNAL(parametersChanged()));
  connect(to, SIGNAL(textChanged(const QString&)), this, SIGNAL(parametersChanged()));
  connect(useFirstOnly, SIGNAL(stateChanged(int)), this, SIGNAL(parametersChanged()));

  _firstSignal=0;

  // Init to default value
  fromType->setCurrentIndex(1);
  toType->setCurrentIndex(1);
  useFirstOnly->hide();

  _pickNames=TimePick::registeredNames();
  fromType->addItems(_pickNames);
  toType->addItems(_pickNames);
}

Member Function Documentation

References GeopsyCore::TimeRange::end(), GeopsyCore::Signal::endTime(), GeopsyCore::TimeRangeParameters::setDeltaT(), GeopsyCore::TimeRange::setEnd(), GeopsyCore::TimeRangeParameters::setEndPick(), GeopsyCore::TimeRangeParameters::setEndType(), GeopsyCore::TimeRange::setStart(), GeopsyCore::TimeRangeParameters::setStartPick(), GeopsyCore::TimeRangeParameters::setStartType(), GeopsyCore::TimeRangeParameters::setUseFirstSignal(), GeopsyCore::TimeRange::start(), GeopsyCore::Signal::t0(), GeopsyCore::Signal::timePick(), and TRACE.

{
  TRACE;
  int i=fromType->currentIndex();
  switch (i) {
  case 0:
    param.setStartType(TimeRangeParameters::Absolute);
    param.setStart(Number::timeToSeconds(from->text()));
    break;
  case 1:
    param.setStartType(TimeRangeParameters::Signal);
    if(_firstSignal) {
      double t;
      if(useFirstOnly && useFirstOnly->isChecked()) {
        t=_firstSignal->t0();
        param.setUseFirstSignal(true);
      } else {
        t=_totalRange.start();
      }
      param.setStart(t);
    }
    break;
  case 2:
    param.setStartType(TimeRangeParameters::Delta);
    param.setDeltaT(Number::timeToSeconds(from->text()));
    break;
  default:
    param.setStartType(TimeRangeParameters::Pick);
    param.setStartPick(fromType->currentText());
    if(useFirstOnly && useFirstOnly->isChecked()) {
      param.setUseFirstSignal(true);
    }
    if(_firstSignal) { // By default set time pick of first signal (overwritten later in most cases)
      param.setStart(_firstSignal->timePick(fromType->currentText()));
    }
    break;
  }
  i=toType->currentIndex();
  switch (i) {
  case 0:
    param.setEndType(TimeRangeParameters::Absolute);
    param.setEnd(Number::timeToSeconds(to->text()));
    break;
  case 1:
    param.setEndType(TimeRangeParameters::Signal);
    if(_firstSignal) {
      double t;
      if(useFirstOnly && useFirstOnly->isChecked()) {
        t=_firstSignal->endTime();
        param.setUseFirstSignal(true);
      } else {
        t=_totalRange.end();
      }
      param.setEnd(t);
    }
    break;
  case 2:
    param.setEndType(TimeRangeParameters::Delta);
    param.setDeltaT(Number::timeToSeconds(to->text()));
    break;
  default:
    param.setEndType(TimeRangeParameters::Pick);
    param.setEndPick(toType->currentText());
    if(useFirstOnly && useFirstOnly->isChecked()) {
      param.setUseFirstSignal(true);
    }
    if(_firstSignal) { // By default set time pick of first signal (overwritten later in most cases)
      param.setEnd(_firstSignal->timePick(toType->currentText()));
    }
    break;
  }
}

References GeopsyCore::TimeRange::start(), GeopsyCore::Signal::t0(), GeopsyCore::Signal::timePick(), and TRACE.

Referenced by setPicks(), and updateAllFields().

{
  TRACE;
  switch (fromType->currentIndex()) {
  case 0:
    from->setEnabled(true);
    if(useFirstOnly) {
      useFirstOnly->setEnabled(toType->currentIndex()!=0 && toType->currentIndex()!=2);
    }
    break;
  case 2:
    from->setEnabled(true);
    if(useFirstOnly) {
      useFirstOnly->setEnabled(toType->currentIndex()!=0 && toType->currentIndex()!=2);
    }
    if(toType->currentIndex()==2) {
      toType->setCurrentIndex(1);
    }
    break;
  case 1:
    from->setEnabled(false);
    if(_firstSignal) {
      double t;
      if(useFirstOnly && useFirstOnly->isChecked()) {
       t=_firstSignal->t0();
      } else {
        t=_totalRange.start();
      }
      from->setText(Number::secondsToTime(t, Number::Weeks, 4));
    }
    if(useFirstOnly) {
      useFirstOnly->setEnabled(true);
    }
    break;
  default:
    if(_firstSignal) {
      from->setText(Number::secondsToTime(_firstSignal->timePick(fromType->currentText()), Number::Weeks, 4));
    }
    from->setEnabled(false);
    if(useFirstOnly) {
      useFirstOnly->setEnabled(true);
    }
    break;
  }
}

References GeopsyCore::TimeRange::end(), GeopsyCore::Signal::endTime(), GeopsyCore::Signal::timePick(), and TRACE.

Referenced by setPicks(), and updateAllFields().

{
  TRACE;
  switch (toType->currentIndex()) {
  case 0:
    to->setEnabled(true);
    if(useFirstOnly) {
      useFirstOnly->setEnabled(fromType->currentIndex()!=0 && fromType->currentIndex()!=2);
    }
    break;
  case 2:
    to->setEnabled(true);
    if(useFirstOnly) {
      useFirstOnly->setEnabled(fromType->currentIndex()!=0 && fromType->currentIndex()!=2);
    }
    if(fromType->currentIndex()==2) {
      fromType->setCurrentIndex(1);
    }
    break;
  case 1:
    if(_firstSignal) {
      double t;
      if(useFirstOnly && useFirstOnly->isChecked()) {
       t=_firstSignal->endTime();
      } else {
        t=_totalRange.end();
      }
      to->setText(Number::secondsToTime(t, Number::Weeks, 4));
    }
    to->setEnabled(false);
    if(useFirstOnly)
      useFirstOnly->setEnabled(true);
    break;
  default:
    if(_firstSignal) {
      to->setText(Number::secondsToTime(_firstSignal->timePick(toType->currentText()), Number::Weeks, 4));
    }
    to->setEnabled(false);
    if(useFirstOnly)
      useFirstOnly->setEnabled(true);
    break;
  }
}

Removes checkbox and use first signal properties only.

References TRACE.

{
  TRACE;
  delete useFirstOnly;
  useFirstOnly=0;
}

References GeopsyCore::TimeRange::end(), GeopsyCore::TimeRangeParameters::endPick(), GeopsyCore::TimeRangeParameters::endType(), GeopsyCore::TimeRange::start(), GeopsyCore::TimeRangeParameters::startPick(), GeopsyCore::TimeRangeParameters::startType(), TRACE, and GeopsyCore::TimeRangeParameters::useFirstSignal().

{
  TRACE;
  if(useFirstOnly) {
    useFirstOnly->setChecked(param.useFirstSignal());
  }
  switch(param.startType()) {
  case TimeRangeParameters::Absolute:
    fromType->setCurrentIndex(0);
    from->setText(Number::secondsToTime(param.start()));
    break;
  case TimeRangeParameters::Signal:
    fromType->setCurrentIndex(1);
    break;
  case TimeRangeParameters::Delta:
    fromType->setCurrentIndex(2);
    break;
  case TimeRangeParameters::Pick:
    if(!param.startPick().isEmpty()) {
      int index=TimePick::registeredNames().indexOf(param.startPick());
      if(index>-1) {
        fromType->setCurrentIndex(3+index);
      }
    }
    break;
  }
  switch(param.endType()) {
  case TimeRangeParameters::Absolute:
    toType->setCurrentIndex(0);
    to->setText(Number::secondsToTime(param.end()));
    break;
  case TimeRangeParameters::Signal:
    toType->setCurrentIndex(1);
    break;
  case TimeRangeParameters::Delta:
    toType->setCurrentIndex(2);
    break;
  case TimeRangeParameters::Pick:
    if(!param.endPick().isEmpty()) {
      int index=TimePick::registeredNames().indexOf(param.endPick());
      if(index>-1) {
        toType->setCurrentIndex(3+index);
      }
    }
    break;
  }
}

References GeopsyCore::SubSignalPool::first(), GeopsyCore::SubSignalPool::isEmpty(), GeopsyCore::SubSignalPool::timeRange(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  if(!subPool || subPool->isEmpty()) {
    _firstSignal=0;
    _totalRange=TimeRange();
  } else {
    _firstSignal=subPool->first();
    if(useFirstOnly) {
      useFirstOnly->setText(tr("Use only the properties of the first signal"));
      useFirstOnly->show();
    }
    _totalRange=subPool->timeRange();
  }
  setPicks(_firstSignal);
}

References GeopsyCore::Signal::name(), on_fromType_activated(), on_toType_activated(), QGpCoreTools::tr(), and TRACE.

{
  TRACE;
  QStringList pickNames=TimePick::registeredNames();
  if(pickNames!=_pickNames) {
    _pickNames=TimePick::registeredNames();
    while(fromType->count()>3) {
      fromType->removeItem(3);
    }
    fromType->addItems(_pickNames);
    while(toType->count()>3) {
      toType->removeItem(3);
    }
    toType->addItems(_pickNames);
  }
  if(_firstSignal && _firstSignal==sig && useFirstOnly) {
      useFirstOnly->setToolTip(tr("Properties means 'start', 'end' and 'picks' of first signal\n"
                                   "(signal named '%1'). If this option is checked,\n"
                                   "the individual properties of the other signals are ignored.")
                                .arg(_firstSignal->name()));
  }
  on_fromType_activated(0);
  on_toType_activated(0);
}

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