Krita Source Code Documentation
Loading...
Searching...
No Matches
KisControlFrame Class Reference

#include <kis_control_frame.h>

+ Inheritance diagram for KisControlFrame:

Public Member Functions

 KisControlFrame (KisViewManager *view, QWidget *parent=0, const char *name=0)
 
KisPaintopBoxpaintopBox ()
 
void setup (QWidget *parent)
 
 ~KisControlFrame () override
 

Private Slots

void slotSetGradient (KoAbstractGradientSP gradient)
 
void slotSetPattern (KoPatternSP pattern)
 
void slotUpdateDisplayRenderer ()
 
void updateGradientPreviewOnPopupButton (KoAbstractGradientSP gradient)
 

Private Member Functions

void createDockerBox (KisViewManager *view)
 
void createGradientsChooser (KisViewManager *view)
 
void createPatternsChooser (KisViewManager *view)
 

Private Attributes

KoCheckerBoardPainter m_checkersPainter
 
KisDockerHudm_dockerPopup {nullptr}
 
KisIconWidgetm_dockerPopupButton {nullptr}
 
KoDualColorButtonm_dual {nullptr}
 
KisGradientChooserm_gradientChooser {nullptr}
 
QWidget * m_gradientChooserPopup {nullptr}
 
QTabWidget * m_gradientTab {nullptr}
 
KisIconWidgetm_gradientWidget {nullptr}
 
KisPaintopBoxm_paintopBox {nullptr}
 
KisPatternChooserm_patternChooser {nullptr}
 
QWidget * m_patternChooserPopup {nullptr}
 
QTabWidget * m_patternsTab {nullptr}
 
KisIconWidgetm_patternWidget {nullptr}
 
KisViewManagerm_viewManager {nullptr}
 

Detailed Description

Control Frame - status display with access to color selector, gradient, patterns, and paintop presets

Definition at line 35 of file kis_control_frame.h.

Constructor & Destructor Documentation

◆ KisControlFrame()

KisControlFrame::KisControlFrame ( KisViewManager * view,
QWidget * parent = 0,
const char * name = 0 )

Definition at line 53 of file kis_control_frame.cpp.

54 : QObject(view)
55 , m_viewManager(view)
57{
58 setObjectName(name);
59
61 m_patternWidget->setToolTip(i18n("Fill Patterns"));
62 m_patternWidget->setFixedSize(32, 32);
63
65 m_gradientWidget->setToolTip(i18n("Fill Gradients"));
66 m_gradientWidget->setFixedSize(32, 32);
67}
KisIconWidget * m_patternWidget
KoCheckerBoardPainter m_checkersPainter
KisViewManager * m_viewManager
KisIconWidget * m_gradientWidget
const QString Patterns
const QString Gradients

References ResourceType::Gradients, m_gradientWidget, m_patternWidget, and ResourceType::Patterns.

◆ ~KisControlFrame()

KisControlFrame::~KisControlFrame ( )
inlineoverride

Definition at line 42 of file kis_control_frame.h.

42{}

Member Function Documentation

◆ createDockerBox()

void KisControlFrame::createDockerBox ( KisViewManager * view)
private

Definition at line 274 of file kis_control_frame.cpp.

275{
276 KConfigGroup grp = KSharedConfig::openConfig()->group("krita").group("Toolbar BrushesAndStuff");
277 int iconsize = grp.readEntry("IconSize", 22);
278 // NOTE: buttonsize should be the same value as the one used in ktoolbar for all QToolButton
279 int buttonsize = grp.readEntry("ButtonSize", 32);
280
282 m_dockerPopupButton->setIcon(KisIconUtils::loadIcon("view-list-details"));
283 m_dockerPopupButton->setToolTip(i18n("Docker box"));
284 m_dockerPopupButton->setFixedSize(buttonsize, buttonsize);
285 m_dockerPopupButton->setIconSize(QSize(iconsize, iconsize));
286 m_dockerPopupButton->setAutoRaise(true);
288
289 m_dockerPopup = new KisDockerHud(i18n("Toolbar Docker Box"), "toolbar");
290 // Set a reasonable minimum size so that dockers capable of being tiny are not,
291 // but are not too big either
292 m_dockerPopup->setMinimumHeight(300);
293 m_dockerPopup->setMinimumWidth(300);
295
296 QWidgetAction* action = new QWidgetAction(this);
297 KisActionRegistry::instance()->propertizeAction("docker_box", action);
298 view->actionCollection()->addAction("docker_box", action);
299 connect(action, SIGNAL(triggered()), m_dockerPopupButton, SLOT(showPopupWidget()));
300 m_dockerPopup->addAction(action);
301}
bool propertizeAction(const QString &name, QAction *a)
static KisActionRegistry * instance()
KisDockerHud * m_dockerPopup
KisIconWidget * m_dockerPopupButton
Q_INVOKABLE QAction * addAction(const QString &name, QAction *action)
void setPopupWidget(QWidget *widget)
void setArrowVisible(bool v)
virtual KisKActionCollection * actionCollection() const
QIcon loadIcon(const QString &name)

