File indexing completed on 2024-06-02 03:49:14

0001 /*
0002     File                 : BarPlotDock.h
0003     Project              : LabPlot
0004     Description          : Dock widget for the bar plot
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2022 Alexander Semke <alexander.semke@web.de>
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef BARPLOTDOCK_H
0011 #define BARPLOTDOCK_H
0012 
0013 #include "backend/worksheet/plots/cartesian/BarPlot.h"
0014 #include "kdefrontend/dockwidgets/BaseDock.h"
0015 #include "ui_barplotdock.h"
0016 
0017 class AbstractAspect;
0018 class BackgroundWidget;
0019 class LineWidget;
0020 class ValueWidget;
0021 class BarPlot;
0022 class TreeViewComboBox;
0023 class KConfig;
0024 
0025 class BarPlotDock : public BaseDock {
0026     Q_OBJECT
0027 
0028 public:
0029     explicit BarPlotDock(QWidget*);
0030     void setBarPlots(QList<BarPlot*>);
0031     void updateLocale() override;
0032 
0033 private:
0034     Ui::BarPlotDock ui;
0035     BackgroundWidget* backgroundWidget{nullptr};
0036     LineWidget* lineWidget{nullptr};
0037     ValueWidget* valueWidget{nullptr};
0038     QList<BarPlot*> m_barPlots;
0039     BarPlot* m_barPlot{nullptr};
0040     TreeViewComboBox* cbXColumn{nullptr};
0041 
0042     QGridLayout* m_gridLayout;
0043     QPushButton* m_buttonNew;
0044     QVector<TreeViewComboBox*> m_dataComboBoxes;
0045     QVector<QPushButton*> m_removeButtons;
0046 
0047     void setModel();
0048     void load();
0049     void loadConfig(KConfig&);
0050     void setDataColumns() const;
0051     void loadDataColumns();
0052 
0053 private Q_SLOTS:
0054     // SLOTs for changes triggered in BarPlotDock
0055 
0056     //"General"-tab
0057     void xColumnChanged(const QModelIndex&);
0058     void removeXColumn();
0059     void addDataColumn();
0060     void removeDataColumn();
0061     void dataColumnChanged(const QModelIndex&);
0062     void typeChanged(int);
0063     void orientationChanged(int);
0064 
0065     //"Box"-tab
0066     void currentBarChanged(int);
0067     void widthFactorChanged(int);
0068 
0069     // SLOTs for changes triggered in BarPlot
0070     // general
0071     void plotXColumnChanged(const AbstractColumn*);
0072     void plotDataColumnsChanged(const QVector<const AbstractColumn*>&);
0073     void plotTypeChanged(BarPlot::Type);
0074     void plotOrientationChanged(BarPlot::Orientation);
0075     void plotWidthFactorChanged(double);
0076 
0077     // load and save
0078     void loadConfigFromTemplate(KConfig&);
0079     void saveConfigAsTemplate(KConfig&);
0080 
0081 Q_SIGNALS:
0082     void info(const QString&);
0083 };
0084 
0085 #endif