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