References KisViewManager::actionCollection(), KisKActionCollection::addAction(), KisActionRegistry::instance(), KisIconUtils::loadIcon(), m_dockerPopup, m_dockerPopupButton, KisActionRegistry::propertizeAction(), KisPopupButton::setArrowVisible(), and KisPopupButton::setPopupWidget().

◆ createGradientsChooser()

void KisControlFrame::createGradientsChooser ( KisViewManager * view)
private

Definition at line 226 of file kis_control_frame.cpp.

227{
231 }
232
234 m_gradientChooserPopup->setObjectName("gradient_chooser_popup");
235 QHBoxLayout * l2 = new QHBoxLayout(m_gradientChooserPopup);
236 l2->setObjectName("gradientpopuplayout");
237
238 m_gradientTab = new QTabWidget(m_gradientChooserPopup);
239 m_gradientTab->setObjectName("gradientstab");
240 m_gradientTab->setFocusPolicy(Qt::NoFocus);
241 l2->addWidget(m_gradientTab);
242
245 QWidget *gradientChooserPage = new QWidget(m_gradientChooserPopup);
246 QHBoxLayout *gradientChooserPageLayout = new QHBoxLayout(gradientChooserPage);
247 gradientChooserPageLayout->addWidget(m_gradientChooser);
248 m_gradientTab->addTab(gradientChooserPage, i18n("Gradients"));
249
250 connect(m_gradientChooser, SIGNAL(resourceSelected(KoResourceSP)),
251 view->canvasResourceProvider(), SLOT(slotGradientActivated(KoResourceSP)));
252 connect (view->mainWindowAsQWidget(), SIGNAL(themeChanged()), m_gradientChooser, SLOT(slotUpdateIcons()));
253 connect(view->canvasResourceProvider(), SIGNAL(sigGradientChanged(KoAbstractGradientSP)),
255 connect(m_gradientChooser, SIGNAL(gradientEdited(KoAbstractGradientSP)),
257
258
259 // set the Foreground to Transparent gradient as default on startup
261 QVector<KoResourceSP> resources = resModel.resourcesForFilename("Foreground to Transparent.svg");
262
263 if (resources.size() > 0) {
264 m_gradientChooser->setCurrentResource(resources.first());
265 if (view->canvasResourceProvider()) {
266 view->canvasResourceProvider()->slotGradientActivated(resources.first());
267 }
268 }
269
271}
KoCanvasResourceProvider * resourceManager()
void slotGradientActivated(KoResourceSP gradient)
QWidget * m_gradientChooserPopup
KisGradientChooser * m_gradientChooser
void slotSetGradient(KoAbstractGradientSP gradient)
void updateGradientPreviewOnPopupButton(KoAbstractGradientSP gradient)
QTabWidget * m_gradientTab
void setCanvasResourcesInterface(KoCanvasResourcesInterfaceSP canvasResourcesInterface)
void setCurrentResource(KoResourceSP resource)
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...
QWidget * mainWindowAsQWidget() const
KisCanvasResourceProvider * canvasResourceProvider()
KoCanvasResourcesInterfaceSP canvasResourcesInterface() const

References KisViewManager::canvasResourceProvider(), KoCanvasResourceProvider::canvasResourcesInterface(), ResourceType::Gradients, m_gradientChooser, m_gradientChooserPopup, m_gradientTab, m_gradientWidget, KisViewManager::mainWindowAsQWidget(), KisCanvasResourceProvider::resourceManager(), KisResourceModel::resourcesForFilename(), KisGradientChooser::setCanvasResourcesInterface(), KisGradientChooser::setCurrentResource(), KisPopupButton::setPopupWidget(), KisCanvasResourceProvider::slotGradientActivated(), slotSetGradient(), and updateGradientPreviewOnPopupButton().

◆ createPatternsChooser()

void KisControlFrame::createPatternsChooser ( KisViewManager * view)
private

Definition at line 177 of file kis_control_frame.cpp.

178{
181 m_patternChooserPopup->setMinimumSize(450, 400);
182 m_patternChooserPopup->setObjectName("pattern_chooser_popup");
183 QHBoxLayout * l2 = new QHBoxLayout(m_patternChooserPopup);
184 l2->setObjectName("patternpopuplayout");
185
186 m_patternsTab = new QTabWidget(m_patternChooserPopup);
187 m_patternsTab->setObjectName("patternstab");
188 m_patternsTab->setFocusPolicy(Qt::NoFocus);
189 l2->addWidget(m_patternsTab);
190
192 m_patternChooser->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
193 QWidget *patternChooserPage = new QWidget(m_patternChooserPopup);
194 QHBoxLayout *patternChooserPageLayout = new QHBoxLayout(patternChooserPage);
195 patternChooserPageLayout->addWidget(m_patternChooser);
196 m_patternsTab->addTab(patternChooserPage, i18n("Patterns"));
197
198 KisCustomPattern *customPatterns = new KisCustomPattern(0, "custompatterns",
199 i18n("Custom Pattern"), m_viewManager);
200 m_patternsTab->addTab(customPatterns, i18n("Custom Pattern"));
201
202 connect(m_patternChooser, SIGNAL(resourceSelected(KoResourceSP )),
203 view->canvasResourceProvider(), SLOT(slotPatternActivated(KoResourceSP )));
204
205 connect(customPatterns, SIGNAL(activatedResource(KoResourceSP )),
206 view->canvasResourceProvider(), SLOT(slotPatternActivated(KoResourceSP )));
207
208 connect(customPatterns, SIGNAL(patternAdded(KoResourceSP)), m_patternChooser, SLOT(setCurrentPattern(KoResourceSP)));
209 connect(customPatterns, SIGNAL(patternUpdated(KoResourceSP)), m_patternChooser, SLOT(setCurrentPattern(KoResourceSP)));
210
211 connect(view->canvasResourceProvider(),
213 this,
215
219 }
220
222
223
224}
void slotPatternActivated(KoResourceSP pattern)
void sigPatternChanged(KoPatternSP)
void slotSetPattern(KoPatternSP pattern)
KisPatternChooser * m_patternChooser
QWidget * m_patternChooserPopup
QTabWidget * m_patternsTab
void setCurrentItem(int row)
KoResourceSP currentResource(bool includeHidden=false)

References KisViewManager::canvasResourceProvider(), KisPatternChooser::currentResource(), m_patternChooser, m_patternChooserPopup, m_patternsTab, m_patternWidget, m_viewManager, KisPatternChooser::setCurrentItem(), KisPopupButton::setPopupWidget(), KisCanvasResourceProvider::sigPatternChanged(), KisCanvasResourceProvider::slotPatternActivated(), and slotSetPattern().

◆ paintopBox()

KisPaintopBox * KisControlFrame::paintopBox ( )
inline

Definition at line 45 of file kis_control_frame.h.

45 {
46 return m_paintopBox;
47 }
KisPaintopBox * m_paintopBox

References m_paintopBox.

◆ setup()

void KisControlFrame::setup ( QWidget * parent)

Definition at line 69 of file kis_control_frame.cpp.

70{
73
74 QWidgetAction *action = new QWidgetAction(this);
75 action->setText(i18n("&Patterns"));
77 action->setDefaultWidget(m_patternWidget);
78 connect(action, SIGNAL(triggered()), m_patternWidget, SLOT(showPopupWidget()));
79 m_patternChooserPopup->addAction(action);
80
81 action = new QWidgetAction(this);
82 action->setText(i18n("&Gradients"));
84 action->setDefaultWidget(m_gradientWidget);
85 connect(action, SIGNAL(triggered()), m_gradientWidget, SLOT(showPopupWidget()));
86 m_gradientChooserPopup->addAction(action);
87
88
89 // XXX: KOMVC we don't have a canvas here yet, needs a setImageView
90 const KoColorDisplayRendererInterface *displayRenderer = \
91 KisDisplayColorConverter::dumbConverterInstance()->displayRendererInterface();
93 m_viewManager->canvasResourceProvider()->bgColor(), displayRenderer,
95 m_dual->setPopDialog(true);
96 action = new QWidgetAction(this);
97 action->setText(i18n("&Choose foreground and background colors"));
98 m_viewManager->actionCollection()->addAction("dual", action);
99 action->setDefaultWidget(m_dual);
100 connect(m_dual, SIGNAL(foregroundColorChanged(KoColor)), m_viewManager->canvasResourceProvider(), SLOT(slotSetFGColor(KoColor)));
101 connect(m_dual, SIGNAL(backgroundColorChanged(KoColor)), m_viewManager->canvasResourceProvider(), SLOT(slotSetBGColor(KoColor)));
102 connect(m_viewManager->canvasResourceProvider(), SIGNAL(sigBGColorChanged(KoColor)), m_dual, SLOT(setBackgroundColor(KoColor)));
103 connect(m_viewManager->canvasResourceProvider(), SIGNAL(sigFGColorChanged(KoColor)), m_dual, SLOT(setForegroundColor(KoColor)));
104 connect(m_viewManager->canvasResourceProvider(), SIGNAL(sigFGColorChanged(KoColor)), m_gradientWidget, SLOT(update()));
105 connect(m_viewManager->canvasResourceProvider(), SIGNAL(sigBGColorChanged(KoColor)), m_gradientWidget, SLOT(update()));
106 m_dual->setFixedSize(28, 28);
107 connect(m_viewManager, SIGNAL(viewChanged()), SLOT(slotUpdateDisplayRenderer()));
108
109 m_paintopBox = new KisPaintopBox(m_viewManager, parent, "paintopbox");
110
111 action = new QWidgetAction(this);
112 action->setText(i18n("&Painter's Tools"));
113 m_viewManager->actionCollection()->addAction("paintops", action);
114 action->setDefaultWidget(m_paintopBox);
115
116 action = new QWidgetAction(this);
117 action->setText(i18n("&Open Foreground color selector"));
118 m_viewManager->actionCollection()->addAction("chooseForegroundColor", action);
119 connect(action, SIGNAL(triggered()), m_dual, SLOT(openForegroundDialog()));
120
121 action = new QWidgetAction(this);
122 action->setText(i18n("&Open Background color selector"));
123 m_viewManager->actionCollection()->addAction("chooseBackgroundColor", action);
124 connect(action, SIGNAL(triggered()), m_dual, SLOT(openBackgroundDialog()));
125
127
128 action = new QWidgetAction(this);
129 action->setText(i18n("&Docker Box"));
130 m_viewManager->actionCollection()->addAction("dockerBox", action);
131 action->setDefaultWidget(m_dockerPopupButton);
132}
void createGradientsChooser(KisViewManager *view)
void createDockerBox(KisViewManager *view)
void createPatternsChooser(KisViewManager *view)
KoDualColorButton * m_dual
A widget for selecting two related colors.
void setPopDialog(bool popDialog)
bool update(QSpinBox *spinBox)

References KisViewManager::actionCollection(), KisKActionCollection::addAction(), KisCanvasResourceProvider::bgColor(), KisViewManager::canvasResourceProvider(), createDockerBox(), createGradientsChooser(), createPatternsChooser(), KisCanvasResourceProvider::fgColor(), ResourceType::Gradients, m_dockerPopupButton, m_dual, m_gradientChooserPopup, m_gradientWidget, m_paintopBox, m_patternChooserPopup, m_patternWidget, m_viewManager, KisViewManager::mainWindowAsQWidget(), ResourceType::Patterns, KoDualColorButton::setPopDialog(), and slotUpdateDisplayRenderer().

◆ slotSetGradient

void KisControlFrame::slotSetGradient ( KoAbstractGradientSP gradient)
privateslot

◆ slotSetPattern

void KisControlFrame::slotSetPattern ( KoPatternSP pattern)
privateslot

Definition at line 146 of file kis_control_frame.cpp.

147{
149 m_patternWidget->setThumbnail(pattern->image());
151}
void setThumbnail(const QImage &thumbnail)
void setCurrentPattern(KoResourceSP resource)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KIS_SAFE_ASSERT_RECOVER_RETURN, m_patternChooser, m_patternWidget, KisPatternChooser::setCurrentPattern(), and KisIconWidget::setThumbnail().

◆ slotUpdateDisplayRenderer

void KisControlFrame::slotUpdateDisplayRenderer ( )
privateslot

Definition at line 134 of file kis_control_frame.cpp.

135{
139 m_viewManager->canvasBase()->image()->disconnect(m_dual);
140 connect(m_viewManager->canvasBase()->image(), SIGNAL(sigColorSpaceChanged(const KoColorSpace*)), m_dual, SLOT(setColorSpace(const KoColorSpace*)), Qt::UniqueConnection);
141 } else if (m_viewManager->viewCount()==0) {
143 }
144}
KisDisplayColorConverter displayColorConverter
KisImageWSP image() const
KoColorDisplayRendererInterface * displayRendererInterface() const
const KoColorSpace * colorSpace() const
int viewCount() const
KisCanvas2 * canvasBase() const
Return the canvas base class.
void setColorSpace(const KoColorSpace *cs)
setColorSpace set ColorSpace so we can lock the selector. Right now this'll be changed per view-chang...
void setDisplayRenderer(const KoColorDisplayRendererInterface *displayRenderer=KoDumbColorDisplayRenderer::instance())

