File indexing completed on 2024-05-12 07:41:25

0001 /*
0002     File                 : GuiObserver.h
0003     Project              : LabPlot
0004     Description          : GUI observer
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2010-2023 Alexander Semke <alexander.semke@web.de>
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef GUIOBSERVER_H
0011 #define GUIOBSERVER_H
0012 
0013 #include <QObject>
0014 
0015 class MainWin;
0016 class AbstractAspect;
0017 
0018 class BaseDock;
0019 class AspectDock;
0020 class AxisDock;
0021 class InfoElementDock;
0022 class NoteDock;
0023 class CartesianPlotDock;
0024 class HistogramDock;
0025 class BarPlotDock;
0026 class LollipopPlotDock;
0027 class BoxPlotDock;
0028 class KDEPlotDock;
0029 class QQPlotDock;
0030 class CartesianPlotLegendDock;
0031 class CustomPointDock;
0032 class ReferenceLineDock;
0033 class ReferenceRangeDock;
0034 class ColumnDock;
0035 class LiveDataDock;
0036 class MatrixDock;
0037 class ProjectDock;
0038 class SpreadsheetDock;
0039 class StatisticsSpreadsheetDock;
0040 class XYCurveDock;
0041 class XYEquationCurveDock;
0042 class XYDataReductionCurveDock;
0043 class XYDifferentiationCurveDock;
0044 class XYIntegrationCurveDock;
0045 class XYInterpolationCurveDock;
0046 class XYSmoothCurveDock;
0047 class XYFitCurveDock;
0048 class XYFourierFilterCurveDock;
0049 class XYFourierTransformCurveDock;
0050 class XYHilbertTransformCurveDock;
0051 class XYConvolutionCurveDock;
0052 class XYCorrelationCurveDock;
0053 class WorksheetDock;
0054 class ImageDock;
0055 class LabelWidget;
0056 class DatapickerImageWidget;
0057 class DatapickerCurveWidget;
0058 
0059 #ifdef HAVE_CANTOR_LIBS
0060 class CantorWorksheetDock;
0061 #endif
0062 
0063 class GuiObserver : public QObject {
0064     Q_OBJECT
0065 
0066 public:
0067     explicit GuiObserver(MainWin*);
0068     ~GuiObserver() override;
0069 
0070 private:
0071     MainWin* m_mainWindow{nullptr};
0072     friend class MainWin;
0073 
0074     AspectDock* m_aspectDock{nullptr};
0075     ColumnDock* m_columnDock{nullptr};
0076     LiveDataDock* m_liveDataDock{nullptr};
0077     MatrixDock* m_matrixDock{nullptr};
0078     NoteDock* m_notesDock{nullptr};
0079     ProjectDock* m_projectDock{nullptr};
0080     SpreadsheetDock* m_spreadsheetDock{nullptr};
0081     StatisticsSpreadsheetDock* m_statisticsSpreadsheetDock{nullptr};
0082 
0083     // data picker
0084     DatapickerImageWidget* m_datapickerImageDock{nullptr};
0085     DatapickerCurveWidget* m_datapickerCurveDock{nullptr};
0086 
0087     // worksheet
0088     AxisDock* m_axisDock{nullptr};
0089     CartesianPlotDock* m_cartesianPlotDock{nullptr};
0090     CartesianPlotLegendDock* m_cartesianPlotLegendDock{nullptr};
0091     CustomPointDock* m_customPointDock{nullptr};
0092     ImageDock* m_imageDock{nullptr};
0093     InfoElementDock* m_infoElementDock{nullptr};
0094     LabelWidget* m_textLabelDock{nullptr};
0095     ReferenceLineDock* m_referenceLineDock{nullptr};
0096     ReferenceRangeDock* m_referenceRangeDock{nullptr};
0097     WorksheetDock* m_worksheetDock{nullptr};
0098 
0099     XYCurveDock* m_xyCurveDock{nullptr};
0100     XYEquationCurveDock* m_xyEquationCurveDock{nullptr};
0101 
0102     // bar plots
0103     BarPlotDock* m_barPlotDock{nullptr};
0104     LollipopPlotDock* m_lollipopPlotDock{nullptr};
0105 
0106     // statistical plots
0107     BoxPlotDock* m_boxPlotDock{nullptr};
0108     HistogramDock* m_histogramDock{nullptr};
0109     KDEPlotDock* m_kdePlotDock{nullptr};
0110     QQPlotDock* m_qqPlotDock{nullptr};
0111 
0112     // analysis plots
0113     XYDataReductionCurveDock* m_xyDataReductionCurveDock{nullptr};
0114     XYDifferentiationCurveDock* m_xyDifferentiationCurveDock{nullptr};
0115     XYIntegrationCurveDock* m_xyIntegrationCurveDock{nullptr};
0116     XYInterpolationCurveDock* m_xyInterpolationCurveDock{nullptr};
0117     XYSmoothCurveDock* m_xySmoothCurveDock{nullptr};
0118     XYFitCurveDock* m_xyFitCurveDock{nullptr};
0119     XYFourierFilterCurveDock* m_xyFourierFilterCurveDock{nullptr};
0120     XYFourierTransformCurveDock* m_xyFourierTransformCurveDock{nullptr};
0121     XYHilbertTransformCurveDock* m_xyHilbertTransformCurveDock{nullptr};
0122     XYConvolutionCurveDock* m_xyConvolutionCurveDock{nullptr};
0123     XYCorrelationCurveDock* m_xyCorrelationCurveDock{nullptr};
0124 
0125 #ifdef HAVE_CANTOR_LIBS
0126     CantorWorksheetDock* m_cantorWorksheetDock{nullptr};
0127 #endif
0128 
0129 private Q_SLOTS:
0130     void selectedAspectsChanged(const QList<AbstractAspect*>&);
0131     void hiddenAspectSelected(const AbstractAspect*);
0132 };
0133 
0134 #endif