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

Official list of custom formats (ASCII and others) More...

#include <CustomFileFormats.h>

Inheritance diagram for GeopsyCore::CustomFileFormats:
QGpCoreTools::XMLClass CustomAsciiFormatsEditor

List of all members.

Public Member Functions

void add (AbstractFileFormat *format)
void clear (SignalFileFormat::Format id=SignalFileFormat::Unknown)
bool contains (const QString &name) const
int count () const
 CustomFileFormats ()
AbstractFileFormatformat (int index)
SignalFileFormat fromContent (const QString &fileName) const
SignalFileFormat fromExtension (const QString &ext) const
SignalFileFormat fromString (const QString &f) const
QList< SignalFileFormatlist () const
QString name (int index) const
void remove (int index)
void save ()
void setFormats (const CustomFileFormats &o, SignalFileFormat::Format id=SignalFileFormat::Unknown)
virtual const QString & xml_tagName () const
 ~CustomFileFormats ()

Static Public Attributes

static const QString xmlCustomFileFormatsTag = "CustomFileFormats"

Protected Member Functions

virtual XMLMember xml_member (XML_MEMBER_ARGS)
virtual void xml_writeChildren (XML_WRITECHILDREN_ARGS) const

Detailed Description

Official list of custom formats (ASCII and others)

Full description of class still missing


Constructor & Destructor Documentation

Description of constructor still missing

References QGpCoreTools::XMLErrorReport::exec(), QGpCoreTools::XMLErrorReport::setTitle(), QGpCoreTools::tr(), TRACE, and QGpCoreTools::XMLHeader::xml_restoreString().

    : XMLClass()
{
  TRACE;
  QSettings reg;
  QString xmlFormats=reg.value("CustomFileFormats", "").toString();
  if(!xmlFormats.isEmpty()) {
    XMLHeader hdr(this);
    XMLErrorReport xmler(XMLErrorReport::Read | XMLErrorReport::NoMessageBox);
    xmler.setTitle(tr("Loading custom formats"));
    xmler.exec(hdr.xml_restoreString(xmlFormats));
  }
}

Description of destructor still missing

References clear(), and TRACE.

{
  TRACE;
  clear();
}

Member Function Documentation

Remove all formats with id , or all formats if is SignalFileFormat::Unknown.

References GeopsyCore::AbstractFileFormat::format(), format(), QGpCoreTools::SharedObject::removeReference(), TRACE, and GeopsyCore::SignalFileFormat::Unknown.

Referenced by setFormats(), and ~CustomFileFormats().

{
  TRACE;
  QMutableListIterator<AbstractFileFormat *> it(_formats);
   while(it.hasNext()) {
     AbstractFileFormat * format=it.next();
     if(id==SignalFileFormat::Unknown || format->format()==id) {
       AbstractFileFormat::removeReference(format);
       it.remove();
     }
   }
}
bool GeopsyCore::CustomFileFormats::contains ( const QString &  name) const

References format(), GeopsyCore::AbstractFileFormat::name(), name(), and TRACE.

Referenced by Plugin::Plugin().

{
  TRACE;
  foreach(AbstractFileFormat * format, _formats) {
    if(format->name()==name) {
      return true;
    }
  }
  return false;
}
int GeopsyCore::CustomFileFormats::count ( ) const [inline]

Referenced by CustomFileFormatsModel::rowCount().

{return _formats.count();}

Referenced by clear(), contains(), fromContent(), fromExtension(), fromString(), list(), remove(), setFormats(), and xml_member().

{return _formats.at(index);}
SignalFileFormat GeopsyCore::CustomFileFormats::fromContent ( const QString &  fileName) const

References GeopsyCore::AbstractFileFormat::complexity(), GeopsyCore::AbstractFileFormat::format(), format(), GeopsyCore::AbstractFileFormat::isValid(), TRACE, and GeopsyCore::SignalFileFormat::Unknown.

Referenced by GeopsyCore::SignalFileFormat::fromContent().

{
  TRACE;
  // Sort format by decreasing complexity (to avoid false identifications)
  QMultiMap<int, AbstractFileFormat *> formatMap;
  foreach(AbstractFileFormat * format, _formats) {
    formatMap.insert(format->complexity(), format);
  }
  QMapIterator<int, AbstractFileFormat *> it(formatMap);
  it.toBack();
  while(it.hasPrevious()) {
    it.previous();
    AbstractFileFormat * format=it.value();
    if(format->isValid(fileName)) {
      return SignalFileFormat(format->format(), format);
    }
  }
  return SignalFileFormat::Unknown;
}

