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

#include <kis_clipboard_brush_widget.h>

+ Inheritance diagram for KisClipboardBrushWidget:

Signals

void sigNewPredefinedBrush (KoResourceSP)
 

Public Member Functions

 KisClipboardBrushWidget (QWidget *parent, const QString &caption, KisImageWSP image)
 
virtual ~KisClipboardBrushWidget ()
 
- Public Member Functions inherited from KisWdgClipboardBrush
 KisWdgClipboardBrush (QWidget *parent)
 

Protected Member Functions

void showEvent (QShowEvent *) override
 

Private Slots

void slotAddPredefined ()
 
void slotClipboardContentChanged ()
 
void slotCreateBrush ()
 
void slotSpacingChanged ()
 
void slotUpdateSaveButton ()
 
void slotUpdateUseColorAsMask (bool useColorAsMask)
 

Private Attributes

KisBrushSP m_brush
 
KisClipboardm_clipboard
 
KoResourceServer< KisBrush > * m_rServer
 
KisPaintDeviceSP pd
 

Detailed Description

Definition at line 36 of file kis_clipboard_brush_widget.h.

Constructor & Destructor Documentation

◆ KisClipboardBrushWidget()

KisClipboardBrushWidget::KisClipboardBrushWidget ( QWidget * parent,
const QString & caption,
KisImageWSP image )

Definition at line 30 of file kis_clipboard_brush_widget.cpp.

31 : KisWdgClipboardBrush(parent)
32{
33 setWindowTitle(caption);
34 preview->setScaledContents(false);
35 preview->setFixedSize(preview->size());
36 preview->setStyleSheet("border: 2px solid #222; border-radius: 4px; padding: 5px; font: normal 10px;");
37
38
40
41 m_brush = 0;
42
44
45 connect(m_clipboard, SIGNAL(clipChanged()), this, SLOT(slotClipboardContentChanged()));
46 connect(colorAsmask, SIGNAL(toggled(bool)), this, SLOT(slotUpdateUseColorAsMask(bool)));
47 connect(preserveAlpha, SIGNAL(toggled(bool)), this, SLOT(slotCreateBrush()));
48 connect(buttonBox, SIGNAL(accepted()), this, SLOT(slotAddPredefined()));
49 connect(nameEdit, SIGNAL(textEdited(const QString&)), this, SLOT(slotUpdateSaveButton()));
50
51 spacingWidget->setSpacing(true, 1.0);
52 connect(spacingWidget, SIGNAL(sigSpacingChanged()), SLOT(slotSpacingChanged()));
53
54 KGuiItem::assign(buttonBox->button(QDialogButtonBox::Save), KStandardGuiItem::save());
55 KGuiItem::assign(buttonBox->button(QDialogButtonBox::Cancel), KStandardGuiItem::cancel());
56}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
static KisBrushServerProvider * instance()
KoResourceServer< KisBrush > * brushServer()
KoResourceServer< KisBrush > * m_rServer
void slotUpdateUseColorAsMask(bool useColorAsMask)
static KisClipboard * instance()

References KisBrushServerProvider::brushServer(), connect(), KisBrushServerProvider::instance(), KisClipboard::instance(), m_brush, m_clipboard, m_rServer, slotAddPredefined(), slotClipboardContentChanged(), slotCreateBrush(), slotSpacingChanged(), slotUpdateSaveButton(), and slotUpdateUseColorAsMask().

◆ ~KisClipboardBrushWidget()

KisClipboardBrushWidget::~KisClipboardBrushWidget ( )
virtual

Definition at line 58 of file kis_clipboard_brush_widget.cpp.

59{
60}

Member Function Documentation

◆ showEvent()

void KisClipboardBrushWidget::showEvent ( QShowEvent * )
overrideprotected

Definition at line 118 of file kis_clipboard_brush_widget.cpp.

119{
121}

References slotClipboardContentChanged().

◆ sigNewPredefinedBrush

void KisClipboardBrushWidget::sigNewPredefinedBrush ( KoResourceSP )
signal

◆ slotAddPredefined

void KisClipboardBrushWidget::slotAddPredefined ( )
privateslot

Definition at line 129 of file kis_clipboard_brush_widget.cpp.

130{
131 if(!m_brush) return;
132
133 QString extension = ".gbr";
134 QString name = nameEdit->text();
135
136 if (m_rServer) {
137 KisGbrBrushSP resource = m_brush->clone().dynamicCast<KisGbrBrush>();
138
139 if (nameEdit->text().isEmpty()) {
140 resource->setName(QUuid::createUuid().toByteArray().toHex());
141 }
142 else {
143 resource->setName(name);
144 }
145
146 resource->setFilename(resource->name().split(" ").join("_") + extension);
147
149 Q_EMIT sigNewPredefinedBrush(resource);
150 }
151 }
152
153 close();
154}
void sigNewPredefinedBrush(KoResourceSP)
static bool addResourceWithUserInput(QWidget *widgetParent, KoResourceSP resource, QString storageLocation="")
QAction * close(const QObject *recvr, const char *slot, QObject *parent)
const char * name(StandardAction id)

References KisResourceUserOperations::addResourceWithUserInput(), m_brush, m_rServer, and sigNewPredefinedBrush().

◆ slotClipboardContentChanged

void KisClipboardBrushWidget::slotClipboardContentChanged ( )
privateslot

