File indexing completed on 2024-05-12 15:27:57
0001 /*************************************************************************** 0002 File : CartesianPlotDock.h 0003 Project : LabPlot 0004 Description : widget for cartesian plot properties 0005 -------------------------------------------------------------------- 0006 Copyright : (C) 2011-2020 Alexander Semke (alexander.semke@web.de) 0007 Copyright : (C) 2012-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 0030 #ifndef CARTESIANPLOTDOCK_H 0031 #define CARTESIANPLOTDOCK_H 0032 0033 #include "backend/worksheet/Worksheet.h" 0034 #include "backend/worksheet/plots/cartesian/CartesianPlot.h" 0035 #include "ui_cartesianplotdock.h" 0036 #include "kdefrontend/dockwidgets/BaseDock.h" 0037 0038 #include <KConfig> 0039 0040 template <class T> class QList; 0041 class LabelWidget; 0042 class ThemeHandler; 0043 class KLocalizedString; 0044 0045 class CartesianPlotDock : public BaseDock { 0046 Q_OBJECT 0047 0048 public: 0049 explicit CartesianPlotDock(QWidget*); 0050 void setPlots(QList<CartesianPlot*>); 0051 void activateTitleTab(); 0052 void updateLocale() override; 0053 void updateUnits() override; 0054 0055 private: 0056 Ui::CartesianPlotDock ui; 0057 QList<CartesianPlot*> m_plotList; 0058 CartesianPlot* m_plot{nullptr}; 0059 LabelWidget* labelWidget{nullptr}; 0060 ThemeHandler* m_themeHandler; 0061 0062 void loadConfig(KConfig&); 0063 0064 private slots: 0065 void init(); 0066 void retranslateUi(); 0067 0068 //SLOTs for changes triggered in CartesianPlotDock 0069 //"General"-tab 0070 void visibilityChanged(bool); 0071 void geometryChanged(); 0072 void layoutChanged(Worksheet::Layout); 0073 0074 void rangeTypeChanged(); 0075 void rangeFirstChanged(const QString&); 0076 void rangeLastChanged(const QString&); 0077 0078 void autoScaleXChanged(int); 0079 void xMinChanged(const QString&); 0080 void xMaxChanged(const QString&); 0081 void xMinDateTimeChanged(const QDateTime&); 0082 void xMaxDateTimeChanged(const QDateTime&); 0083 void xRangeFormatChanged(int); 0084 void xScaleChanged(int); 0085 0086 void autoScaleYChanged(int); 0087 void yMinChanged(const QString&); 0088 void yMaxChanged(const QString&); 0089 void yMinDateTimeChanged(const QDateTime&); 0090 void yMaxDateTimeChanged(const QDateTime&); 0091 void yRangeFormatChanged(int); 0092 void yScaleChanged(int); 0093 0094 //"Range Breaks"-tab 0095 void toggleXBreak(bool); 0096 void addXBreak(); 0097 void removeXBreak(); 0098 void currentXBreakChanged(int); 0099 void xBreakStartChanged(); 0100 void xBreakEndChanged(); 0101 void xBreakPositionChanged(int); 0102 void xBreakStyleChanged(int); 0103 0104 void toggleYBreak(bool); 0105 void addYBreak(); 0106 void removeYBreak(); 0107 void currentYBreakChanged(int); 0108 void yBreakStartChanged(); 0109 void yBreakEndChanged(); 0110 void yBreakPositionChanged(int); 0111 void yBreakStyleChanged(int); 0112 0113 //"Plot area"-tab 0114 void backgroundTypeChanged(int); 0115 void backgroundColorStyleChanged(int); 0116 void backgroundImageStyleChanged(int); 0117 void backgroundBrushStyleChanged(int); 0118 void backgroundFirstColorChanged(const QColor&); 0119 void backgroundSecondColorChanged(const QColor&); 0120 void selectFile(); 0121 void fileNameChanged(); 0122 void backgroundOpacityChanged(int); 0123 void borderStyleChanged(int); 0124 void borderColorChanged(const QColor&); 0125 void borderWidthChanged(double); 0126 void borderCornerRadiusChanged(double); 0127 void borderOpacityChanged(int); 0128 void symmetricPaddingChanged(bool); 0129 void horizontalPaddingChanged(double); 0130 void rightPaddingChanged(double); 0131 void verticalPaddingChanged(double); 0132 void bottomPaddingChanged(double); 0133 0134 // "Cursor"-tab 0135 void cursorLineWidthChanged(int); 0136 void cursorLineColorChanged(const QColor&); 0137 void cursorLineStyleChanged(int); 0138 0139 //SLOTs for changes triggered in CartesianPlot 0140 //general 0141 void plotDescriptionChanged(const AbstractAspect*); 0142 void plotRectChanged(QRectF&); 0143 void plotRangeTypeChanged(CartesianPlot::RangeType); 0144 void plotRangeFirstValuesChanged(int); 0145 void plotRangeLastValuesChanged(int); 0146 0147 void plotXAutoScaleChanged(bool); 0148 void plotXMinChanged(double); 0149 void plotXMaxChanged(double); 0150 void plotXRangeFormatChanged(CartesianPlot::RangeFormat); 0151 void plotXScaleChanged(CartesianPlot::Scale); 0152 0153 0154 void plotYAutoScaleChanged(bool); 0155 void plotYMinChanged(double); 0156 void plotYMaxChanged(double); 0157 void plotYRangeFormatChanged(CartesianPlot::RangeFormat); 0158 void plotYScaleChanged(CartesianPlot::Scale); 0159 0160 void plotVisibleChanged(bool); 0161 0162 //range breaks 0163 void plotXRangeBreakingEnabledChanged(bool); 0164 void plotXRangeBreaksChanged(const CartesianPlot::RangeBreaks&); 0165 void plotYRangeBreakingEnabledChanged(bool); 0166 void plotYRangeBreaksChanged(const CartesianPlot::RangeBreaks&); 0167 0168 //background 0169 void plotBackgroundTypeChanged(PlotArea::BackgroundType); 0170 void plotBackgroundColorStyleChanged(PlotArea::BackgroundColorStyle); 0171 void plotBackgroundImageStyleChanged(PlotArea::BackgroundImageStyle); 0172 void plotBackgroundBrushStyleChanged(Qt::BrushStyle); 0173 void plotBackgroundFirstColorChanged(QColor&); 0174 void plotBackgroundSecondColorChanged(QColor&); 0175 void plotBackgroundFileNameChanged(QString&); 0176 void plotBackgroundOpacityChanged(float); 0177 void plotBorderPenChanged(QPen&); 0178 void plotBorderCornerRadiusChanged(float); 0179 void plotBorderOpacityChanged(float); 0180 void plotHorizontalPaddingChanged(float); 0181 void plotVerticalPaddingChanged(float); 0182 void plotRightPaddingChanged(double); 0183 void plotBottomPaddingChanged(double); 0184 void plotSymmetricPaddingChanged(bool); 0185 0186 // Cursor 0187 void plotCursorPenChanged(const QPen&); 0188 0189 //save/load template 0190 void loadConfigFromTemplate(KConfig&); 0191 void saveConfigAsTemplate(KConfig&); 0192 0193 //save/load themes 0194 void loadTheme(const QString&); 0195 void saveTheme(KConfig& config) const; 0196 0197 void load(); 0198 0199 signals: 0200 void info(const QString&); 0201 }; 0202 0203 #endif