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