References KisViewManager::canvasBase(), KisImage::colorSpace(), KisCanvas2::displayColorConverter, KisDisplayColorConverter::displayRendererInterface(), KisCanvas2::image(), m_dual, m_viewManager, KoDualColorButton::setColorSpace(), KoDualColorButton::setDisplayRenderer(), and KisViewManager::viewCount().

◆ updateGradientPreviewOnPopupButton

void KisControlFrame::updateGradientPreviewOnPopupButton ( KoAbstractGradientSP gradient)
privateslot

Definition at line 158 of file kis_control_frame.cpp.

159{
161
162 QImage icon(iconSize, QImage::Format_ARGB32);
163
164 {
165 QPainter gc(&icon);
166 m_checkersPainter.paint(gc, QRect(QPoint(), iconSize));
167 gc.drawImage(QPoint(),
168 gradient->generatePreview(iconSize.width(), iconSize.height(),
170 resourceManager()->canvasResourcesInterface()));
171 }
172
173
175}
int iconSize(qreal width, qreal height)
QSize preferredIconSize() const
void paint(QPainter &painter, const QRectF &rect, const QPointF &patternOrigin) const

References KisViewManager::canvasResourceProvider(), iconSize(), m_checkersPainter, m_gradientWidget, m_viewManager, KoCheckerBoardPainter::paint(), KisIconWidget::preferredIconSize(), and KisIconWidget::setThumbnail().

