diff src/libqxt/qxtcsvmodel.h @ 1:7a2637c3eb83

Add csv parser from libqxt
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 23 Mar 2015 16:33:26 +0100
parents
children 06c9b37d1e1b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/libqxt/qxtcsvmodel.h	Mon Mar 23 16:33:26 2015 +0100
@@ -0,0 +1,96 @@
+#ifndef QXTCSVMODEL_H
+/****************************************************************************
+** Copyright (c) 2006 - 2011, the LibQxt project.
+** See the Qxt AUTHORS file for a list of authors and copyright holders.
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**     * Redistributions of source code must retain the above copyright
+**       notice, this list of conditions and the following disclaimer.
+**     * Redistributions in binary form must reproduce the above copyright
+**       notice, this list of conditions and the following disclaimer in the
+**       documentation and/or other materials provided with the distribution.
+**     * Neither the name of the LibQxt project nor the
+**       names of its contributors may be used to endorse or promote products
+**       derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+** DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+** <http://libqxt.org>  <foundation@libqxt.org>
+*****************************************************************************/
+
+#define QXTCSVMODEL_H
+
+#include <QAbstractTableModel>
+#include <QVariant>
+#include <QIODevice>
+#include <QChar>
+#include <QString>
+#include <QStringList>
+#include <QModelIndex>
+#include <qxtglobal.h>
+class QTextCodec;
+
+class QxtCsvModelPrivate;
+class QXT_CORE_EXPORT QxtCsvModel : public QAbstractTableModel
+{
+    Q_OBJECT
+public:
+    QxtCsvModel(QObject *parent = 0);
+    explicit QxtCsvModel(QIODevice *file, QObject *parent = 0, bool withHeader = false, QChar separator = ',');
+    explicit QxtCsvModel(const QString filename, QObject *parent = 0, bool withHeader = false, QChar separator = ',');
+    ~QxtCsvModel();
+
+    int rowCount(const QModelIndex& parent = QModelIndex()) const;
+    int columnCount(const QModelIndex& parent = QModelIndex()) const;
+    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
+    bool setData(const QModelIndex& index, const QVariant& data, int role = Qt::EditRole);
+    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
+    bool setHeaderData(int section, Qt::Orientation orientation, const QVariant& value, int role = Qt::DisplayRole);
+    void setHeaderData(const QStringList& data);
+    QString text(int row, int column) const;
+    void setText(int row, int column, const QString& value);
+    QString headerText(int column) const;
+    void setHeaderText(int column, const QString& value);
+
+
+    bool insertRow(int row, const QModelIndex& parent = QModelIndex());
+    bool insertRows(int row, int count, const QModelIndex& parent = QModelIndex());
+    bool removeRow(int row, const QModelIndex& parent = QModelIndex());
+    bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex());
+    bool insertColumn(int col, const QModelIndex& parent = QModelIndex());
+    bool insertColumns(int col, int count, const QModelIndex& parent = QModelIndex());
+    bool removeColumn(int col, const QModelIndex& parent = QModelIndex());
+    bool removeColumns(int col, int count, const QModelIndex& parent = QModelIndex());
+
+    void setSource(QIODevice *file, bool withHeader = false, QChar separator = ',', QTextCodec* codec = 0);
+    void setSource(const QString filename, bool withHeader = false, QChar separator = ',', QTextCodec* codec = 0);
+
+    void toCSV(QIODevice *file, bool withHeader = false, QChar separator = ',', QTextCodec* codec = 0) const;
+    void toCSV(const QString filename, bool withHeader = false, QChar separator = ',', QTextCodec* codec = 0) const;
+
+    enum QuoteOption { NoQuotes = 0, SingleQuote = 1, DoubleQuote = 2, BothQuotes = 3,
+                       NoEscape = 0, TwoQuoteEscape = 4, BackslashEscape = 8, 
+                       AlwaysQuoteOutput = 16, DefaultQuoteMode = BothQuotes | BackslashEscape | AlwaysQuoteOutput };
+    Q_DECLARE_FLAGS(QuoteMode, QuoteOption)
+    QuoteMode quoteMode() const;
+    void setQuoteMode(QuoteMode mode);
+
+    Qt::ItemFlags flags(const QModelIndex& index) const;
+
+private:
+    QXT_DECLARE_PRIVATE(QxtCsvModel)
+};
+Q_DECLARE_OPERATORS_FOR_FLAGS(QxtCsvModel::QuoteMode)
+
+#endif
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)