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