All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions | Static Public Member Functions | Static Public Attributes
GeopsyCore::TimePick Class Reference

Time pick vector for Signal. More...

#include <TimePick.h>

Inheritance diagram for GeopsyCore::TimePick:
GeopsyCore::MetaData QGpCoreTools::XMLClass QGpCoreTools::SharedObject

List of all members.

Public Member Functions

virtual void addScriptProperties (SignalHeaderObject *sig)
virtual QString baseName (int) const
virtual MetaDataclone () const
virtual int compare (int subId, const QString &index, const MetaData *o) const
virtual int count (int subId) const
virtual QVariant data (int subId, const QString &index) const
virtual const MetaDatadefaultValue () const
virtual bool fromString (const QString &index, QString string)
virtual bool hasIndex (int subId) const
virtual bool hasIndex (int subId, const QString &index) const
virtual int id () const
virtual QStringList indexList (int) const
virtual QString name (int, const QString &index) const
QStringList names () const
virtual Number::Type numberType (int subId) const
virtual void registerScriptTypes (QScriptEngine *engine)
virtual bool setData (int subId, const QString &index, const QVariant &val)
virtual void setId (int id) const
void setValue (const QString &name, double v)
virtual QStringList subNames () const
 TimePick ()
 TimePick (const TimePick &o)
virtual QString title (int, const QString &index) const
virtual QString toString (const QString &index) const
double value (const QString &name) const
virtual void writeProperties (XMLStream &s) const
virtual void writeProperties (XMLStream &s, const XMLSaveAttributes &attributes) const
virtual const QString & xml_tagName () const

Static Public Member Functions

static QString nextPick (const QString &name)
static int pickIndex (const QString &name)
static bool pickLocked (const QString &name)
static const QString & pickName (int index)
static QString previousPick (const QString &name)
static bool registered (const QString &name)
static QStringList registeredNames ()
static void renamePick (const QString &oldName, const QString &newName)
static void setPickLocked (const QString &name, bool l)
static int staticId ()

Static Public Attributes

static const QString xmlTimePickTag = "TimePick"

Detailed Description

Time pick vector for Signal.

Optional meta data


Constructor & Destructor Documentation

{}
GeopsyCore::TimePick::TimePick ( const TimePick o) [inline]
: MetaData(), _values(o._values) {}

Member Function Documentation

Reimplemented from GeopsyCore::MetaData.

  {
    //sig->setProperty("timePick", QVariant::fromValue(TimePickSignal(sig)));
  }
QString GeopsyCore::TimePick::baseName ( int  ) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References xmlTimePickTag.

  {
    return xmlTimePickTag;
  }
virtual MetaData* GeopsyCore::TimePick::clone ( ) const [inline, virtual]

Implements GeopsyCore::MetaData.

{return new TimePick(*this);}
int GeopsyCore::TimePick::compare ( int  subId,
const QString &  index,
const MetaData o 
) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References pickIndex(), registered(), and TRACE.

  {
    TRACE;
    Q_UNUSED(subId);
    const TimePick * otp=static_cast<const TimePick *>(o);
    if(registered(index)) {
      int i=pickIndex(index);
      if(_values[i]<otp->_values[i]) {
        return -1;
      } else if(_values[i]>otp->_values[i]) {
        return 1;
      } else {
        return 0;
      }
    } else {
      return 0;
    }
  }
virtual int GeopsyCore::TimePick::count ( int  subId) const [inline, virtual]

Reimplemented from GeopsyCore::MetaData.

Referenced by GeopsyCore::Signal::timePickCount().

{Q_UNUSED(subId); return _names.count();}
QVariant GeopsyCore::TimePick::data ( int  subId,
const QString &  index 
) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References pickIndex(), and registered().

  {
    Q_UNUSED(subId);
    if(registered(index)) {
      int i=pickIndex(index);
      return _values[i];
    } else {
      return 0.0;
    }
  }
virtual const MetaData* GeopsyCore::TimePick::defaultValue ( ) const [inline, virtual]

Implements GeopsyCore::MetaData.

{return &_defaultValue;}
bool GeopsyCore::TimePick::fromString ( const QString &  index,
QString  string 
) [virtual]

Reimplemented from GeopsyCore::MetaData.

References pickIndex(), and TRACE.

  {
    TRACE;
    bool ok;
    double v=string.toDouble(&ok);
    if(ok) {
      int i=pickIndex(index);
      _values[i]=v;
      return true;
    } else {
      return false;
    }
  }
virtual bool GeopsyCore::TimePick::hasIndex ( int  subId) const [inline, virtual]

Reimplemented from GeopsyCore::MetaData.

Referenced by GeopsyCore::DuplicateRays::hasIndex().

{Q_UNUSED(subId); return true;}
bool GeopsyCore::TimePick::hasIndex ( int  subId,
const QString &  index 
) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References pickIndex(), and registered().

  {
    Q_UNUSED(subId);
    if(registered(index)) {
      int i=pickIndex(index);
      return _values.contains(i);
    } else {
      return false;
    }
  }
