Public Slots | Signals | Public Member Functions | Protected Attributes
ParamLayerWidget Class Reference

#include <ParamLayerWidget.h>

List of all members.

Public Slots

bool isSelected ()
void on_depthThickness_activated (int)
void on_linkedTo_activated (int)
void on_selected_clicked ()
void on_selected_toggled (bool)
void on_shape_activated (int)
void setCurrentLink (QString link)
void setDHLinks (QStringList &links)
void setFrom (ParamLayer *p)
void setIndex (int index)
void setLinksFrom (ParamLayer *p)
void setProfile (ParamProfileWidget *p)

Signals

void rangeEdited ()
void sizeChanged ()
void updateDHLinks ()
void wantToBeSelected ()

Public Member Functions

int index ()
bool isDepth () const
QString name ()
ParamLayerparamLayer (ParamProfile *profile)
 ParamLayerWidget (QWidget *parent=0, Qt::WFlags fl=0)
void setEditable (bool e)
bool tilted () const
 ~ParamLayerWidget ()

Protected Attributes

int _index
ParamProfileWidget_profile

Constructor & Destructor Documentation

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

References _index, _profile, rangeEdited(), sizeChanged(), and TRACE.

    : QWidget(parent, fl)
{
  TRACE;
  setupUi(this);
  _profile=0;
  _index=-1;

  QPalette palette;
  palette.setColor(topLine->foregroundRole(), Qt::darkGray);
  topLine->setPalette(palette);
  middleLine->setPalette(palette);

  connect(topParam, SIGNAL(rangeEdited()), this, SIGNAL(rangeEdited()) );
  connect(bottomParam, SIGNAL(rangeEdited()), this, SIGNAL(rangeEdited()) );
  connect(dhParam, SIGNAL(rangeEdited()), this, SIGNAL(rangeEdited()) );
  connect(topParam, SIGNAL(rangeEdited()), this, SIGNAL(sizeChanged()) );
  connect(bottomParam, SIGNAL(rangeEdited()), this, SIGNAL(sizeChanged()) );
  connect(dhParam, SIGNAL(rangeEdited()), this, SIGNAL(sizeChanged()) );
}

References TRACE.

{
  TRACE;
  // no need to delete child widgets, Qt does it all for us
}

Member Function Documentation

int ParamLayerWidget::index ( ) [inline]
bool ParamLayerWidget::isDepth ( ) const

References _index, and TRACE.

Referenced by paramLayer().

{
  TRACE;
  if(_index ==0) {
    return true;
  } else {
    switch(depthThickness->currentIndex()) {
    case 0:
    case 2:
      return true;
    default:
      return false;
    }
  }
}

References _index, name(), and TRACE.

Referenced by setIndex(), and setProfile().

{
  TRACE;
  switch (depthThickness->currentIndex()) {
  case 1:
    if(_index>0) {
      dhParam->pName->setText( "H" + name() + ":" );
    } else {
      dhParam->pName->setText( "D" + name() + ":" );
    }
    break;
  default:
    dhParam->pName->setText( "D" + name() + ":" );
    break;
  }
}

References _index, _profile, ParamProfileWidget::nLayers(), and TRACE.

Referenced by setCurrentLink(), setIndex(), and setProfile().

{
  TRACE;
  if(linkedTo->currentIndex() > -1) {
    if(linkedTo->currentIndex() > 0 || _index==_profile->nLayers()-1) {
      dhParam->hide();
      depthThickness->hide();
    } else {
      depthThickness->show();
      dhParam->show();
      if(_index==0) depthThickness->setCurrentIndex(0);
    }
  }
}

References TRACE.

{
  TRACE;
  selected->setChecked(true);
}
void ParamLayerWidget::on_selected_toggled ( bool  ) [slot]

References TRACE, and wantToBeSelected().

