File indexing completed on 2025-02-02 04:11:31

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #ifndef GRADIENTLISTWIDGET_H
0008 #define GRADIENTLISTWIDGET_H
0009 
0010 #include <memory>
0011 #include <QWidget>
0012 
0013 #include "widgets/dialogs/selection_manager.hpp"
0014 
0015 namespace glaxnimate::model {
0016     class Document;
0017     class Fill;
0018     class Stroke;
0019     class BrushStyle;
0020     class Gradient;
0021 } // namespace glaxnimate::model
0022 
0023 namespace glaxnimate::gui {
0024 
0025 class GradientListWidget : public QWidget
0026 {
0027     Q_OBJECT
0028 
0029 public:
0030     GradientListWidget(QWidget* parent = nullptr);
0031     ~GradientListWidget();
0032 
0033     void set_document(model::Document* doc);
0034     void set_targets(const std::vector<model::Fill*>& fills, const std::vector<model::Stroke*>& strokes);
0035     void set_current(model::Fill* fill, model::Stroke* stroke);
0036     void set_window(glaxnimate::gui::SelectionManager* window);
0037 
0038 protected:
0039     void changeEvent ( QEvent* e ) override;
0040 
0041 private Q_SLOTS:
0042     void change_current_gradient();
0043 
0044 Q_SIGNALS:
0045     void selected(model::Gradient* gradient, bool secondary);
0046 
0047 private:
0048     class Private;
0049     std::unique_ptr<Private> d;
0050 };
0051 
0052 } // namespace glaxnimate::gui
0053 
0054 #endif // GRADIENTLISTWIDGET_H