Member Data Documentation

◆ m_checkersPainter

KoCheckerBoardPainter KisControlFrame::m_checkersPainter
private

Definition at line 84 of file kis_control_frame.h.

◆ m_dockerPopup

KisDockerHud* KisControlFrame::m_dockerPopup {nullptr}
private

Definition at line 80 of file kis_control_frame.h.

80{nullptr};

◆ m_dockerPopupButton

KisIconWidget* KisControlFrame::m_dockerPopupButton {nullptr}
private

Definition at line 81 of file kis_control_frame.h.

81{nullptr};

◆ m_dual

KoDualColorButton* KisControlFrame::m_dual {nullptr}
private

Definition at line 83 of file kis_control_frame.h.

83{nullptr};

◆ m_gradientChooser

KisGradientChooser* KisControlFrame::m_gradientChooser {nullptr}
private

Definition at line 75 of file kis_control_frame.h.

75{nullptr};

◆ m_gradientChooserPopup

QWidget* KisControlFrame::m_gradientChooserPopup {nullptr}
private

Definition at line 73 of file kis_control_frame.h.

73{nullptr};

◆ m_gradientTab

QTabWidget* KisControlFrame::m_gradientTab {nullptr}
private

Definition at line 66 of file kis_control_frame.h.

66{nullptr};

