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 DOCUMENTSWATCHWIDGET_H
0008 #define DOCUMENTSWATCHWIDGET_H
0009 
0010 #include <QWidget>
0011 #include <memory>
0012 
0013 
0014 namespace color_widgets {
0015 class ColorPaletteModel;
0016 } // namespace color_widgets
0017 
0018 namespace glaxnimate::model {
0019 class Document;
0020 class BrushStyle;
0021 class NamedColor;
0022 } // namespace glaxnimate::model
0023 
0024 namespace glaxnimate::gui {
0025 
0026 class DocumentSwatchWidget : public QWidget
0027 {
0028     Q_OBJECT
0029 public:
0030     DocumentSwatchWidget(QWidget* parent = nullptr);
0031     ~DocumentSwatchWidget();
0032 
0033     void set_document(model::Document* document);
0034 
0035     void add_new_color(const QColor& color);
0036 
0037     model::NamedColor* current_color() const;
0038 
0039     void set_palette_model(color_widgets::ColorPaletteModel* palette_model);
0040 
0041 protected:
0042     void changeEvent ( QEvent* e ) override;
0043 
0044 private Q_SLOTS:
0045     void swatch_link(int index, Qt::KeyboardModifiers mod);
0046     void swatch_add();
0047     void swatch_palette_color_added(int index);
0048     void swatch_palette_color_removed(int index);
0049     void swatch_palette_color_changed(int index);
0050     void swatch_doc_color_added(int position, model::NamedColor* color);
0051     void swatch_doc_color_removed(int pos);
0052     void swatch_doc_color_changed(int position, model::NamedColor* color);
0053     void swatch_menu(int index);
0054 
0055     void generate();
0056     void open();
0057     void save();
0058 
0059 Q_SIGNALS:
0060     void current_color_def(model::BrushStyle* def);
0061     void secondary_color_def(model::BrushStyle* def);
0062     void needs_new_color();
0063 
0064 private:
0065     class Private;
0066     std::unique_ptr<Private> d;
0067 };
0068 
0069 } // namespace glaxnimate::gui
0070 
0071 #endif // DOCUMENTSWATCHWIDGET_H