File indexing completed on 2025-02-02 04:22:09
0001 /* 0002 * SPDX-FileCopyrightText: 2008 Boudewijn Rempt <boud@valdyas.org> 0003 * SPDX-FileCopyrightText: 2014 Mohit Goyal <mohit.bits2011@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #ifndef KIS_BRUSH_SELECTION_WIDGET_H 0008 #define KIS_BRUSH_SELECTION_WIDGET_H 0009 0010 #include <QWidget> 0011 0012 #include <KoGroupButton.h> 0013 0014 #include <kis_properties_configuration.h> 0015 #include <kis_brush.h> 0016 0017 #include "kis_precision_option.h" 0018 #include "ui_wdgbrushchooser.h" 0019 0020 #include <lager/cursor.hpp> 0021 #include <KisBrushModel.h> 0022 #include <KisBrushOptionWidgetFlags.h> 0023 0024 class KisAutoBrushWidget; 0025 class KisPredefinedBrushChooser; 0026 class KisTextBrushChooser; 0027 class KisCustomBrushWidget; 0028 class KisClipboardBrushWidget; 0029 class KisBrush; 0030 class QStackedWidget; 0031 class KisAutoBrushModel; 0032 class KisPredefinedBrushModel; 0033 class KisTextBrushModel; 0034 0035 /** 0036 *Compound widget that collects all the various brush selection widgets. 0037 */ 0038 class PAINTOP_EXPORT KisBrushSelectionWidget : public QWidget 0039 { 0040 Q_OBJECT 0041 0042 public: 0043 KisBrushSelectionWidget(int maxBrushSize, 0044 KisAutoBrushModel *autoBrushModel, 0045 KisPredefinedBrushModel *predefinedBrushModel, 0046 KisTextBrushModel *textBrushModel, 0047 lager::cursor<KisBrushModel::BrushType> brushType, 0048 lager::cursor<KisBrushModel::PrecisionData> precisionData, 0049 KisBrushOptionWidgetFlags flags, 0050 QWidget *parent = 0); 0051 0052 ~KisBrushSelectionWidget() override; 0053 0054 KisBrushSP brush() const; 0055 0056 void setImage(KisImageWSP image); 0057 void hideOptions(const QStringList &options); 0058 0059 lager::reader<bool> lightnessModeEnabled() const; 0060 0061 Q_SIGNALS: 0062 0063 void sigBrushChanged(); 0064 void sigPrecisionChanged(); 0065 0066 private: 0067 void setCurrentWidget(QWidget *widget); 0068 void addChooser(const QString & text, QWidget *widget, int id, KoGroupButton::GroupPosition pos); 0069 0070 private: 0071 enum Type { 0072 AUTOBRUSH, 0073 PREDEFINEDBRUSH, 0074 TEXTBRUSH, 0075 }; 0076 0077 Ui_WdgBrushChooser uiWdgBrushChooser; 0078 QGridLayout *m_layout {0}; 0079 QWidget *m_currentBrushWidget {0}; 0080 QHash<int, QWidget*> m_chooserMap; 0081 QButtonGroup *m_buttonGroup {0}; 0082 QSize m_minimumSize; 0083 QStackedWidget *m_stackedWidget{0}; 0084 0085 KisAutoBrushWidget *m_autoBrushWidget {0}; 0086 KisPredefinedBrushChooser *m_predefinedBrushWidget {0}; 0087 KisTextBrushChooser *m_textBrushWidget {0}; 0088 0089 struct Private; 0090 const QScopedPointer<Private> m_d; 0091 }; 0092 0093 #endif