{
  TRACE;
  if(selected->isChecked()) {
    emit wantToBeSelected();
    selected->blockSignals(true);
    selected->setChecked(true);
    selected->blockSignals(false);
  }
}
void ParamLayerWidget::on_shape_activated ( int  ) [slot]

References _index, _profile, MSG_ID, name(), ParamProfileWidget::nLayers(), sizeChanged(), and TRACE.

Referenced by setIndex(), and setProfile().

{
  TRACE;
  if(_profile && _index==_profile->nLayers()-1) {
    if(shape->currentIndex()!=0)
      Message::warning(MSG_ID, "Layer", "Nothing else than Uniform is accepted "
                           "for the bottom half-space.", Message::ok());
    shape->setCurrentIndex(0);
  }
  if(shape->currentIndex() > 0) {
    bottomParam->show();
    topParam->pName->setText( "Top " + name() + ":" );
    nSubLayersLabel->show();
    nSubLayers->show();
  } else {
    bottomParam->hide();
    topParam->pName->setText(name() + ":" );
    nSubLayersLabel->hide();
    nSubLayers->hide();
  }
  emit sizeChanged();
}

References _index, DinverDCCore::ParamLayer::bottomMinimumValue(), isDepth(), DinverDCCore::ParamLayer::minimumDepth(), DinverDCCore::ParamLayer::setBottomMaximumValue(), DinverDCCore::ParamLayer::setBottomMinimumValue(), DinverDCCore::ParamLayer::setDepth(), DinverDCCore::ParamLayer::setLastParamCondition(), DinverDCCore::ParamLayer::setLinkedTo(), DinverDCCore::ParamLayer::setMaximumDepth(), DinverDCCore::ParamLayer::setMinimumDepth(), DinverDCCore::ParamLayer::setNSubLayers(), DinverDCCore::ParamLayer::setShape(), DinverDCCore::ParamLayer::setTopMaximumValue(), DinverDCCore::ParamLayer::setTopMinimumValue(), DinverDCCore::ParamLayer::topMinimumValue(), and TRACE.

{
  TRACE;
  ParamLayer * layer=new ParamLayer(profile, _index);
  switch (shape->currentIndex()) {
  case 1: layer->setShape(ParamLayer::Linear); break;
  case 2: layer->setShape(ParamLayer::LinearIncrease); break;
  case 3: layer->setShape(ParamLayer::LinearDecrease); break;
  case 4: layer->setShape(ParamLayer::PowerLaw); break;
  default: layer->setShape(ParamLayer::Uniform); break;
  }
  layer->setLastParamCondition(lastParamCondition->isChecked());
  layer->setNSubLayers(nSubLayers->value());
  layer->setTopMinimumValue(topParam->pMin->value());
  if(topParam->pFixed->isChecked())
    layer->setTopMaximumValue(layer->topMinimumValue());
  else
    layer->setTopMaximumValue(topParam->pMax->value());
  layer->setBottomMinimumValue(bottomParam->pMin->value());
  if(bottomParam->pFixed->isChecked())
    layer->setBottomMaximumValue(layer->bottomMinimumValue());
  else
    layer->setBottomMaximumValue(bottomParam->pMax->value());
  layer->setLinkedTo(linkedTo->currentText());
  layer->setDepth(isDepth());
  layer->setMinimumDepth(dhParam->pMin->value());
  if(dhParam->pFixed->isChecked())
    layer->setMaximumDepth(layer->minimumDepth());
  else
    layer->setMaximumDepth(dhParam->pMax->value());
  return layer;
}
void ParamLayerWidget::rangeEdited ( ) [signal]

Referenced by ParamLayerWidget().

void ParamLayerWidget::setCurrentLink ( QString  link) [slot]

References on_linkedTo_activated(), and TRACE.

Referenced by setDHLinks(), and setLinksFrom().

