File indexing completed on 2024-05-12 03:47:28

0001 /*
0002     File                 : DatapickerCurve.h
0003     Project              : LabPlot
0004     Description          : container for Curve-Point and Datasheet/Spreadsheet
0005     of datapicker
0006     --------------------------------------------------------------------
0007     SPDX-FileCopyrightText: 2015 Ankit Wagadre <wagadre.ankit@gmail.com>
0008     SPDX-FileCopyrightText: 2015-2021 Alexander Semke <alexander.semke@web.de>
0009     SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 
0012 #ifndef DATAPICKERCURVE_H
0013 #define DATAPICKERCURVE_H
0014 
0015 #include "backend/core/AbstractAspect.h"
0016 #include "backend/datapicker/DatapickerImage.h"
0017 #include "backend/lib/macros.h"
0018 #include "backend/worksheet/plots/cartesian/Symbol.h"
0019 
0020 class DatapickerPoint;
0021 class QAction;
0022 class DatapickerCurvePrivate;
0023 class Column;
0024 class Spreadsheet;
0025 class AbstractColumn;
0026 
0027 class DatapickerCurve : public AbstractAspect {
0028     Q_OBJECT
0029 
0030 public:
0031     explicit DatapickerCurve(const QString&);
0032     ~DatapickerCurve() override;
0033 
0034     enum class ErrorType { NoError, SymmetricError, AsymmetricError };
0035     struct Errors {
0036         ErrorType x;
0037         ErrorType y;
0038     };
0039 
0040     QIcon icon() const override;
0041     void setPrinting(bool);
0042     void setSelectedInView(bool);
0043     void addDatasheet(DatapickerImage::GraphType);
0044     void updatePoints();
0045     void updatePoint(const DatapickerPoint*);
0046     void updateColumns(bool datetime);
0047 
0048     void suppressUpdatePoint(bool);
0049 
0050     Symbol* symbol() const;
0051     BASIC_D_ACCESSOR_DECL(Errors, curveErrorTypes, CurveErrorTypes)
0052     BASIC_D_ACCESSOR_DECL(qreal, pointErrorBarSize, PointErrorBarSize)
0053     CLASS_D_ACCESSOR_DECL(QBrush, pointErrorBarBrush, PointErrorBarBrush)
0054     CLASS_D_ACCESSOR_DECL(QPen, pointErrorBarPen, PointErrorBarPen)
0055     BASIC_D_ACCESSOR_DECL(bool, pointVisibility, PointVisibility)
0056 
0057     POINTER_D_ACCESSOR_DECL(AbstractColumn, posXColumn, PosXColumn)
0058     QString& posXColumnPath() const;
0059     POINTER_D_ACCESSOR_DECL(AbstractColumn, posYColumn, PosYColumn)
0060     QString& posYColumnPath() const;
0061     POINTER_D_ACCESSOR_DECL(AbstractColumn, posZColumn, PosZColumn)
0062     QString& posZColumnPath() const;
0063     POINTER_D_ACCESSOR_DECL(AbstractColumn, plusDeltaXColumn, PlusDeltaXColumn)
0064     QString& plusDeltaXColumnPath() const;
0065     POINTER_D_ACCESSOR_DECL(AbstractColumn, minusDeltaXColumn, MinusDeltaXColumn)
0066     QString& minusDeltaXColumnPath() const;
0067     POINTER_D_ACCESSOR_DECL(AbstractColumn, plusDeltaYColumn, PlusDeltaYColumn)
0068     QString& plusDeltaYColumnPath() const;
0069     POINTER_D_ACCESSOR_DECL(AbstractColumn, minusDeltaYColumn, MinusDeltaYColumn)
0070     QString& minusDeltaYColumnPath() const;
0071 
0072     void save(QXmlStreamWriter*) const override;
0073     bool load(XmlStreamReader*, bool preview) override;
0074 
0075     typedef DatapickerCurvePrivate Private;
0076 
0077 protected:
0078     DatapickerCurve(const QString& name, DatapickerCurvePrivate* dd);
0079     DatapickerCurvePrivate* const d_ptr;
0080 
0081 private:
0082     Q_DECLARE_PRIVATE(DatapickerCurve)
0083     void init();
0084     void initAction();
0085     Column* appendColumn(const QString&);
0086 
0087     Spreadsheet* m_datasheet{nullptr};
0088     bool m_supressResizeDatasheet{false};
0089     bool m_datetime{false};
0090 
0091     void childAdded(const AbstractAspect* child);
0092     void childRemoved(const AbstractAspect* child);
0093 
0094 Q_SIGNALS:
0095     void curveErrorTypesChanged(const DatapickerCurve::Errors&);
0096     void posXColumnChanged(const AbstractColumn*);
0097     void posYColumnChanged(const AbstractColumn*);
0098     void posZColumnChanged(const AbstractColumn*);
0099     void plusDeltaXColumnChanged(const AbstractColumn*);
0100     void minusDeltaXColumnChanged(const AbstractColumn*);
0101     void plusDeltaYColumnChanged(const AbstractColumn*);
0102     void minusDeltaYColumnChanged(const AbstractColumn*);
0103     void pointStyleChanged(Symbol::Style);
0104     void pointSizeChanged(qreal);
0105     void pointRotationAngleChanged(qreal);
0106     void pointOpacityChanged(qreal);
0107     void pointBrushChanged(QBrush);
0108     void pointPenChanged(const QPen&);
0109     void pointErrorBarSizeChanged(qreal);
0110     void pointErrorBarBrushChanged(QBrush);
0111     void pointErrorBarPenChanged(const QPen&);
0112     void pointVisibilityChanged(bool);
0113 };
0114 #endif // DATAPICKERCURVE_H