virtual int GeopsyCore::TimePick::id ( ) const [inline, virtual]

Implements GeopsyCore::MetaData.

{return _id;}
virtual QStringList GeopsyCore::TimePick::indexList ( int  ) const [inline, virtual]

Reimplemented from GeopsyCore::MetaData.

{return registeredNames();}
QString GeopsyCore::TimePick::name ( int  ,
const QString &  index 
) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References xmlTimePickTag.

  {
    return xmlTimePickTag+"[\""+index+"\"]";
  }
QStringList GeopsyCore::TimePick::names ( ) const

Returns the list of available pick names.

References TRACE.

Referenced by GeopsyCore::SubSignalPool::availableTimePicks(), GeopsyGui::PickLayer::paintData(), subNames(), and GeopsyCore::Signal::writeSeg2().

  {
    TRACE;
    QStringList l;
    for(QMap<int, double>::const_iterator it=_values.begin(); it!=_values.end(); it++) {
      l.append(_names[it.key()]);
    }
    return l;
  }
QString GeopsyCore::TimePick::nextPick ( const QString &  name) [static]

Returns the next pick name after name in alphabetical order.

References pickIndex(), pickName(), and TRACE.

  {
    TRACE;
    QMap<QString, int>::const_iterator it=_name2index.find(name);
    if(it!=_name2index.end()) {
      it++;
      if(it!=_name2index.end()) {
        return it.key();
      } else {
        return _name2index.begin().key();
      }
    } else {
      if(name.isEmpty()) {
        if(_name2index.isEmpty()) {
          return QString::null;
        } else {
          return _name2index.begin().key();
        }
      } else {
        return pickName(pickIndex(name)); // force registration of this new name
      }
    }
  }
virtual Number::Type GeopsyCore::TimePick::numberType ( int  subId) const [inline, virtual]

Reimplemented from GeopsyCore::MetaData.

{Q_UNUSED(subId); return Number::Weeks;}
int GeopsyCore::TimePick::pickIndex ( const QString &  name) [static]

Used internally and by PickFormat. Prefer references by name.

References TRACE.

Referenced by compare(), data(), fromString(), hasIndex(), nextPick(), previousPick(), setData(), setValue(), toString(), and value().

  {
    TRACE;
    QMap<QString, int>::const_iterator it=_name2index.find(name);
    if(it!=_name2index.end()) {
      return it.value();
    } else {
      int index=_names.count();
      _name2index.insert(name, index);
      _names.append(name);
      _locked.append(false);
      ASSERT(_names.count()==_name2index.count());
      return index;
    }
  }
bool GeopsyCore::TimePick::pickLocked ( const QString &  name) [static]

References TRACE.

  {
    TRACE;
    QMap<QString, int>::const_iterator it=_name2index.find(name);
    if(it!=_name2index.end()) {
      return _locked.at(it.value());
    } else {
      return true;
    }
  }
const QString & GeopsyCore::TimePick::pickName ( int  index) [static]

Used internally and by PickFormat. Prefer references by name.

References TRACE.

Referenced by nextPick(), and previousPick().

  {
    TRACE;
    ASSERT(index<_names.count() && index>=0);
    return _names.at(index);
  }
QString GeopsyCore::TimePick::previousPick ( const QString &  name) [static]

Returns the previous pick name before name in alphabetical order.

References GeopsyCore::MetaData::key(), pickIndex(), pickName(), and TRACE.

  {
    TRACE;
    QMap<QString, int>::const_iterator it=_name2index.find(name);
    if(it!=_name2index.end()) {
      it--;
      if(it!=_name2index.end()) {
        return it.key();
      } else {
        return (--_name2index.end()).key();
      }
    } else {
      if(name.isEmpty()) {
        if(_name2index.isEmpty()) {
          return QString::null;
        } else {
          return _name2index.begin().key();
        }
      } else {
        return pickName(pickIndex(name)); // force registration of this new name
      }
    }
  }
static bool GeopsyCore::TimePick::registered ( const QString &  name) [inline, static]

Referenced by compare(), data(), hasIndex(), toString(), and GeopsyCore::Signal::writeSac().

{return _name2index.contains(name);}
static QStringList GeopsyCore::TimePick::registeredNames ( ) [inline, static]

Referenced by GeopsyCore::DuplicateRays::count(), and GeopsyCore::DuplicateRays::indexList().

{return _name2index.keys();}
void GeopsyCore::TimePick::registerScriptTypes ( QScriptEngine *  engine) [virtual]

Reimplemented from GeopsyCore::MetaData.

  {
    //qScriptRegisterMetaType<TimePickSignal>(engine, toScriptValue, fromScriptValue);
  }
void GeopsyCore::TimePick::renamePick ( const QString &  oldName,
const QString &  newName 
) [static]