Definition at line 62 of file kis_clipboard_brush_widget.cpp.

63{
65 if (m_brush) {
66 colorAsmask->setChecked(true); // initializing this has to happen here since we need a valid brush for it to work
67 preserveAlpha->setEnabled(true);
68 preserveAlpha->setChecked(false);
69 }
70}

References m_brush, and slotCreateBrush().

◆ slotCreateBrush

void KisClipboardBrushWidget::slotCreateBrush ( )
privateslot

Definition at line 72 of file kis_clipboard_brush_widget.cpp.

73{
74 // do nothing if it's hidden otherwise it can break the active brush is something is copied
75 if (m_clipboard->hasClip() && !isHidden()) {
76
77 pd = m_clipboard->clip(QRect(0, 0, 0, 0), false); //Weird! Don't know how this works!
78 if (pd) {
79 QRect rc = pd->exactBounds();
80
81 m_brush = KisBrushSP(new KisGbrBrush(pd, rc.x(), rc.y(), rc.width(), rc.height()));
82
83 m_brush->setSpacing(spacingWidget->spacing());
84 m_brush->setAutoSpacing(spacingWidget->autoSpacingActive(), spacingWidget->autoSpacingCoeff());
87 m_brush->setValid(true);
88
89 if (colorAsmask->isChecked()) {
90 static_cast<KisGbrBrush*>(m_brush.data())->makeMaskImage(preserveAlpha->isChecked());
91 static_cast<KisGbrBrush*>(m_brush.data())->setBrushApplication(preserveAlpha->isChecked() ? LIGHTNESSMAP : ALPHAMASK);
92 } else {
93 static_cast<KisGbrBrush*>(m_brush.data())->setBrushApplication(IMAGESTAMP);
94 }
95
96 int w = preview->size().width()-10;
97 preview->setPixmap(QPixmap::fromImage(m_brush->image().scaled(w, w, Qt::KeepAspectRatio)));
98 }
99 } else {
100 preview->setText(i18n("Nothing copied\n to Clipboard"));
101 }
102
103 if (!m_brush) {
104 buttonBox->button(QDialogButtonBox::Save)->setEnabled(false);
105 } else {
106 buttonBox->button(QDialogButtonBox::Save)->setEnabled(true);
107 }
108}
bool hasClip() const
QRect exactBounds() const
QSharedPointer< KisBrush > KisBrushSP
Definition kis_brush.h:49
@ ALPHAMASK
Definition kis_brush.h:39
@ IMAGESTAMP
Definition kis_brush.h:40
@ LIGHTNESSMAP
Definition kis_brush.h:41
const QString TEMPORARY_CLIPBOARD_BRUSH_NAME
const QString TEMPORARY_CLIPBOARD_BRUSH_FILENAME

References ALPHAMASK, KisClipboard::clip, KisPaintDevice::exactBounds(), KisClipboard::hasClip(), IMAGESTAMP, LIGHTNESSMAP, m_brush, m_clipboard, pd, TEMPORARY_CLIPBOARD_BRUSH_FILENAME, and TEMPORARY_CLIPBOARD_BRUSH_NAME.

◆ slotSpacingChanged

void KisClipboardBrushWidget::slotSpacingChanged ( )
privateslot

Definition at line 110 of file kis_clipboard_brush_widget.cpp.

111{
112 if (m_brush) {
113 m_brush->setSpacing(spacingWidget->spacing());
114 m_brush->setAutoSpacing(spacingWidget->autoSpacingActive(), spacingWidget->autoSpacingCoeff());
115 }
116}

References m_brush.

◆ slotUpdateSaveButton

void KisClipboardBrushWidget::slotUpdateSaveButton ( )
privateslot

Definition at line 156 of file kis_clipboard_brush_widget.cpp.

157{
158 if (QFileInfo(m_rServer->saveLocation() + "/" + nameEdit->text().split(" ").join("_")
159 + ".gbr").exists()) {
160 buttonBox->button(QDialogButtonBox::Save)->setText(i18n("Overwrite"));
161 } else {
162 buttonBox->button(QDialogButtonBox::Save)->setText(i18n("Save"));
163 }
164}
QString saveLocation()
Returns path where to save user defined and imported resources to.

References m_rServer, and KoResourceServer< T >::saveLocation().

◆ slotUpdateUseColorAsMask

void KisClipboardBrushWidget::slotUpdateUseColorAsMask ( bool useColorAsMask)
privateslot

Definition at line 123 of file kis_clipboard_brush_widget.cpp.

124{
125 preserveAlpha->setEnabled(useColorAsMask);
127}

References slotCreateBrush().

Member Data Documentation

◆ m_brush

KisBrushSP KisClipboardBrushWidget::m_brush
private

Definition at line 60 of file kis_clipboard_brush_widget.h.

◆ m_clipboard

KisClipboard* KisClipboardBrushWidget::m_clipboard
private

Definition at line 58 of file kis_clipboard_brush_widget.h.

◆ m_rServer

KoResourceServer<KisBrush>* KisClipboardBrushWidget::m_rServer
private

Definition at line 61 of file kis_clipboard_brush_widget.h.

◆ pd

KisPaintDeviceSP KisClipboardBrushWidget::pd
private

Definition at line 59 of file kis_clipboard_brush_widget.h.


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