File indexing completed on 2025-07-13 03:32:43
0001 /* 0002 File : HistogramDock.h 0003 Project : LabPlot 0004 Description : widget for histogram plot properties 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2016 Anu Mittal <anu22mittal@gmail.com> 0007 SPDX-FileCopyrightText: 2016-2024 Alexander Semke <alexander.semke@web.de> 0008 0009 SPDX-License-Identifier: GPL-2.0-or-later 0010 */ 0011 0012 #ifndef HISTOGRAMDOCK_H 0013 #define HISTOGRAMDOCK_H 0014 0015 #include "backend/worksheet/plots/cartesian/ErrorBar.h" 0016 #include "backend/worksheet/plots/cartesian/Histogram.h" 0017 #include "kdefrontend/dockwidgets/BaseDock.h" 0018 #include "ui_histogramdock.h" 0019 0020 class BackgroundWidget; 0021 class ErrorBarStyleWidget; 0022 class LineWidget; 0023 class SymbolWidget; 0024 class ValueWidget; 0025 class TreeViewComboBox; 0026 0027 class HistogramDock : public BaseDock { 0028 Q_OBJECT 0029 0030 public: 0031 explicit HistogramDock(QWidget*); 0032 ~HistogramDock() override; 0033 0034 void setCurves(QList<Histogram*>); 0035 0036 private: 0037 TreeViewComboBox* cbDataColumn; 0038 TreeViewComboBox* cbErrorPlusColumn; 0039 TreeViewComboBox* cbErrorMinusColumn; 0040 0041 void updateValuesWidgets(); 0042 void updateLocale() override; 0043 void load(); 0044 void loadConfig(KConfig&); 0045 0046 protected: 0047 Ui::HistogramDock ui; 0048 BackgroundWidget* backgroundWidget{nullptr}; 0049 LineWidget* lineWidget{nullptr}; 0050 SymbolWidget* symbolWidget{nullptr}; 0051 ValueWidget* valueWidget{nullptr}; 0052 ErrorBarStyleWidget* errorBarStyleWidget{nullptr}; 0053 0054 QList<Histogram*> m_curvesList; 0055 Histogram* m_curve{nullptr}; 0056 0057 virtual void setModel(); 0058 0059 private Q_SLOTS: 0060 void init(); 0061 void retranslateUi(); 0062 0063 // SLOTs for changes triggered in HistogramDock 0064 0065 // General-Tab 0066 void dataColumnChanged(const QModelIndex&); 0067 void typeChanged(int); 0068 void orientationChanged(int); 0069 void normalizationChanged(int); 0070 void binningMethodChanged(int); 0071 void binCountChanged(int); 0072 void binWidthChanged(double); 0073 void autoBinRangesChanged(bool); 0074 void binRangesMinChanged(double); 0075 void binRangesMaxChanged(double); 0076 void binRangesMinDateTimeChanged(qint64); 0077 void binRangesMaxDateTimeChanged(qint64); 0078 0079 //"Error bars"-Tab 0080 void errorTypeChanged(int); 0081 void errorPlusColumnChanged(const QModelIndex&); 0082 void errorMinusColumnChanged(const QModelIndex&); 0083 0084 //"Margin Plots"-Tab 0085 void rugEnabledChanged(bool); 0086 void rugLengthChanged(double) const; 0087 void rugWidthChanged(double) const; 0088 void rugOffsetChanged(double) const; 0089 0090 // SLOTs for changes triggered in Histogram 0091 // General-Tab 0092 void curveDataColumnChanged(const AbstractColumn*); 0093 void curveTypeChanged(Histogram::Type); 0094 void curveOrientationChanged(Histogram::Orientation); 0095 void curveNormalizationChanged(Histogram::Normalization); 0096 void curveBinningMethodChanged(Histogram::BinningMethod); 0097 void curveBinCountChanged(int); 0098 void curveBinWidthChanged(double); 0099 void curveAutoBinRangesChanged(bool); 0100 void curveBinRangesMinChanged(double); 0101 void curveBinRangesMaxChanged(double); 0102 0103 //"Error bars"-Tab 0104 void curveErrorTypeChanged(ErrorBar::Type); 0105 void curveErrorPlusColumnChanged(const AbstractColumn*); 0106 void curveErrorMinusColumnChanged(const AbstractColumn*); 0107 0108 //"Margin Plots"-Tab 0109 void curveRugEnabledChanged(bool); 0110 void curveRugLengthChanged(double); 0111 void curveRugWidthChanged(double); 0112 void curveRugOffsetChanged(double); 0113 0114 // load and save 0115 void loadConfigFromTemplate(KConfig&); 0116 void saveConfigAsTemplate(KConfig&); 0117 0118 Q_SIGNALS: 0119 void info(const QString&); 0120 }; 0121 0122 #endif