File indexing completed on 2024-06-16 03:42:48

0001 /*
0002     File                 : NetCDFFilter.h
0003     Project              : LabPlot
0004     Description          : NetCDF I/O-filter
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2015 Stefan Gerlach <stefan.gerlach@uni.kn>
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 #ifndef NETCDFFILTER_H
0010 #define NETCDFFILTER_H
0011 
0012 #include "backend/datasources/filters/AbstractFileFilter.h"
0013 #include <QTreeWidgetItem>
0014 
0015 class NetCDFFilterPrivate;
0016 
0017 class NetCDFFilter : public AbstractFileFilter {
0018     Q_OBJECT
0019 
0020 public:
0021     NetCDFFilter();
0022     ~NetCDFFilter() override;
0023 
0024     static QString fileInfoString(const QString&);
0025     static QString fileCDLString(const QString&);
0026 
0027     void parse(const QString& fileName, QTreeWidgetItem* rootItem);
0028     void
0029     readDataFromFile(const QString& fileName, AbstractDataSource* = nullptr, AbstractFileFilter::ImportMode = AbstractFileFilter::ImportMode::Replace) override;
0030     QString readAttribute(const QString& fileName, const QString& name, const QString& varName);
0031     QVector<QStringList> readCurrentVar(const QString& fileName,
0032                                         AbstractDataSource* = nullptr,
0033                                         AbstractFileFilter::ImportMode = AbstractFileFilter::ImportMode::Replace,
0034                                         int lines = -1);
0035     void write(const QString& fileName, AbstractDataSource*) override;
0036 
0037     void setCurrentVarName(const QString&);
0038     const QString currentVarName() const;
0039 
0040     void setStartRow(const int);
0041     int startRow() const;
0042     void setEndRow(const int);
0043     int endRow() const;
0044     void setStartColumn(const int);
0045     int startColumn() const;
0046     void setEndColumn(const int);
0047     int endColumn() const;
0048 
0049     void save(QXmlStreamWriter*) const override;
0050     bool load(XmlStreamReader*) override;
0051 
0052 private:
0053     std::unique_ptr<NetCDFFilterPrivate> const d;
0054     friend class NetCDFFilterPrivate;
0055 };
0056 
0057 #endif