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 ()
 

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 269 of file kis_control_frame.cpp.

270{
271 KConfigGroup grp = KSharedConfig::openConfig()->group("krita").group("Toolbar BrushesAndStuff");
272 int iconsize = grp.readEntry("IconSize", 22);
273 // NOTE: buttonsize should be the same value as the one used in ktoolbar for all QToolButton
274 int buttonsize = grp.readEntry("ButtonSize", 32);
275
277 m_dockerPopupButton->setIcon(KisIconUtils::loadIcon("view-list-details"));
278 m_dockerPopupButton->setToolTip(i18n("Docker box"));
279 m_dockerPopupButton->setFixedSize(buttonsize, buttonsize);
280 m_dockerPopupButton->setIconSize(QSize(iconsize, iconsize));
281 m_dockerPopupButton->setAutoRaise(true);
283
284 m_dockerPopup = new KisDockerHud(i18n("Toolbar Docker Box"), "toolbar");
285 // Set a reasonable minimum size so that dockers capable of being tiny are not,
286 // but are not too big either
287 m_dockerPopup->setMinimumHeight(300);
288 m_dockerPopup->setMinimumWidth(300);
290
291 QWidgetAction* action = new QWidgetAction(this);
292 KisActionRegistry::instance()->propertizeAction("docker_box", action);
293 view->actionCollection()->addAction("docker_box", action);
294 connect(action, SIGNAL(triggered()), m_dockerPopupButton, SLOT(showPopupWidget()));
295 m_dockerPopup->addAction(action);
296}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
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(), connect(), 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 221 of file kis_control_frame.cpp.

222{
226 }
227
229 m_gradientChooserPopup->setObjectName("gradient_chooser_popup");
230 QHBoxLayout * l2 = new QHBoxLayout(m_gradientChooserPopup);
231 l2->setObjectName("gradientpopuplayout");
232
233 m_gradientTab = new QTabWidget(m_gradientChooserPopup);
234 m_gradientTab->setObjectName("gradientstab");
235 m_gradientTab->setFocusPolicy(Qt::NoFocus);
236 l2->addWidget(m_gradientTab);
237
240 QWidget *gradientChooserPage = new QWidget(m_gradientChooserPopup);
241 QHBoxLayout *gradientChooserPageLayout = new QHBoxLayout(gradientChooserPage);
242 gradientChooserPageLayout->addWidget(m_gradientChooser);
243 m_gradientTab->addTab(gradientChooserPage, i18n("Gradients"));
244
245 connect(m_gradientChooser, SIGNAL(resourceSelected(KoResourceSP)),
246 view->canvasResourceProvider(), SLOT(slotGradientActivated(KoResourceSP)));
247 connect (view->mainWindowAsQWidget(), SIGNAL(themeChanged()), m_gradientChooser, SLOT(slotUpdateIcons()));
248 connect(view->canvasResourceProvider(), SIGNAL(sigGradientChanged(KoAbstractGradientSP)),
250 connect(m_gradientChooser, SIGNAL(gradientEdited(KoAbstractGradientSP)),
252
253
254 // set the Foreground to Transparent gradient as default on startup
256 QVector<KoResourceSP> resources = resModel.resourcesForFilename("Foreground to Transparent.svg");
257 if (resources.size() > 0) {
259 }
260
263 }
265
266}
KoCanvasResourceProvider * resourceManager()
void slotGradientActivated(KoResourceSP gradient)
QWidget * m_gradientChooserPopup
KisGradientChooser * m_gradientChooser
void slotSetGradient(KoAbstractGradientSP gradient)
QTabWidget * m_gradientTab
void setCanvasResourcesInterface(KoCanvasResourcesInterfaceSP canvasResourcesInterface)
void setCurrentResource(KoResourceSP resource)
KoResourceSP currentResource(bool includeHidden=false)
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(), connect(), KisGradientChooser::currentResource(), ResourceType::Gradients, m_gradientChooser, m_gradientChooserPopup, m_gradientTab, m_gradientWidget, KisViewManager::mainWindowAsQWidget(), KisCanvasResourceProvider::resourceManager(), KisResourceModel::resourcesForFilename(), KisGradientChooser::setCanvasResourcesInterface(), KisGradientChooser::setCurrentResource(), KisPopupButton::setPopupWidget(), KisCanvasResourceProvider::slotGradientActivated(), and slotSetGradient().

◆ createPatternsChooser()

void KisControlFrame::createPatternsChooser ( KisViewManager * view)
private

Definition at line 172 of file kis_control_frame.cpp.

