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