Signals | Public Member Functions | Static Public Attributes | Protected Member Functions
ModelSlider Class Reference

Brief description of class still missing. More...

#include <ModelSlider.h>

Inheritance diagram for ModelSlider:
QGpCoreTools::XMLClass

List of all members.

Signals

void modelChanged (GeophysicalModel *m)

Public Member Functions

QString code () const
 ModelSlider (QWidget *parent=0)
bool modify (GeophysicalModel *m, double p)
void setCode (const QString &c)
void setReferenceModel (GeophysicalModel *m)
void setTitle (const QString &t)
QString title () const
virtual const QString & xml_tagName () const
 ~ModelSlider ()

Static Public Attributes

static const QString xmlModelSliderTag = "ModelSlider"

Protected Member Functions

virtual XMLMember xml_member (XML_MEMBER_ARGS)
virtual bool xml_setProperty (XML_SETPROPERTY_ARGS)
virtual void xml_writeProperties (XML_WRITEPROPERTIES_ARGS) const

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

ModelSlider::ModelSlider ( QWidget *  parent = 0)

Description of constructor still missing

References QGpCoreTools::tr(), and TRACE.

    : QWidget(parent)
{
  TRACE;

  _referenceModel=0;
  _codeContext=0;

  QAction * a=new QAction(tr( "Edit" ), this);
  connect(a, SIGNAL(triggered()), this, SLOT(edit()) );
  addAction(a);

  setContextMenuPolicy(Qt::ActionsContextMenu);

  QHBoxLayout * layout=new QHBoxLayout(this);
  _titleWidget=new QLabel(this);
  layout->addWidget(_titleWidget);
  _sliderWidget=new QSlider(this);
  _sliderWidget->setOrientation(Qt::Horizontal);
  _sliderWidget->setMinimum(0);
  _sliderWidget->setMaximum(100);
  layout->addWidget(_sliderWidget);
  connect(_sliderWidget, SIGNAL(valueChanged(int)), this, SLOT(sliderChanged()));
}

Description of destructor still missing

References TRACE.

{
  TRACE;
  qDeleteAll(_codeActions);
  delete _codeContext;
}

Member Function Documentation

QString ModelSlider::code ( ) const [inline]

Referenced by xml_writeProperties().

{return _code;}
bool ModelSlider::modify ( GeophysicalModel m,
double  p 
)

References QGpCoreTools::ExpressionContext::addVariable(), QGpCoreWave::GeophysicalModel::isValid(), and QGpCoreWave::GeophysicalModel::GeophysicalContext::setModel().

Referenced by MainWindow::scan().

{
  if(_codeActions.isEmpty()) return false;
  _codeContext->addVariable("p", p);
  _codeContext->setModel(m);
  for(ExpressionActions::iterator ita=_codeActions.begin();ita!=_codeActions.end();++ita) {
    (*ita)->value();
  }
  return m->isValid();
}
void ModelSlider::setCode ( const QString &  c)

References QGpCoreTools::ExpressionParser::parse(), and TRACE.

Referenced by xml_setProperty().

{
  TRACE;
  ASSERT(_referenceModel);
  _code=c;
  qDeleteAll(_codeActions);
  _codeActions.clear();
  ExpressionParser pEngine;
  _codeActions=pEngine.parse(_code, _codeContext);
  // Debug purpose ...
  /*for(int i=0;i<_codeActions.count();i++) {
    _codeActions.at(i)->xml_saveFile(QString("/home/mwathele/debugaction-%1.xml").arg(i));
  }*/
  sliderChanged();
}

References QGpCoreWave::GeophysicalModel::expressionContext(), QGpCoreWave::GeophysicalModel::GeophysicalContext::helpCode(), and TRACE.

Referenced by ControlPanel::xml_member().

{
  TRACE;
  if(m) {
    _referenceModel=m;
    if(_code.isEmpty()) {
      delete _codeContext;
      _codeContext=_referenceModel->expressionContext();
      _code+="/*\n"
             "Model parameters:\n"+
             _codeContext->helpCode()+
             "Slider parameter:\n"
             "   p      Current slider value between 0 and 1\n"
             "*/\n";
    }
    sliderChanged();
  }
}
void ModelSlider::setTitle ( const QString &  t)

References TRACE.

Referenced by xml_setProperty().

{
  TRACE;
  _titleWidget->setText(t);
}
QString ModelSlider::title ( ) const

References TRACE.

Referenced by xml_writeProperties().

{
  TRACE;
  return _titleWidget->text();
}

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:

  • An integer: id number of a property
  • A XMLClass * : a child of this object identified by tag
  • Default constructor: error, unknow child or property

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 QGpCoreTools::XMLClass.

References TRACE.

{
  TRACE;
  Q_UNUSED(attributes);
  Q_UNUSED(context);
  if(tag=="title" ) return XMLMember(0);
  else if(tag=="code" ) return XMLMember(1);
  return XMLMember(XMLMember::Unknown);
}
bool ModelSlider::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 QGpCoreTools::XMLClass.

References setCode(), setTitle(), and TRACE.

{
  TRACE;
  Q_UNUSED(tag)
  Q_UNUSED(attributes);
  Q_UNUSED(context);
  switch (memberID) {
  case 0: setTitle(content.toString()); return true;
  case 1: setCode(content.toString()); return true;
  default: return false;
  }
}
virtual const QString& ModelSlider::xml_tagName ( ) const [inline, virtual]

Implements QGpCoreTools::XMLClass.

References xmlModelSliderTag.

void ModelSlider::xml_writeProperties ( XML_WRITEPROPERTIES_ARGS  ) const [protected, virtual]

Reimplemented from QGpCoreTools::XMLClass.

References code(), title(), TRACE, and QGpCoreTools::XMLClass::writeProperty().

{
  TRACE;
  Q_UNUSED(context);
  writeProperty(s, "title", title());
  writeProperty(s, "code", code());
}

Member Data Documentation

const QString ModelSlider::xmlModelSliderTag = "ModelSlider" [static]

Referenced by xml_tagName().


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