173{
176 m_patternChooserPopup->setMinimumSize(450, 400);
177 m_patternChooserPopup->setObjectName("pattern_chooser_popup");
178 QHBoxLayout * l2 = new QHBoxLayout(m_patternChooserPopup);
179 l2->setObjectName("patternpopuplayout");
180
181 m_patternsTab = new QTabWidget(m_patternChooserPopup);
182 m_patternsTab->setObjectName("patternstab");
183 m_patternsTab->setFocusPolicy(Qt::NoFocus);
184 l2->addWidget(m_patternsTab);
185
187 m_patternChooser->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
188 QWidget *patternChooserPage = new QWidget(m_patternChooserPopup);
189 QHBoxLayout *patternChooserPageLayout = new QHBoxLayout(patternChooserPage);
190 patternChooserPageLayout->addWidget(m_patternChooser);
191 m_patternsTab->addTab(patternChooserPage, i18n("Patterns"));
192
193 KisCustomPattern *customPatterns = new KisCustomPattern(0, "custompatterns",
194 i18n("Custom Pattern"), m_viewManager);
195 m_patternsTab->addTab(customPatterns, i18n("Custom Pattern"));
196
197 connect(m_patternChooser, SIGNAL(resourceSelected(KoResourceSP )),
198 view->canvasResourceProvider(), SLOT(slotPatternActivated(KoResourceSP )));
199
200 connect(customPatterns, SIGNAL(activatedResource(KoResourceSP )),
201 view->canvasResourceProvider(), SLOT(slotPatternActivated(KoResourceSP )));
202
203 connect(customPatterns, SIGNAL(patternAdded(KoResourceSP)), m_patternChooser, SLOT(setCurrentPattern(KoResourceSP)));
204 connect(customPatterns, SIGNAL(patternUpdated(KoResourceSP)), m_patternChooser, SLOT(setCurrentPattern(KoResourceSP)));
205
208 this,
210
214 }
215
217
218
219}
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(), connect(), 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(), connect(), 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

Definition at line 153 of file kis_control_frame.cpp.

154{
156
157 QImage icon(iconSize, QImage::Format_ARGB32);
158
159 {
160 QPainter gc(&icon);
161 m_checkersPainter.paint(gc, QRect(QPoint(), iconSize));
162 gc.drawImage(QPoint(),
163 gradient->generatePreview(iconSize.width(), iconSize.height(),
165 resourceManager()->canvasResourcesInterface()));
166 }
167
168
170}
int iconSize(qreal width, qreal height)
QSize preferredIconSize() const
void setThumbnail(const QImage &thumbnail)
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().

◆ 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 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(), connect(), KisCanvas2::displayColorConverter, KisDisplayColorConverter::displayRendererInterface(), KisCanvas2::image(), m_dual, m_viewManager, KoDualColorButton::setColorSpace(), KoDualColorButton::setDisplayRenderer(), and KisViewManager::viewCount().

Member Data Documentation

◆ m_checkersPainter

KoCheckerBoardPainter KisControlFrame::m_checkersPainter
private

Definition at line 83 of file kis_control_frame.h.

◆ m_dockerPopup

KisDockerHud* KisControlFrame::m_dockerPopup {nullptr}
private

Definition at line 79 of file kis_control_frame.h.

79{nullptr};

◆ m_dockerPopupButton

KisIconWidget* KisControlFrame::m_dockerPopupButton {nullptr}
private

Definition at line 80 of file kis_control_frame.h.

80{nullptr};

◆ m_dual

KoDualColorButton* KisControlFrame::m_dual {nullptr}
private

Definition at line 82 of file kis_control_frame.h.

82{nullptr};

◆ m_gradientChooser

KisGradientChooser* KisControlFrame::m_gradientChooser {nullptr}
private

Definition at line 74 of file kis_control_frame.h.

74{nullptr};

◆ m_gradientChooserPopup

QWidget* KisControlFrame::m_gradientChooserPopup {nullptr}
private

Definition at line 72 of file kis_control_frame.h.

72{nullptr};

◆ m_gradientTab

QTabWidget* KisControlFrame::m_gradientTab {nullptr}
private

Definition at line 65 of file kis_control_frame.h.

65{nullptr};

◆ m_gradientWidget

KisIconWidget* KisControlFrame::m_gradientWidget {nullptr}
private

Definition at line 69 of file kis_control_frame.h.

69{nullptr};

◆ m_paintopBox

KisPaintopBox* KisControlFrame::m_paintopBox {nullptr}
private

Definition at line 77 of file kis_control_frame.h.

77{nullptr};

◆ m_patternChooser

KisPatternChooser* KisControlFrame::m_patternChooser {nullptr}
private

Definition at line 75 of file kis_control_frame.h.

75{nullptr};

◆ m_patternChooserPopup

QWidget* KisControlFrame::m_patternChooserPopup {nullptr}
private

Definition at line 71 of file kis_control_frame.h.

71{nullptr};

◆ m_patternsTab

QTabWidget* KisControlFrame::m_patternsTab {nullptr}
private

Definition at line 66 of file kis_control_frame.h.

66{nullptr};

◆ m_patternWidget

KisIconWidget* KisControlFrame::m_patternWidget {nullptr}
private

Definition at line 68 of file kis_control_frame.h.

68{nullptr};

◆ m_viewManager

KisViewManager* KisControlFrame::m_viewManager {nullptr}
private

Definition at line 63 of file kis_control_frame.h.

63{nullptr};

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