{
  TRACE;
  int n=linkedTo->count();
  for(int i=0;i < n;i++ ) {
    if(linkedTo->itemText(i)==link) {
      linkedTo->setCurrentIndex(i);
      on_linkedTo_activated(0);
      return;
    }
  }
  linkedTo->setCurrentIndex(0);
  on_linkedTo_activated(0);
}
void ParamLayerWidget::setDHLinks ( QStringList &  links) [slot]

Set the list of possible links only if the layer is already initialized (_iLayer>=0)

References _index, name(), setCurrentLink(), and TRACE.

{
  TRACE;
  if(_index==-1) return;
  QString linkName=linkedTo->currentText();
  linkedTo->blockSignals(true);
  linkedTo->clear();
  linkedTo->addItem( "Not linked" );
  for(QStringList::Iterator it=links.begin();it!=links.end();++it) {
    if(*it!=name()) linkedTo->addItem( *it);
  }
  linkedTo->blockSignals(false);
  setCurrentLink(linkName);
}

References TRACE.

{
  TRACE;
  selected->setEnabled(e);
  shape->setEnabled(e);
  lastParamCondition->setEnabled(e);
  nSubLayers->setEnabled(e);
  nSubLayersLabel->setEnabled(e);
  linkedTo->setEnabled(e);
  linkedToLabel->setEnabled(e);
  depthThickness->setEnabled(e);
  topParam->setEnabled(e);
  bottomParam->setEnabled(e);
  dhParam->setEnabled(e);
}
void ParamLayerWidget::setFrom ( ParamLayer p) [slot]

References _index, _profile, DinverDCCore::ParamLayer::bottomMaximumValue(), DinverDCCore::ParamLayer::bottomMinimumValue(), ParamProfileWidget::defaultCondition(), DinverDCCore::ParamLayer::isDepth(), DinverDCCore::ParamLayer::isLastParamCondition(), DinverDCCore::ParamLayer::maximumDepth(), DinverDCCore::ParamLayer::minimumDepth(), name(), DinverDCCore::ParamLayer::nSubLayers(), DinverDCCore::ParamLayer::shape(), ParamProfileWidget::shortName(), str, DinverDCCore::ParamLayer::topMaximumValue(), DinverDCCore::ParamLayer::topMinimumValue(), and TRACE.

Referenced by ParamProfileWidget::setFrom().

{
  TRACE;
  QString str=name();
  int iShape=0;
  switch (p->shape()) {
  case ParamLayer::Linear: iShape=1; break;
  case ParamLayer::LinearIncrease: iShape=2; break;
  case ParamLayer::LinearDecrease: iShape=3; break;
  case ParamLayer::PowerLaw: iShape=4; break;
  case ParamLayer::Uniform: iShape=0; break;
  }
  shape->setCurrentIndex(iShape);
  if(_index>0) {
    switch(_profile->defaultCondition()) {
    case SimpleCondition::LessThan:
      lastParamCondition->setText(( _profile->shortName() + "%1" ).arg(_index - 1) + " < " + str);
      lastParamCondition->setChecked(p->isLastParamCondition());
      lastParamCondition->show();
      break;
    case SimpleCondition::GreaterThan:
      lastParamCondition->setText(( _profile->shortName() + "%1" ).arg(_index - 1) + " > " + str);
      lastParamCondition->setChecked(p->isLastParamCondition());
      lastParamCondition->show();
      break;
    case SimpleCondition::NoCondition:
      lastParamCondition->setChecked(false);
      lastParamCondition->hide();
    }
  }

  nSubLayers->setValue(p->nSubLayers());

  topParam->pMin->setValue(p->topMinimumValue());
  topParam->pMax->setValue(p->topMaximumValue());
  topParam->pFixed->setChecked(p->topMinimumValue()==p->topMaximumValue());
  bottomParam->pMin->setValue(p->bottomMinimumValue());
  bottomParam->pMax->setValue(p->bottomMaximumValue());
  bottomParam->pFixed->setChecked(p->bottomMinimumValue()==p->bottomMaximumValue());

  dhParam->pMin->setValue(p->minimumDepth());
  dhParam->pMax->setValue(p->maximumDepth());
  dhParam->pFixed->setChecked(p->minimumDepth()==p->maximumDepth());
  depthThickness->setCurrentIndex(p->isDepth() ? 0 : 1);
}
void ParamLayerWidget::setIndex ( int  index) [slot]