References GeopsyCore::AbstractFileFormat::extensions(), GeopsyCore::AbstractFileFormat::format(), format(), TRACE, and GeopsyCore::SignalFileFormat::Unknown.

Referenced by GeopsyCore::SignalFileFormat::fromSuffix().

{
  TRACE;
  foreach(AbstractFileFormat * format, _formats) {
    if(!format->extensions().isEmpty()) {
      if(format->extensions().contains(ext, Qt::CaseInsensitive)) {
        return SignalFileFormat(format->format(), format);
      }
    }
  }
  return SignalFileFormat::Unknown;
}

References GeopsyCore::AbstractFileFormat::format(), format(), GeopsyCore::AbstractFileFormat::toString(), TRACE, and GeopsyCore::SignalFileFormat::Unknown.

Referenced by GeopsyCore::SignalFileFormat::fromString().

{
  TRACE;
  foreach(AbstractFileFormat * format, _formats) {
    QString n=format->toString();
    if(f==n) {
      return SignalFileFormat(format->format(), format);
    }
  }
  return SignalFileFormat::Unknown;
}

References GeopsyCore::AbstractFileFormat::format(), format(), and TRACE.

Referenced by GeopsyCore::SignalFileFormat::importList(), listExportFormats(), and listImportFormats().

{
  TRACE;
  QList<SignalFileFormat> formats;
  foreach(AbstractFileFormat * format, _formats) {
    formats.append(SignalFileFormat(format->format(), format));
  }
  return formats;
}
QString GeopsyCore::CustomFileFormats::name ( int  index) const

References TRACE.

Referenced by contains(), and CustomFileFormatsModel::data().

{
  TRACE;
  return _formats.at(index)->name();
}

References format(), QGpCoreTools::SharedObject::removeReference(), and TRACE.

{
  TRACE;
  AbstractFileFormat * format=_formats.at(index);
  AbstractFileFormat::removeReference(format);
  _formats.removeAt(index);
}

References TRACE, and QGpCoreTools::XMLHeader::xml_saveString().

Referenced by Preferences::on_formatCustomAscii_clicked().

{
  TRACE;
  QSettings reg;
  XMLHeader hdr(this);
  reg.setValue("CustomFileFormats", hdr.xml_saveString());
}

Set formats from o. If id is not SignalFileFormat::Unknown, add only formats which have AbstractFileFormat::format() equal to id.

References add(), clear(), GeopsyCore::AbstractFileFormat::format(), format(), TRACE, and GeopsyCore::SignalFileFormat::Unknown.

Referenced by Preferences::on_formatCustomAscii_clicked().

{
  TRACE;
  clear(id);
  foreach(AbstractFileFormat * format, o._formats) {
    if(id==SignalFileFormat::Unknown || format->format()==id) {
      add(format);
    }
  }
}

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 add(), format(), TRACE, and GeopsyCore::AsciiSignalFormat::xmlAsciiSignalFormatTag.

{
  TRACE;
  Q_UNUSED(context);
  Q_UNUSED(attributes);
  if(tag==AsciiSignalFormat::xmlAsciiSignalFormatTag) {
    AsciiSignalFormat * format=new AsciiSignalFormat;
    add(format);
    return XMLMember(format);
  }
  return XMLMember(XMLMember::Unknown);
}
virtual const QString& GeopsyCore::CustomFileFormats::xml_tagName ( ) const [inline, virtual]

Reimplemented from QGpCoreTools::XMLClass.

References TRACE, QGpCoreTools::XMLClass::xml_save(), QGpCoreTools::XMLClass::xml_tagName(), and GeopsyCore::AsciiSignalFormat::xmlAsciiSignalFormatTag.

{
  TRACE;
  // Currently only ASCII formats are stored in user settings
  for(QList<AbstractFileFormat *>::const_iterator it=_formats.begin();it!=_formats.end();it++) {
    AbstractFileFormat * f=*it;
    if(f->xml_tagName()==AsciiSignalFormat::xmlAsciiSignalFormatTag) {
      (*it)->xml_save(s, context);
    }
  }
}

Member Data Documentation

const QString GeopsyCore::CustomFileFormats::xmlCustomFileFormatsTag = "CustomFileFormats" [static]

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