Official list of custom formats (ASCII and others) More...
#include <CustomFileFormats.h>
Public Member Functions | |
void | add (AbstractFileFormat *format) |
void | clear (SignalFileFormat::Format id=SignalFileFormat::Unknown) |
bool | contains (const QString &name) const |
int | count () const |
CustomFileFormats () | |
AbstractFileFormat * | format (int index) |
SignalFileFormat | fromContent (const QString &fileName) const |
SignalFileFormat | fromExtension (const QString &ext) const |
SignalFileFormat | fromString (const QString &f) const |
QList< SignalFileFormat > | list () 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 |
Official list of custom formats (ASCII and others)
Full description of class still missing
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)); } }
void GeopsyCore::CustomFileFormats::add | ( | AbstractFileFormat * | format | ) |
References QGpCoreTools::SharedObject::addReference(), and TRACE.
Referenced by Plugin::Plugin(), setFormats(), and xml_member().
{ TRACE; format->addReference(); _formats.append(format); }
void GeopsyCore::CustomFileFormats::clear | ( | SignalFileFormat::Format | id = SignalFileFormat::Unknown | ) |
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().
int GeopsyCore::CustomFileFormats::count | ( | ) | const [inline] |
Referenced by CustomFileFormatsModel::rowCount().
{return _formats.count();}
AbstractFileFormat* GeopsyCore::CustomFileFormats::format | ( | int | index | ) | [inline] |
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; }
SignalFileFormat GeopsyCore::CustomFileFormats::fromExtension | ( | const QString & | ext | ) | const |
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; }
SignalFileFormat GeopsyCore::CustomFileFormats::fromString | ( | const QString & | f | ) | const |
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; }
QList< SignalFileFormat > GeopsyCore::CustomFileFormats::list | ( | ) | const |
References GeopsyCore::AbstractFileFormat::format(), format(), and TRACE.
Referenced by GeopsyCore::SignalFileFormat::importList(), listExportFormats(), and listImportFormats().
QString GeopsyCore::CustomFileFormats::name | ( | int | index | ) | const |
References TRACE.
Referenced by contains(), and CustomFileFormatsModel::data().
{ TRACE; return _formats.at(index)->name(); }
void GeopsyCore::CustomFileFormats::remove | ( | int | index | ) |
References format(), QGpCoreTools::SharedObject::removeReference(), and TRACE.
{ TRACE; AbstractFileFormat * format=_formats.at(index); AbstractFileFormat::removeReference(format); _formats.removeAt(index); }
void GeopsyCore::CustomFileFormats::save | ( | ) |
References TRACE, and QGpCoreTools::XMLHeader::xml_saveString().
Referenced by Preferences::on_formatCustomAscii_clicked().
void GeopsyCore::CustomFileFormats::setFormats | ( | const CustomFileFormats & | o, |
SignalFileFormat::Format | id = SignalFileFormat::Unknown |
||
) |
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); } } }
XMLMember GeopsyCore::CustomFileFormats::xml_member | ( | XML_MEMBER_ARGS | ) | [protected, virtual] |
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:
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.
virtual const QString& GeopsyCore::CustomFileFormats::xml_tagName | ( | ) | const [inline, virtual] |
Implements QGpCoreTools::XMLClass.
{return xmlCustomFileFormatsTag;}
void GeopsyCore::CustomFileFormats::xml_writeChildren | ( | XML_WRITECHILDREN_ARGS | ) | const [protected, 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); } } }
const QString GeopsyCore::CustomFileFormats::xmlCustomFileFormatsTag = "CustomFileFormats" [static] |