Call it every time the index of this layer may change (move up or down the layer)

References _index, _profile, ParamProfileWidget::defaultCondition(), index(), name(), ParamProfileWidget::nLayers(), on_depthThickness_activated(), on_linkedTo_activated(), on_shape_activated(), ParamProfileWidget::shortName(), str, TRACE, and updateDHLinks().

Referenced by ParamProfileWidget::addLayer(), ParamProfileWidget::createLayer(), ParamProfileWidget::moveDown_clicked(), and ParamProfileWidget::moveUp_clicked().

{
  TRACE;
  _index=index;
  QString str=name();
  topParam->pName->setText( "Top " + str + ":" );
  bottomParam->pName->setText( "Bottom " + str + ":" );
  if(index > 0) {
    switch(_profile->defaultCondition()) {
    case SimpleCondition::LessThan:
      lastParamCondition->show();
      lastParamCondition->setText(( _profile->shortName() + "%1" ).arg(index - 1) + " < " + str);
      break;
    case SimpleCondition::GreaterThan:
      lastParamCondition->show();
      lastParamCondition->setText(( _profile->shortName() + "%1" ).arg(index - 1) + " > " + str);
      break;
    case SimpleCondition::NoCondition:
      lastParamCondition->setChecked(false);
      lastParamCondition->hide();
      break;
    }
  } else {
    lastParamCondition->hide();
    while(depthThickness->count()>1) depthThickness->removeItem(1);
    depthThickness->setCurrentIndex(0);
  }
  on_linkedTo_activated(0);
  on_depthThickness_activated(0);
  if(_profile && _index==_profile->nLayers()-1) {
    depthThickness->hide();
    linkedTo->hide();
    linkedToLabel->hide();
    dhParam->hide();
  } else {
    depthThickness->show();
    linkedTo->show();
    linkedToLabel->show();
    if(linkedTo->currentIndex()==0) {
      dhParam->show();
    }
  }
  on_shape_activated(0);
  emit updateDHLinks();
}

Call it once to propagate profile information to this layer

References _profile, ParamProfileWidget::defaultMaximum(), ParamProfileWidget::defaultMinimum(), on_depthThickness_activated(), on_linkedTo_activated(), on_shape_activated(), TRACE, and ParamProfileWidget::unit().

Referenced by ParamProfileWidget::createLayer().

{
  TRACE;
  _profile=p;
  if(_profile) {
    topParam->pUnit->setText(p->unit());
    topParam->pMin->setValue(p->defaultMinimum());
    topParam->pMax->setValue(p->defaultMaximum());
    bottomParam->pUnit->setText(p->unit());
    bottomParam->pMin->setValue(p->defaultMinimum());
    bottomParam->pMax->setValue(p->defaultMaximum());
    if(p->defaultMinimum()==p->defaultMaximum()) {
      topParam->pFixed->setChecked(true);
      bottomParam->pFixed->setChecked(true);
    }
  }
  dhParam->pUnit->setText( "m" );
  dhParam->pMin->setValue(1.0);
  dhParam->pMax->setValue(100.0);

  on_shape_activated(0);
  on_depthThickness_activated(0);
  on_linkedTo_activated(0);
}
void ParamLayerWidget::sizeChanged ( ) [signal]
bool ParamLayerWidget::tilted ( ) const

References _index, and TRACE.

{
  TRACE;
  return depthThickness->currentIndex()>1 || (_index==0 && depthThickness->currentIndex()>0);
}

Referenced by setIndex().

Referenced by on_selected_toggled().


Member Data Documentation

int ParamLayerWidget::_index [protected]

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