Skip to content

Commit

Permalink
Add file extensions for babel import formats
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Aug 2, 2021
1 parent 3ee1f2b commit ebd7d0c
Show file tree
Hide file tree
Showing 6 changed files with 172 additions and 147 deletions.
11 changes: 10 additions & 1 deletion python/core/auto_generated/gps/qgsbabelformat.sip.in
Expand Up @@ -93,7 +93,8 @@ A babel format capable of converting input files to GPX files.
%End
public:

QgsBabelSimpleImportFormat( const QString &format, const QString &description, Qgis::BabelFormatCapabilities capabilities );
QgsBabelSimpleImportFormat( const QString &format, const QString &description, Qgis::BabelFormatCapabilities capabilities,
const QStringList extensions = QStringList() );
%Docstring
Constructor for QgsBabelSimpleImportFormat.

Expand All @@ -103,11 +104,19 @@ The ``description`` argument specified a descriptive name for the format.

The ``capabilities`` argument must reflect whether the format is capable of handling
waypoints, routes and/or tracks.

The optional ``extensions`` argument can be used to populate a list of known file
extensions for the format (e.g. "csv", "txt").
%End

QString description() const;
%Docstring
Returns the friendly description for the format.
%End

QStringList extensions() const;
%Docstring
Returns the list of known extensions for the format, e.g. "csv", "txt".
%End

virtual QStringList importCommand( const QString &babel,
Expand Down
5 changes: 4 additions & 1 deletion scripts/dump_babel_formats.py
Expand Up @@ -81,8 +81,11 @@ def process_lines(lines):
capabilities.append('Qgis::BabelFormatCapability::Routes')
if read_tracks:
capabilities.append('Qgis::BabelFormatCapability::Tracks')
capabilities_string = ' | '.join(capabilities)

extensions_string = '{' + ', '.join([f'QStringLiteral( "{ext.strip()}" )' for ext in extensions if ext.strip()]) + '}'
format_out[
name] = f"""mImporters[QStringLiteral( "{name}" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "{name}" ), QStringLiteral( "{description}" ), {' | '.join(capabilities)} );"""
name] = f'mImporters[QStringLiteral( "{name}" )] = new QgsBabelSimpleImportFormat( QStringLiteral( "{name}" ), QStringLiteral( "{description}" ), {capabilities_string}, {extensions_string} );'

for format_name in sorted(format_out.keys(), key=lambda x: x.lower()):
print(format_out[format_name])
Expand Down
3 changes: 2 additions & 1 deletion src/core/gps/qgsbabelformat.cpp
Expand Up @@ -64,9 +64,10 @@ Qgis::BabelFormatCapabilities QgsAbstractBabelFormat::capabilities() const
//

QgsBabelSimpleImportFormat::QgsBabelSimpleImportFormat( const QString &format, const QString &description,
Qgis::BabelFormatCapabilities capabilities )
Qgis::BabelFormatCapabilities capabilities, const QStringList extensions )
: QgsAbstractBabelFormat( format )
, mDescription( description )
, mExtensions( extensions )
{
mCapabilities = capabilities;
mCapabilities |= Qgis::BabelFormatCapability::Import;
Expand Down
12 changes: 11 additions & 1 deletion src/core/gps/qgsbabelformat.h
Expand Up @@ -115,20 +115,30 @@ class CORE_EXPORT QgsBabelSimpleImportFormat : public QgsAbstractBabelFormat
*
* The \a capabilities argument must reflect whether the format is capable of handling
* waypoints, routes and/or tracks.
*
* The optional \a extensions argument can be used to populate a list of known file
* extensions for the format (e.g. "csv", "txt").
*/
QgsBabelSimpleImportFormat( const QString &format, const QString &description, Qgis::BabelFormatCapabilities capabilities );
QgsBabelSimpleImportFormat( const QString &format, const QString &description, Qgis::BabelFormatCapabilities capabilities,
const QStringList extensions = QStringList() );

/**
* Returns the friendly description for the format.
*/
QString description() const { return mDescription; }

/**
* Returns the list of known extensions for the format, e.g. "csv", "txt".
*/
QStringList extensions() const { return mExtensions; }

QStringList importCommand( const QString &babel,
Qgis::GpsFeatureType featureType,
const QString &input,
const QString &output ) const override;
private:
QString mDescription;
QStringList mExtensions;
};

#endif

0 comments on commit ebd7d0c

Please sign in to comment.