References QGpCoreTools::endl(), QGpCoreTools::tr(), and TRACE.

  {
    TRACE;
    QMap<QString, int>::const_iterator it=_name2index.find(oldName);
    if(it!=_name2index.end()) {
      int index=it.value();
      _name2index.remove(oldName);
      _name2index.insert(newName, index);
      _names[index]=newName;
    } else {
      App::stream() << tr("No pick named '%1', rename skipped.").arg(oldName) << endl;
    }
  }
bool GeopsyCore::TimePick::setData ( int  subId,
const QString &  index,
const QVariant &  val 
) [virtual]

Reimplemented from GeopsyCore::MetaData.

References pickIndex(), and TRACE.

  {
    TRACE;
    Q_UNUSED(subId);
    bool ok;
    if(!index.isEmpty()) {
      int i=pickIndex(index);
      _values[i]=val.toDouble(&ok);
      return ok;
    } else {
      return false;
    }
  }
virtual void GeopsyCore::TimePick::setId ( int  id) const [inline, virtual]

Implements GeopsyCore::MetaData.

{_id=id;}
void GeopsyCore::TimePick::setPickLocked ( const QString &  name,
bool  l 
) [static]

References TRACE.

  {
    TRACE;
    QMap<QString, int>::const_iterator it=_name2index.find(name);
    if(it!=_name2index.end()) {
      _locked[it.value()]=l;
    }
  }
void GeopsyCore::TimePick::setValue ( const QString &  name,
double  v 
)

References QGpCoreTools::endl(), pickIndex(), QGpCoreTools::tr(), and TRACE.

Referenced by GeopsyCore::Signal::setTimePick().

  {
    TRACE;
    int index=pickIndex(name);
    if(_locked.at(index)) {
      App::stream() << tr("WARNING: trying to modify a locked time pick ('%1').").arg(name) << endl;
    } else {
      _values[index]=v;
    }
  }
static int GeopsyCore::TimePick::staticId ( ) [inline, static]
QStringList GeopsyCore::TimePick::subNames ( ) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References names(), and xmlTimePickTag.

  {
    QStringList names;
    names << xmlTimePickTag;
    return names;
  }
QString GeopsyCore::TimePick::title ( int  ,
const QString &  index 
) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References QGpCoreTools::tr().

  {
    return tr("Pick[\"%1\"]").arg(index);
  }
QString GeopsyCore::TimePick::toString ( const QString &  index) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References pickIndex(), registered(), and TRACE.

  {
    TRACE;
    if(registered(index)) {
      int i=pickIndex(index);
      QMap<int, double>::const_iterator it=_values.find(i);
      if(it!=_values.end()) {
        return QString::number(it.value(), 'g', 20);
      }
    }
    return "0.0";
  }
double GeopsyCore::TimePick::value ( const QString &  name) const

References pickIndex(), and TRACE.

Referenced by GeopsyCore::Signal::roundTimePick(), GeopsyCore::Signal::timePick(), and writeProperties().

  {
    TRACE;
    int index=pickIndex(name);
    QMap<int, double>::const_iterator it=_values.find(index);
    if(it!=_values.end()) {
      return it.value();
    } else {
      return 0.0;
    }
  }
void GeopsyCore::TimePick::writeProperties ( XMLStream s) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References QGpCoreTools::XMLSaveAttributes::add(), GeopsyCore::MetaData::key(), TRACE, value(), QGpCoreTools::XMLSaveAttributes::value(), QGpCoreTools::XMLClass::writeProperty(), and xml_tagName().

  {
    TRACE;
    static const QString key("index");
    XMLSaveAttributes att;
    QString& value=att.add(key);
    for(QMap<int, double>::const_iterator it=_values.begin(); it!=_values.end(); it++) {
      value=_names.at(it.key());
      writeProperty(s, xml_tagName(), att, it.value());
    }
  }
void GeopsyCore::TimePick::writeProperties ( XMLStream s,
const XMLSaveAttributes attributes 
) const [virtual]

Reimplemented from GeopsyCore::MetaData.

References QGpCoreTools::XMLSaveAttributes::add(), GeopsyCore::MetaData::key(), TRACE, value(), QGpCoreTools::XMLSaveAttributes::value(), QGpCoreTools::XMLClass::writeProperty(), and xml_tagName().

  {
    TRACE;
    static const QString key("index");
    XMLSaveAttributes att(attributes);
    QString& value=att.add(key);
    for(QMap<int, double>::const_iterator it=_values.begin(); it!=_values.end(); it++) {
      value=_names.at(it.key());
      writeProperty(s, xml_tagName(), att, it.value());
    }
  }
virtual const QString& GeopsyCore::TimePick::xml_tagName ( ) const [inline, virtual]

Implements QGpCoreTools::XMLClass.

Referenced by writeProperties().

{return xmlTimePickTag;}

Member Data Documentation

const QString GeopsyCore::TimePick::xmlTimePickTag = "TimePick" [static]

Referenced by baseName(), name(), and subNames().


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