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

0001 /*
0002     File                 : Datapicker.h
0003     Project              : LabPlot
0004     Description          : Datapicker
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2015 Ankit Wagadre <wagadre.ankit@gmail.com>
0007     SPDX-FileCopyrightText: 2015-2017 Alexander Semke <alexander.semke@web.de>
0008 
0009     SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 
0012 #ifndef DATAPICKER_H
0013 #define DATAPICKER_H
0014 
0015 #include "Vector3D.h"
0016 #include "backend/core/AbstractPart.h"
0017 
0018 class Spreadsheet;
0019 class DatapickerCurve;
0020 class DatapickerImage;
0021 class DatapickerView;
0022 
0023 class QXmlStreamWriter;
0024 class XmlStreamReader;
0025 class Transform;
0026 class QPointF;
0027 class QVector3D;
0028 
0029 class Datapicker : public AbstractPart {
0030     Q_OBJECT
0031 
0032 public:
0033     explicit Datapicker(const QString& name, const bool loading = false);
0034     ~Datapicker() override;
0035 
0036     QIcon icon() const override;
0037     QMenu* createContextMenu() override;
0038     QWidget* view() const override;
0039 
0040     bool exportView() const override;
0041     bool printView() override;
0042     bool printPreview() const override;
0043 
0044     DatapickerCurve* activeCurve();
0045     Spreadsheet* currentSpreadsheet() const;
0046     DatapickerImage* image() const;
0047 
0048     void setChildSelectedInView(int index, bool selected);
0049     void setSelectedInView(const bool);
0050     void addNewPoint(QPointF, AbstractAspect*);
0051 
0052     bool xDateTime() const;
0053 
0054     Vector3D mapSceneToLogical(QPointF) const;
0055     Vector3D mapSceneLengthToLogical(QPointF) const;
0056 
0057     void save(QXmlStreamWriter*) const override;
0058     bool load(XmlStreamReader*, bool preview) override;
0059 
0060 public Q_SLOTS:
0061     void childSelected(const AbstractAspect*) override;
0062 
0063 private:
0064     mutable DatapickerView* m_view{nullptr};
0065     DatapickerCurve* m_activeCurve{nullptr};
0066     Transform* m_transform;
0067     DatapickerImage* m_image{nullptr};
0068 
0069     void init();
0070     void handleChildAspectAboutToBeRemoved(const AbstractAspect*);
0071     void handleChildAspectAdded(const AbstractAspect*);
0072 
0073 private Q_SLOTS:
0074     void childDeselected(const AbstractAspect*) override;
0075     void handleAspectAdded(const AbstractAspect*);
0076     void handleAspectAboutToBeRemoved(const AbstractAspect*);
0077 
0078 Q_SIGNALS:
0079     void datapickerItemSelected(int);
0080     void requestUpdateActions();
0081 };
0082 
0083 #endif