File indexing completed on 2025-10-19 03:37:41

0001 /*
0002     File             : XYCurveDock.h
0003     Project          : LabPlot
0004     Description      : widget for curve properties
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2010-2024 Alexander Semke <alexander.semke@web.de>
0007     SPDX-FileCopyrightText: 2013 Stefan Gerlach <stefan.gerlach@uni.kn>
0008 
0009     SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 
0012 #ifndef XYCURVEDOCK_H
0013 #define XYCURVEDOCK_H
0014 
0015 #include "backend/core/AbstractColumn.h"
0016 #include "backend/worksheet/plots/cartesian/ErrorBar.h"
0017 #include "backend/worksheet/plots/cartesian/XYCurve.h"
0018 #include "kdefrontend/dockwidgets/BaseDock.h"
0019 
0020 #include "ui_xycurvedock.h"
0021 #include "ui_xycurvedockgeneraltab.h"
0022 
0023 class BackgroundWidget;
0024 class ErrorBarStyleWidget;
0025 class LineWidget;
0026 class Column;
0027 class SymbolWidget;
0028 class TreeViewComboBox;
0029 
0030 class XYCurveDock : public BaseDock {
0031     Q_OBJECT
0032 
0033 public:
0034     explicit XYCurveDock(QWidget*);
0035     ~XYCurveDock() override;
0036 
0037     void setCurves(QList<XYCurve*>);
0038     virtual void setupGeneral();
0039     void updateLocale() override;
0040 
0041 private:
0042     virtual void initGeneralTab();
0043     void updateValuesWidgets();
0044 
0045     void load();
0046     void loadConfig(KConfig&);
0047 
0048     Ui::XYCurveDockGeneralTab uiGeneralTab;
0049 
0050     TreeViewComboBox* cbXColumn{nullptr};
0051     TreeViewComboBox* cbYColumn{nullptr};
0052     TreeViewComboBox* cbValuesColumn;
0053     TreeViewComboBox* cbXErrorPlusColumn;
0054     TreeViewComboBox* cbXErrorMinusColumn;
0055     TreeViewComboBox* cbYErrorPlusColumn;
0056     TreeViewComboBox* cbYErrorMinusColumn;
0057 
0058 protected:
0059     void initTabs();
0060     static QList<AspectType> defaultColumnTopLevelClasses();
0061     void setModel();
0062     void setSymbols(QList<XYCurve*>);
0063 
0064     Ui::XYCurveDock ui;
0065     LineWidget* lineWidget{nullptr};
0066     LineWidget* dropLineWidget{nullptr};
0067     BackgroundWidget* backgroundWidget{nullptr};
0068     SymbolWidget* symbolWidget{nullptr};
0069     ErrorBarStyleWidget* errorBarStyleWidget{nullptr};
0070     QList<XYCurve*> m_curvesList;
0071     XYCurve* m_curve{nullptr};
0072     AspectTreeModel* m_valuesModel{nullptr};
0073 
0074 private Q_SLOTS:
0075     void init();
0076     void retranslateUi();
0077 
0078     // SLOTs for changes triggered in XYCurveDock
0079     void xColumnChanged(const QModelIndex&);
0080     void yColumnChanged(const QModelIndex&);
0081 
0082     // Line-Tab
0083     void lineTypeChanged(int);
0084     void lineSkipGapsChanged(bool);
0085     void lineIncreasingXOnlyChanged(bool);
0086     void lineInterpolationPointsCountChanged(int);
0087 
0088     // Values-Tab
0089     void valuesTypeChanged(int);
0090     void valuesColumnChanged(const QModelIndex&);
0091     void valuesPositionChanged(int);
0092     void valuesDistanceChanged(double);
0093     void valuesRotationChanged(int);
0094     void valuesOpacityChanged(int);
0095     void valuesNumericFormatChanged(int);
0096     void valuesPrecisionChanged(int);
0097     void valuesDateTimeFormatChanged(const QString&);
0098     void valuesPrefixChanged();
0099     void valuesSuffixChanged();
0100     void valuesFontChanged(const QFont&);
0101     void valuesColorChanged(const QColor&);
0102 
0103     //"Error bars"-Tab
0104     void xErrorTypeChanged(int);
0105     void yErrorTypeChanged(int);
0106     void xErrorPlusColumnChanged(const QModelIndex&);
0107     void xErrorMinusColumnChanged(const QModelIndex&);
0108     void yErrorPlusColumnChanged(const QModelIndex&);
0109     void yErrorMinusColumnChanged(const QModelIndex&);
0110 
0111     //"Margin Plots"-Tab
0112     void rugEnabledChanged(bool);
0113     void rugOrientationChanged(int);
0114     void rugLengthChanged(double);
0115     void rugWidthChanged(double);
0116     void rugOffsetChanged(double);
0117 
0118     // SLOTs for changes triggered in XYCurve
0119     // General-Tab
0120     void curveDescriptionChanged(const AbstractAspect*);
0121     void curveXColumnChanged(const AbstractColumn*);
0122     void curveYColumnChanged(const AbstractColumn*);
0123 
0124     // Line-Tab
0125     void curveLineTypeChanged(XYCurve::LineType);
0126     void curveLineSkipGapsChanged(bool);
0127     void curveLineIncreasingXOnlyChanged(bool);
0128     void curveLineInterpolationPointsCountChanged(int);
0129 
0130     // Values-Tab
0131     void curveValuesTypeChanged(XYCurve::ValuesType);
0132     void curveValuesColumnChanged(const AbstractColumn*);
0133     void curveValuesPositionChanged(XYCurve::ValuesPosition);
0134     void curveValuesDistanceChanged(qreal);
0135     void curveValuesOpacityChanged(qreal);
0136     void curveValuesRotationAngleChanged(qreal);
0137     void curveValuesNumericFormatChanged(char);
0138     void curveValuesPrecisionChanged(int);
0139     void curveValuesDateTimeFormatChanged(const QString&);
0140     void curveValuesPrefixChanged(const QString&);
0141     void curveValuesSuffixChanged(const QString&);
0142     void curveValuesFontChanged(QFont);
0143     void curveValuesColorChanged(QColor);
0144 
0145     //"Error bars"-Tab
0146     void curveXErrorTypeChanged(ErrorBar::Type);
0147     void curveXErrorPlusColumnChanged(const AbstractColumn*);
0148     void curveXErrorMinusColumnChanged(const AbstractColumn*);
0149     void curveYErrorTypeChanged(ErrorBar::Type);
0150     void curveYErrorPlusColumnChanged(const AbstractColumn*);
0151     void curveYErrorMinusColumnChanged(const AbstractColumn*);
0152 
0153     //"Margin Plots"-Tab
0154     void curveRugEnabledChanged(bool);
0155     void curveRugOrientationChanged(WorksheetElement::Orientation);
0156     void curveRugLengthChanged(double);
0157     void curveRugWidthChanged(double);
0158     void curveRugOffsetChanged(double);
0159 
0160     // load and save
0161     void loadConfigFromTemplate(KConfig&);
0162     void saveConfigAsTemplate(KConfig&);
0163 
0164 Q_SIGNALS:
0165     void info(const QString&);
0166 
0167     friend class MultiRangeTest;
0168 };
0169 
0170 #endif