File indexing completed on 2024-06-23 03:46:16
0001 /* 0002 File : AbstractFileFilter.h 0003 Project : LabPlot 0004 Description : file I/O-filter related interface 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2009-2018 Alexander Semke <alexander.semke@web.de> 0007 SPDX-FileCopyrightText: 2017 Stefan Gerlach <stefan.gerlach@uni.kn> 0008 0009 SPDX-License-Identifier: GPL-2.0-or-later 0010 */ 0011 0012 #ifndef ABSTRACTFILEFILTER_H 0013 #define ABSTRACTFILEFILTER_H 0014 0015 #include "backend/core/AbstractColumn.h" 0016 #include <QLocale> 0017 #include <QObject> 0018 #include <memory> // smart pointer 0019 0020 class AbstractDataSource; 0021 class XmlStreamReader; 0022 class QXmlStreamWriter; 0023 class KConfig; 0024 0025 class AbstractFileFilter : public QObject { 0026 Q_OBJECT 0027 Q_ENUMS(FileType) 0028 Q_ENUMS(ImportMode) 0029 0030 public: 0031 enum class FileType { Ascii, Binary, XLSX, Ods, Image, HDF5, NETCDF, FITS, JSON, ROOT, Spice, READSTAT, MATIO, VECTOR_BLF }; 0032 enum class ImportMode { Append, Prepend, Replace }; 0033 0034 explicit AbstractFileFilter(FileType type) 0035 : m_type(type) { 0036 } 0037 ~AbstractFileFilter() override = default; 0038 0039 static bool isNan(const QString&); 0040 static AbstractColumn::ColumnMode columnMode(const QString& valueString, QString& dateTimeFormat, QLocale::Language); 0041 static AbstractColumn::ColumnMode columnMode(const QString& valueString, QString& dateTimeFormat, const QLocale& = QLocale()); 0042 static QString dateTimeFormat(const QString& valueString); 0043 static QStringList numberFormats(); 0044 static AbstractFileFilter::FileType fileType(const QString&); 0045 static QStringList fileTypes(); 0046 static QString convertFromNumberToColumn(int n); 0047 0048 virtual void readDataFromFile(const QString& fileName, AbstractDataSource* = nullptr, ImportMode = ImportMode::Replace) = 0; 0049 virtual void write(const QString& fileName, AbstractDataSource*) = 0; 0050 0051 virtual QStringList lastErrors(); 0052 0053 // save/load in the project XML 0054 virtual void save(QXmlStreamWriter*) const = 0; 0055 virtual bool load(XmlStreamReader*) = 0; 0056 0057 FileType type() const { 0058 return m_type; 0059 } 0060 0061 Q_SIGNALS: 0062 void completed(int) const; //!< int ranging from 0 to 100 notifies about the status of a read/write process 0063 0064 protected: 0065 const FileType m_type; 0066 }; 0067 0068 #endif