File indexing completed on 2024-05-12 15:27:55
0001 /*************************************************************************** 0002 File : AxisDock.h 0003 Project : LabPlot 0004 Description : axes widget class 0005 -------------------------------------------------------------------- 0006 Copyright : (C) 2011-2018 by Alexander Semke (alexander.semke@web.de) 0007 Copyright : (C) 2013 by Stefan Gerlach (stefan.gerlach@uni-konstanz.de) 0008 0009 ***************************************************************************/ 0010 0011 /*************************************************************************** 0012 * * 0013 * This program is free software; you can redistribute it and/or modify * 0014 * it under the terms of the GNU General Public License as published by * 0015 * the Free Software Foundation; either version 2 of the License, or * 0016 * (at your option) any later version. * 0017 * * 0018 * This program is distributed in the hope that it will be useful, * 0019 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0021 * GNU General Public License for more details. * 0022 * * 0023 * You should have received a copy of the GNU General Public License * 0024 * along with this program; if not, write to the Free Software * 0025 * Foundation, Inc., 51 Franklin Street, Fifth Floor, * 0026 * Boston, MA 02110-1301 USA * 0027 * * 0028 ***************************************************************************/ 0029 #ifndef AXISDOCK_H 0030 #define AXISDOCK_H 0031 0032 #include "ui_axisdock.h" 0033 #include "backend/worksheet/plots/cartesian/Axis.h" 0034 #include "kdefrontend/dockwidgets/BaseDock.h" 0035 #include <KConfig> 0036 0037 class AbstractAspect; 0038 class LabelWidget; 0039 class TreeViewComboBox; 0040 class AspectTreeModel; 0041 class AbstractColumn; 0042 class DateTimeSpinBox; 0043 0044 class AxisDock : public BaseDock { 0045 Q_OBJECT 0046 0047 public: 0048 explicit AxisDock(QWidget*); 0049 ~AxisDock() override; 0050 0051 void setAxes(QList<Axis*>); 0052 void activateTitleTab(); 0053 void updateLocale() override; 0054 0055 private: 0056 Ui::AxisDock ui; 0057 QList<Axis*> m_axesList; 0058 Axis* m_axis{nullptr}; 0059 AspectTreeModel* m_aspectTreeModel{nullptr}; 0060 LabelWidget* labelWidget; 0061 TreeViewComboBox* cbMajorTicksColumn; 0062 TreeViewComboBox* cbMinorTicksColumn; 0063 bool m_dataChanged{false}; 0064 0065 void setModel(); 0066 void setModelIndexFromColumn(TreeViewComboBox*, const AbstractColumn*); 0067 0068 void load(); 0069 void loadConfig(KConfig&); 0070 0071 // own created widgets 0072 DateTimeSpinBox* dtsbMajorTicksIncrement {nullptr}; 0073 DateTimeSpinBox* dtsbMinorTicksIncrement {nullptr}; 0074 0075 private slots: 0076 void init(); 0077 0078 //SLOTs for changes triggered in AxisDock 0079 //"General"-tab 0080 void visibilityChanged(bool); 0081 void orientationChanged(int); 0082 void positionChanged(int); 0083 void positionChanged(); 0084 void scaleChanged(int); 0085 void autoScaleChanged(int); 0086 void startChanged(); 0087 void endChanged(); 0088 void startDateTimeChanged(const QDateTime&); 0089 void endDateTimeChanged(const QDateTime&); 0090 void zeroOffsetChanged(); 0091 void scalingFactorChanged(); 0092 0093 //Line-Tab 0094 void lineStyleChanged(int); 0095 void lineColorChanged(const QColor&); 0096 void lineWidthChanged(double); 0097 void lineOpacityChanged(int); 0098 void arrowPositionChanged(int); 0099 void arrowTypeChanged(int); 0100 void arrowSizeChanged(int); 0101 0102 //"Major ticks"-tab 0103 void majorTicksDirectionChanged(int); 0104 void majorTicksTypeChanged(int); 0105 void majorTicksNumberChanged(int); 0106 void majorTicksSpacingChanged(); 0107 void majorTicksColumnChanged(const QModelIndex&); 0108 void majorTicksLineStyleChanged(int); 0109 void majorTicksColorChanged(const QColor&); 0110 void majorTicksWidthChanged(double); 0111 void majorTicksLengthChanged(double); 0112 void majorTicksOpacityChanged(int); 0113 0114 //"Minor ticks"-tab 0115 void minorTicksDirectionChanged(int); 0116 void minorTicksTypeChanged(int); 0117 void minorTicksNumberChanged(int); 0118 void minorTicksSpacingChanged(); 0119 void minorTicksColumnChanged(const QModelIndex&); 0120 void minorTicksLineStyleChanged(int); 0121 void minorTicksColorChanged(const QColor&); 0122 void minorTicksWidthChanged(double); 0123 void minorTicksLengthChanged(double); 0124 void minorTicksOpacityChanged(int); 0125 0126 //"Extra ticks"-tab 0127 0128 //"Tick labels"-tab 0129 void labelsFormatChanged(int); 0130 void labelsPrecisionChanged(int); 0131 void labelsAutoPrecisionChanged(int); 0132 void labelsDateTimeFormatChanged(int); 0133 void labelsPositionChanged(int); 0134 void labelsOffsetChanged(double); 0135 void labelsRotationChanged(int); 0136 void labelsFontChanged(const QFont&); 0137 void labelsFontColorChanged(const QColor&); 0138 void labelsBackgroundTypeChanged(int); 0139 void labelsBackgroundColorChanged(const QColor&); 0140 void labelsPrefixChanged(); 0141 void labelsSuffixChanged(); 0142 void labelsOpacityChanged(int); 0143 0144 //"Grid"-tab 0145 void majorGridStyleChanged(int); 0146 void majorGridColorChanged(const QColor&); 0147 void majorGridWidthChanged(double); 0148 void majorGridOpacityChanged(int); 0149 0150 void minorGridStyleChanged(int); 0151 void minorGridColorChanged(const QColor&); 0152 void minorGridWidthChanged(double); 0153 void minorGridOpacityChanged(int); 0154 0155 //SLOTs for changes triggered in Axis 0156 //General-Tab 0157 void axisDescriptionChanged(const AbstractAspect*); 0158 void axisOrientationChanged(Axis::Orientation); 0159 void axisPositionChanged(Axis::Position); 0160 void axisPositionChanged(double); 0161 void axisScaleChanged(Axis::Scale); 0162 void axisAutoScaleChanged(bool); 0163 void axisStartChanged(double); 0164 void axisEndChanged(double); 0165 void axisZeroOffsetChanged(qreal); 0166 void axisScalingFactorChanged(qreal); 0167 0168 //line 0169 void axisLinePenChanged(const QPen&); 0170 void axisLineOpacityChanged(qreal); 0171 void axisArrowTypeChanged(Axis::ArrowType); 0172 void axisArrowPositionChanged(Axis::ArrowPosition); 0173 void axisArrowSizeChanged(qreal); 0174 0175 //ticks 0176 void axisMajorTicksDirectionChanged(Axis::TicksDirection); 0177 void axisMajorTicksTypeChanged(Axis::TicksType); 0178 void axisMajorTicksNumberChanged(int); 0179 void axisMajorTicksSpacingChanged(qreal); 0180 void axisMajorTicksPenChanged(const QPen&); 0181 void axisMajorTicksLengthChanged(qreal); 0182 void axisMajorTicksOpacityChanged(qreal); 0183 void axisMinorTicksDirectionChanged(Axis::TicksDirection); 0184 void axisMinorTicksTypeChanged(Axis::TicksType); 0185 void axisMinorTicksNumberChanged(int); 0186 void axisMinorTicksSpacingChanged(qreal); 0187 void axisMinorTicksPenChanged(const QPen&); 0188 void axisMinorTicksLengthChanged(qreal); 0189 void axisMinorTicksOpacityChanged(qreal); 0190 0191 //labels 0192 void axisLabelsFormatChanged(Axis::LabelsFormat); 0193 void axisLabelsAutoPrecisionChanged(bool); 0194 void axisLabelsPrecisionChanged(int); 0195 void axisLabelsDateTimeFormatChanged(const QString&); 0196 void axisLabelsPositionChanged(Axis::LabelsPosition); 0197 void axisLabelsOffsetChanged(double); 0198 void axisLabelsRotationAngleChanged(qreal); 0199 void axisLabelsFontChanged(const QFont&); 0200 void axisLabelsFontColorChanged(const QColor&); 0201 void axisLabelsBackgroundTypeChanged(Axis::LabelsBackgroundType); 0202 void axisLabelsBackgroundColorChanged(const QColor&); 0203 void axisLabelsPrefixChanged(const QString&); 0204 void axisLabelsSuffixChanged(const QString&); 0205 void axisLabelsOpacityChanged(qreal); 0206 0207 //grids 0208 void axisMajorGridPenChanged(const QPen&); 0209 void axisMajorGridOpacityChanged(qreal); 0210 void axisMinorGridPenChanged(const QPen&); 0211 void axisMinorGridOpacityChanged(qreal); 0212 0213 void axisVisibilityChanged(bool); 0214 0215 //save/load template 0216 void loadConfigFromTemplate(KConfig&); 0217 void saveConfigAsTemplate(KConfig&); 0218 0219 signals: 0220 void info(const QString&); 0221 }; 0222 0223 #endif