◆ m_gradientWidget

KisIconWidget* KisControlFrame::m_gradientWidget {nullptr}
private

Definition at line 70 of file kis_control_frame.h.

70{nullptr};

◆ m_paintopBox

KisPaintopBox* KisControlFrame::m_paintopBox {nullptr}
private

Definition at line 78 of file kis_control_frame.h.

78{nullptr};

◆ m_patternChooser

KisPatternChooser* KisControlFrame::m_patternChooser {nullptr}
private

Definition at line 76 of file kis_control_frame.h.

76{nullptr};

◆ m_patternChooserPopup

QWidget* KisControlFrame::m_patternChooserPopup {nullptr}
private

Definition at line 72 of file kis_control_frame.h.

72{nullptr};

◆ m_patternsTab

QTabWidget* KisControlFrame::m_patternsTab {nullptr}
private

Definition at line 67 of file kis_control_frame.h.

67{nullptr};

◆ m_patternWidget

KisIconWidget* KisControlFrame::m_patternWidget {nullptr}
private

Definition at line 69 of file kis_control_frame.h.

69{nullptr};

◆ m_viewManager

KisViewManager* KisControlFrame::m_viewManager {nullptr}
private

Definition at line 64 of file kis_control_frame.h.

64{nullptr};

The documentation for this class was generated from the following files: