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

#include <kis_dlg_layer_style.h>

+ Inheritance diagram for KisDlgLayerStyle:

Public Slots

void changePage (QListWidgetItem *, QListWidgetItem *)
 
void notifyGuiConfigChanged ()
 
void notifyPredefinedStyleSelected (KisPSDLayerStyleSP style)
 
void setStyle (KisPSDLayerStyleSP style)
 
void slotBevelAndEmbossChanged (QListWidgetItem *)
 
void slotLoadStyle ()
 
void slotMasterFxSwitchChanged (bool value)
 
void slotNewStyle ()
 
void slotNotifyOnAccept ()
 
void slotNotifyOnReject ()
 
void slotSaveStyle ()
 
void syncGlobalAngle (int angle)
 
- Public Slots inherited from KoDialog
void delayedDestruct ()
 
void enableButton (ButtonCode id, bool state)
 
void enableButtonApply (bool state)
 
void enableButtonCancel (bool state)
 
void enableButtonOk (bool state)
 
void enableLinkedHelp (bool state)
 
bool isDetailsWidgetVisible () const
 
virtual void setCaption (const QString &caption)
 
virtual void setCaption (const QString &caption, bool modified)
 
void setDetailsWidget (QWidget *detailsWidget)
 
void setDetailsWidgetVisible (bool visible)
 
void setHelp (const QString &anchor, const QString &appname=QString())
 
void setHelpLinkText (const QString &text)
 
virtual void setPlainCaption (const QString &caption)
 

Signals

void configChanged ()
 
- Signals inherited from KoDialog
void aboutToShowDetails ()
 
void applyClicked ()
 
void buttonClicked (KoDialog::ButtonCode button)
 
void cancelClicked ()
 
void closeClicked ()
 
void defaultClicked ()
 
void finished ()
 
void helpClicked ()
 
void hidden ()
 
void layoutHintChanged ()
 
void noClicked ()
 
void okClicked ()
 
void resetClicked ()
 
void tryClicked ()
 
void user1Clicked ()
 
void user2Clicked ()
 
void user3Clicked ()
 
void yesClicked ()
 

Public Member Functions

 KisDlgLayerStyle (KisPSDLayerStyleSP layerStyle, KisCanvasResourceProvider *resourceProvider, QWidget *parent=0)
 
KisPSDLayerStyleSP style () const
 
 ~KisDlgLayerStyle () override
 
- Public Member Functions inherited from KoDialog
QPushButton * button (ButtonCode id) const
 
QIcon buttonIcon (ButtonCode id) const
 
QString buttonText (ButtonCode id) const
 
QString buttonToolTip (ButtonCode id) const
 
QString buttonWhatsThis (ButtonCode id) const
 
ButtonCode defaultButton () const
 
QString helpLinkText () const
 
void incrementInitialSize (const QSize &size)
 
bool isButtonEnabled (ButtonCode id) const
 
 KoDialog (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
QWidget * mainWidget ()
 
QSize minimumSizeHint () const override
 
void setButtonFocus (ButtonCode id)
 
void setButtonGuiItem (ButtonCode id, const KGuiItem &item)
 
void setButtonIcon (ButtonCode id, const QIcon &icon)
 
void setButtons (ButtonCodes buttonMask)
 
void setButtonsOrientation (Qt::Orientation orientation)
 
void setButtonText (ButtonCode id, const QString &text)
 
void setButtonToolTip (ButtonCode id, const QString &text)
 
void setButtonWhatsThis (ButtonCode id, const QString &text)
 
void setDefaultButton (ButtonCode id)
 
void setEscapeButton (ButtonCode id)
 
void setInitialSize (const QSize &size)
 
void setMainWidget (QWidget *widget)
 
void showButton (ButtonCode id, bool state)
 
void showButtonSeparator (bool state)
 
QSize sizeHint () const override
 
 ~KoDialog () override
 

Private Attributes

BevelAndEmbossm_bevelAndEmboss
 
BlendingOptionsm_blendingOptions
 
ColorOverlaym_colorOverlay
 
KisSignalCompressorm_configChangedCompressor
 
Contourm_contour
 
DropShadowm_dropShadow
 
GradientOverlaym_gradientOverlay
 
KisPSDLayerStyleSP m_initialLayerStyle
 
InnerGlowm_innerGlow
 
DropShadowm_innerShadow
 
bool m_isSwitchingPredefinedStyle
 
KisPSDLayerStyleSP m_layerStyle
 
InnerGlowm_outerGlow
 
PatternOverlaym_patternOverlay
 
bool m_sanityLayerStyleDirty
 
Satinm_satin
 
Strokem_stroke
 
StylesSelectorm_stylesSelector
 
Texturem_texture
 
Ui::WdgStylesDialog wdgLayerStyles
 

Additional Inherited Members

- Public Types inherited from KoDialog
enum  ButtonCode {
  None = 0x00000000 , Help = 0x00000001 , Default = 0x00000002 , Ok = 0x00000004 ,
  Apply = 0x00000008 , Try = 0x00000010 , Cancel = 0x00000020 , Close = 0x00000040 ,
  No = 0x00000080 , Yes = 0x00000100 , Reset = 0x00000200 , Details = 0x00000400 ,
  User1 = 0x00001000 , User2 = 0x00002000 , User3 = 0x00004000 , NoDefault = 0x00008000
}
 
enum  ButtonPopupMode { InstantPopup = 0 , DelayedPopup = 1 }
 
enum  CaptionFlag { NoCaptionFlags = 0 , AppNameCaption = 1 , ModifiedCaption = 2 , HIGCompliantCaption = AppNameCaption }
 
- Static Public Member Functions inherited from KoDialog
static int groupSpacingHint ()
 
static QString makeStandardCaption (const QString &userCaption, QWidget *window=0, CaptionFlags flags=HIGCompliantCaption)
 
static int marginHint ()
 
static void resizeLayout (QLayout *lay, int margin, int spacing)
 
static void resizeLayout (QWidget *widget, int margin, int spacing)
 
static int spacingHint ()
 
- Protected Slots inherited from KoDialog
virtual void slotButtonClicked (int button)
 
- Protected Member Functions inherited from KoDialog
void closeEvent (QCloseEvent *e) override
 
void hideEvent (QHideEvent *) override
 
void keyPressEvent (QKeyEvent *) override
 
void showEvent (QShowEvent *e) override
 

Detailed Description

Definition at line 256 of file kis_dlg_layer_style.h.

Constructor & Destructor Documentation

◆ KisDlgLayerStyle()

KisDlgLayerStyle::KisDlgLayerStyle ( KisPSDLayerStyleSP layerStyle,
KisCanvasResourceProvider * resourceProvider,
QWidget * parent = 0 )
explicit

Definition at line 58 of file kis_dlg_layer_style.cpp.

59 : KoDialog(parent)
60 , m_layerStyle(layerStyle)
61 , m_initialLayerStyle(layerStyle->clone().dynamicCast<KisPSDLayerStyle>())
64{
65 setCaption(i18n("Layer Styles"));
68
71 connect(m_configChangedCompressor, SIGNAL(timeout()), SIGNAL(configChanged()));
72
73 QWidget *page = new QWidget(this);
74 wdgLayerStyles.setupUi(page);
75 setMainWidget(page);
76 wdgLayerStyles.chkPreview->setVisible(false);
77
78 connect(wdgLayerStyles.lstStyleSelector, SIGNAL(itemChanged(QListWidgetItem*)), SLOT(notifyGuiConfigChanged()));
79
82 wdgLayerStyles.stylesStack->addWidget(m_stylesSelector);
83
85 wdgLayerStyles.stylesStack->addWidget(m_blendingOptions);
86 // currently unimplemented, hide for now
87 wdgLayerStyles.lstStyleSelector->item(1)->setHidden(true);
88
90 wdgLayerStyles.stylesStack->addWidget(m_dropShadow);
92
94 wdgLayerStyles.stylesStack->addWidget(m_innerShadow);
96
97 m_outerGlow = new InnerGlow(InnerGlow::OuterGlowMode, resourceProvider, this);
98 wdgLayerStyles.stylesStack->addWidget(m_outerGlow);
100
101 m_innerGlow = new InnerGlow(InnerGlow::InnerGlowMode, resourceProvider, this);
102 wdgLayerStyles.stylesStack->addWidget(m_innerGlow);
104
105 // Contour and Texture are sub-styles of Bevel and Emboss
106 // They are only applied to canvas when Bevel and Emboss is active.
107 m_contour = new Contour(this);
108 m_texture = new Texture(this);
110
111 wdgLayerStyles.stylesStack->addWidget(m_bevelAndEmboss);
112 wdgLayerStyles.stylesStack->addWidget(m_contour);
113 wdgLayerStyles.stylesStack->addWidget(m_texture);
114
115 // slotBevelAndEmbossChanged(QListWidgetItem*) enables/disables Contour and Texture on "Bevel and Emboss" toggle.
116 connect(wdgLayerStyles.lstStyleSelector, SIGNAL(itemClicked(QListWidgetItem*)), SLOT(slotBevelAndEmbossChanged(QListWidgetItem*)));
118
119 m_satin = new Satin(this);
120 wdgLayerStyles.stylesStack->addWidget(m_satin);
122
123 m_colorOverlay = new ColorOverlay(this);
124 wdgLayerStyles.stylesStack->addWidget(m_colorOverlay);
126
127 m_gradientOverlay = new GradientOverlay(resourceProvider, this);
128 wdgLayerStyles.stylesStack->addWidget(m_gradientOverlay);
130
132 wdgLayerStyles.stylesStack->addWidget(m_patternOverlay);
134
135 m_stroke = new Stroke(resourceProvider, this);
136 wdgLayerStyles.stylesStack->addWidget(m_stroke);
138
139 KisConfig cfg(true);
140 wdgLayerStyles.stylesStack->setCurrentIndex(cfg.readEntry("KisDlgLayerStyle::current", 0));
141 wdgLayerStyles.lstStyleSelector->setCurrentRow(cfg.readEntry("KisDlgLayerStyle::current", 0));
142
143 connect(wdgLayerStyles.lstStyleSelector,
144 SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
145 this, SLOT(changePage(QListWidgetItem*,QListWidgetItem*)));
146
147 // improve the checkbox visibility by altering the style sheet list a bit
148 // the dark themes make them hard to see
149 QPalette newPalette = palette();
150 newPalette.setColor(QPalette::Active, QPalette::Window, palette().text().color() );
151 wdgLayerStyles.lstStyleSelector->setPalette(newPalette);
152
153
155
156 connect(m_dropShadow, SIGNAL(globalAngleChanged(int)), SLOT(syncGlobalAngle(int)));
157 connect(m_innerShadow, SIGNAL(globalAngleChanged(int)), SLOT(syncGlobalAngle(int)));
158 connect(m_bevelAndEmboss, SIGNAL(globalAngleChanged(int)), SLOT(syncGlobalAngle(int)));
159
160
161 connect(wdgLayerStyles.btnNewStyle, SIGNAL(clicked()), SLOT(slotNewStyle()));
162 connect(wdgLayerStyles.btnLoadStyle, SIGNAL(clicked()), SLOT(slotLoadStyle()));
163 connect(wdgLayerStyles.btnSaveStyle, SIGNAL(clicked()), SLOT(slotSaveStyle()));
164
165 connect(wdgLayerStyles.chkMasterFxSwitch, SIGNAL(toggled(bool)), SLOT(slotMasterFxSwitchChanged(bool)));
166
167 connect(this, SIGNAL(accepted()), SLOT(slotNotifyOnAccept()));
168 connect(this, SIGNAL(rejected()), SLOT(slotNotifyOnReject()));
169}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void changePage(QListWidgetItem *, QListWidgetItem *)
KisPSDLayerStyleSP m_initialLayerStyle
void slotMasterFxSwitchChanged(bool value)
BevelAndEmboss * m_bevelAndEmboss
PatternOverlay * m_patternOverlay
GradientOverlay * m_gradientOverlay
Ui::WdgStylesDialog wdgLayerStyles
BlendingOptions * m_blendingOptions
void slotBevelAndEmbossChanged(QListWidgetItem *)
void syncGlobalAngle(int angle)
ColorOverlay * m_colorOverlay
KisPSDLayerStyleSP m_layerStyle
void notifyPredefinedStyleSelected(KisPSDLayerStyleSP style)
StylesSelector * m_stylesSelector
KisSignalCompressor * m_configChangedCompressor
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:354
virtual void setCaption(const QString &caption)
Definition KoDialog.cpp:498
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
void setDefaultButton(ButtonCode id)
Definition KoDialog.cpp:302
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition KoDialog.h:127
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)
Definition KoDialog.h:130
KoDialog(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
Definition KoDialog.cpp:176
rgba palette[MAX_PALETTE]
Definition palette.c:35
The KisPSDLayerStyle class implements loading, saving and applying the PSD layer effects.

References KoDialog::Cancel, changePage(), configChanged(), connect(), DropShadow::DropShadowMode, InnerGlow::InnerGlowMode, DropShadow::InnerShadowMode, m_bevelAndEmboss, m_blendingOptions, m_colorOverlay, m_configChangedCompressor, m_contour, m_dropShadow, m_gradientOverlay, m_innerGlow, m_innerShadow, m_outerGlow, m_patternOverlay, m_satin, m_stroke, m_stylesSelector, m_texture, notifyGuiConfigChanged(), notifyPredefinedStyleSelected(), KoDialog::Ok, InnerGlow::OuterGlowMode, palette, KisSignalCompressor::POSTPONE, KisConfig::readEntry(), KoDialog::setButtons(), KoDialog::setCaption(), KoDialog::setDefaultButton(), KoDialog::setMainWidget(), slotBevelAndEmbossChanged(), slotLoadStyle(), slotMasterFxSwitchChanged(), slotNewStyle(), slotNotifyOnAccept(), slotNotifyOnReject(), slotSaveStyle(), syncGlobalAngle(), and wdgLayerStyles.

◆ ~KisDlgLayerStyle()

KisDlgLayerStyle::~KisDlgLayerStyle ( )
override

Definition at line 171 of file kis_dlg_layer_style.cpp.

172{
173}

Member Function Documentation

◆ changePage

void KisDlgLayerStyle::changePage ( QListWidgetItem * current,
QListWidgetItem * previous )
slot

Definition at line 411 of file kis_dlg_layer_style.cpp.

412{
413 if (!current) {
414 current = previous;
415 }
416 wdgLayerStyles.stylesStack->setCurrentIndex(wdgLayerStyles.lstStyleSelector->row(current));
417}

References wdgLayerStyles.

◆ configChanged

void KisDlgLayerStyle::configChanged ( )
signal

◆ notifyGuiConfigChanged

◆ notifyPredefinedStyleSelected

void KisDlgLayerStyle::notifyPredefinedStyleSelected ( KisPSDLayerStyleSP style)
slot

◆ setStyle

void KisDlgLayerStyle::setStyle ( KisPSDLayerStyleSP style)
slot

Definition at line 419 of file kis_dlg_layer_style.cpp.

420{
421 // we may self-assign style is some cases
422 if (style != m_layerStyle) {
423 m_layerStyle = style->clone().dynamicCast<KisPSDLayerStyle>();
424 }
426
427 {
430 }
431
432 QListWidgetItem *item;
433 item = wdgLayerStyles.lstStyleSelector->item(2);
434 item->setCheckState(m_layerStyle->dropShadow()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
435
436 item = wdgLayerStyles.lstStyleSelector->item(3);
437 item->setCheckState(m_layerStyle->innerShadow()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
438
439 item = wdgLayerStyles.lstStyleSelector->item(4);
440 item->setCheckState(m_layerStyle->outerGlow()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
441
442 item = wdgLayerStyles.lstStyleSelector->item(5);
443 item->setCheckState(m_layerStyle->innerGlow()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
444
445 item = wdgLayerStyles.lstStyleSelector->item(6);
446 item->setCheckState(m_layerStyle->bevelAndEmboss()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
447
448 item = wdgLayerStyles.lstStyleSelector->item(7);
449 item->setCheckState(m_layerStyle->bevelAndEmboss()->contourEnabled() ? Qt::Checked : Qt::Unchecked);
450
451 item = wdgLayerStyles.lstStyleSelector->item(8);
452 item->setCheckState(m_layerStyle->bevelAndEmboss()->textureEnabled() ? Qt::Checked : Qt::Unchecked);
453
454 item = wdgLayerStyles.lstStyleSelector->item(9);
455 item->setCheckState(m_layerStyle->satin()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
456
457 item = wdgLayerStyles.lstStyleSelector->item(10);
458 item->setCheckState(m_layerStyle->colorOverlay()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
459
460 item = wdgLayerStyles.lstStyleSelector->item(11);
461 item->setCheckState(m_layerStyle->gradientOverlay()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
462
463 item = wdgLayerStyles.lstStyleSelector->item(12);
464 item->setCheckState(m_layerStyle->patternOverlay()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
465
466 item = wdgLayerStyles.lstStyleSelector->item(13);
467 item->setCheckState(m_layerStyle->stroke()->effectEnabled() ? Qt::Checked : Qt::Unchecked);
468
469 m_dropShadow->setShadow(m_layerStyle->dropShadow());
470 m_innerShadow->setShadow(m_layerStyle->innerShadow());
471 m_outerGlow->setConfig(m_layerStyle->outerGlow());
472 m_innerGlow->setConfig(m_layerStyle->innerGlow());
474 m_satin->setSatin(m_layerStyle->satin());
478 m_stroke->setStroke(m_layerStyle->stroke());
479
480 wdgLayerStyles.chkMasterFxSwitch->setChecked(m_layerStyle->isEnabled());
482}
void setBevelAndEmboss(const psd_layer_effects_bevel_emboss *bevelAndEmboss)
void setColorOverlay(const psd_layer_effects_color_overlay *colorOverlay)
void setShadow(const psd_layer_effects_shadow_common *shadow)
void setGradientOverlay(const psd_layer_effects_gradient_overlay *gradient)
void setConfig(const psd_layer_effects_glow_common *innerGlow)
void setPatternOverlay(const psd_layer_effects_pattern_overlay *pattern)
void setSatin(const psd_layer_effects_satin *satin)
void setStroke(const psd_layer_effects_stroke *stroke)

References m_bevelAndEmboss, m_colorOverlay, m_dropShadow, m_gradientOverlay, m_innerGlow, m_innerShadow, m_layerStyle, m_outerGlow, m_patternOverlay, m_sanityLayerStyleDirty, m_satin, m_stroke, m_stylesSelector, StylesSelector::notifyExternalStyleChanged(), BevelAndEmboss::setBevelAndEmboss(), ColorOverlay::setColorOverlay(), InnerGlow::setConfig(), GradientOverlay::setGradientOverlay(), PatternOverlay::setPatternOverlay(), Satin::setSatin(), DropShadow::setShadow(), Stroke::setStroke(), slotMasterFxSwitchChanged(), style(), and wdgLayerStyles.

◆ slotBevelAndEmbossChanged

void KisDlgLayerStyle::slotBevelAndEmbossChanged ( QListWidgetItem * )
slot

Definition at line 203 of file kis_dlg_layer_style.cpp.

203 {
204 QListWidgetItem *item;
205
206 if (wdgLayerStyles.lstStyleSelector->item(6)->checkState() == Qt::Checked) {
207 // Enable "Contour" (list item 7)
208 item = wdgLayerStyles.lstStyleSelector->item(7);
209 Qt::ItemFlags currentFlags7 = item->flags();
210 item->setFlags(currentFlags7 | Qt::ItemIsEnabled);
211
212 // Enable "Texture" (list item 8)
213 item = wdgLayerStyles.lstStyleSelector->item(8);
214 Qt::ItemFlags currentFlags8 = item->flags();
215 item->setFlags(currentFlags8 | Qt::ItemIsEnabled);
216 }
217 else {
218 // Disable "Contour"
219 item = wdgLayerStyles.lstStyleSelector->item(7);
220 Qt::ItemFlags currentFlags7 = item->flags();
221 item->setFlags(currentFlags7 & (~Qt::ItemIsEnabled));
222
223 // Disable "Texture"
224 item = wdgLayerStyles.lstStyleSelector->item(8);
225 Qt::ItemFlags currentFlags8 = item->flags();
226 item->setFlags(currentFlags8 & (~Qt::ItemIsEnabled));
227 }
228}

References wdgLayerStyles.

◆ slotLoadStyle

void KisDlgLayerStyle::slotLoadStyle ( )
slot

Definition at line 328 of file kis_dlg_layer_style.cpp.

329{
330 KoFileDialog dialog(this, KoFileDialog::OpenFile, "layerstyle");
331 dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation));
332 dialog.setMimeTypeFilters({"application/x-photoshop-style-library"});
333 dialog.setCaption(i18n("Select ASL file"));
334
335 const QString filename = dialog.filename();
336
337 // XXX: implement a resource loader targeting layer style libraries
338 // const auto resource = KisResourceUserOperations::importResourceFileWithUserInput(this, "", ResourceType::LayerStylesLibrary, filename);
339 // if (resource) {
340 // m_stylesSelector->refillCollections();
341 // }
342
343 if (!filename.isEmpty()) {
344 const QFileInfo oldFileInfo(filename);
345
346 // 0. Validate layer style
347 {
349 KIS_ASSERT(!storage.isNull());
350
351 if (!storage->valid()) {
352 qWarning() << "Attempted to import an invalid layer style library!" << filename;
353 QMessageBox::warning(this,
354 i18nc("@title:window", "Krita"),
355 i18n("Could not load layer style library %1.", filename));
356 return;
357 }
358 }
359
360 // 1. Copy the layer style to the resource folder
361 const QString newDir = KoResourcePaths::getAppDataLocation();
362 const QString newName = oldFileInfo.fileName();
363 const QString newLocation = QStringLiteral("%1/%2").arg(newDir, newName);
364
365 const QFileInfo newFileInfo(newLocation);
366
367 if (newFileInfo.exists()) {
368 if (QMessageBox::warning(this,
369 i18nc("@title:window", "Warning"),
370 i18n("There is already a layer style library with this name installed. Do you "
371 "want to overwrite it?"),
372 QMessageBox::Ok | QMessageBox::Cancel)
373 == QMessageBox::Cancel) {
374 return;
375 } else {
376 QFile::remove(newLocation);
377 }
378 }
379
380 QFile::copy(filename, newLocation);
381
382 // 2. Add the layer style as a storage/update database
384 KIS_ASSERT(!storage.isNull());
385 if (!KisResourceLocator::instance()->addStorage(newLocation, storage)) {
386 qWarning() << "Could not add layer style library to the storages" << newLocation;
387 }
389 }
390}
static KisResourceLocator * instance()
static QString getAppDataLocation()
#define KIS_ASSERT(cond)
Definition kis_assert.h:33

References KoResourcePaths::getAppDataLocation(), KisResourceLocator::instance(), KIS_ASSERT, m_stylesSelector, KoFileDialog::OpenFile, and StylesSelector::refillCollections().

◆ slotMasterFxSwitchChanged

void KisDlgLayerStyle::slotMasterFxSwitchChanged ( bool value)
slot

Definition at line 175 of file kis_dlg_layer_style.cpp.

176{
177 wdgLayerStyles.lstStyleSelector->setEnabled(value);
178 wdgLayerStyles.stylesStack->setEnabled(value);
179 wdgLayerStyles.btnNewStyle->setEnabled(value);
180 wdgLayerStyles.btnLoadStyle->setEnabled(value);
181 wdgLayerStyles.btnSaveStyle->setEnabled(value);
183}
float value(const T *src, size_t ch)

References notifyGuiConfigChanged(), value(), and wdgLayerStyles.

◆ slotNewStyle

void KisDlgLayerStyle::slotNewStyle ( )
slot

Definition at line 271 of file kis_dlg_layer_style.cpp.

272{
273 bool success;
274 QString styleName =
275 QInputDialog::getText(this,
276 i18nc("@title:window", "Enter new style name"),
277 i18nc("@label:textbox", "Name:"),
278 QLineEdit::Normal,
279 i18nc("Default name for a new style", "New Style"),
280 &success);
281
282 if (!success)
283 return;
284
285 KisPSDLayerStyleSP clone = this->style()->clone().dynamicCast<KisPSDLayerStyle>();
286 clone->setName(styleName);
287 clone->setUuid(QUuid::createUuid());
288 clone->setFilename(clone->uuid().toString());
289 clone->setValid(true);
290
291 const QString customStylesStorageLocation = "asl/CustomStyles.asl";
292 QString resourceDir = KoResourcePaths::getAppDataLocation();
293 QString storagePath = resourceDir + "/" + customStylesStorageLocation;
294
295 bool resourceAdded = false;
296
297 if (KisResourceLocator::instance()->hasStorage(storagePath)) {
298 // storage is named by the folder + filename, NOT the full filepath
299 resourceAdded = KisResourceUserOperations::addResourceWithUserInput(this, clone, customStylesStorageLocation);
300 } else {
302 serializer.setStyles(QVector<KisPSDLayerStyleSP>() << clone);
303 serializer.saveToFile(storagePath);
305 resourceAdded = KisResourceLocator::instance()->addStorage(storagePath, storage);
306
308 auto adapter = interface->source<KisPSDLayerStyle>(ResourceType::LayerStyles);
309 clone = adapter.bestMatch(clone->md5Sum(false), clone->filename(), clone->name());
310 resourceAdded = bool(clone);
311 }
312
313 if (resourceAdded) {
314 m_stylesSelector->addNewStyle(customStylesStorageLocation, clone);
315
316 setStyle(clone);
317
318 // focus on the recently added item
319 wdgLayerStyles.stylesStack->setCurrentWidget(m_stylesSelector);
320 }
321}
void setStyles(const QVector< KisPSDLayerStyleSP > &styles)
bool saveToFile(const QString &filename)
static KisResourcesInterfaceSP instance()
bool addStorage(const QString &storageLocation, KisResourceStorageSP storage)
addStorage Adds a new resource storage to the database. The storage is will be marked as not pre-inst...
static bool addResourceWithUserInput(QWidget *widgetParent, KoResourceSP resource, QString storageLocation="")
void addNewStyle(const QString &location, const KisPSDLayerStyleSP style)
const QString LayerStyles
QString filename
QString md5Sum(bool generateIfEmpty=true) const

References StylesSelector::addNewStyle(), KisResourceUserOperations::addResourceWithUserInput(), KisResourceLocator::addStorage(), KoResource::filename, KoResourcePaths::getAppDataLocation(), KisGlobalResourcesInterface::instance(), KisResourceLocator::instance(), ResourceType::LayerStyles, m_stylesSelector, KoResource::md5Sum(), KisPSDLayerStyle::name, KisAslLayerStyleSerializer::saveToFile(), setStyle(), KisAslLayerStyleSerializer::setStyles(), style(), and wdgLayerStyles.

◆ slotNotifyOnAccept

void KisDlgLayerStyle::slotNotifyOnAccept ( )
slot

◆ slotNotifyOnReject

◆ slotSaveStyle

void KisDlgLayerStyle::slotSaveStyle ( )
slot

Definition at line 392 of file kis_dlg_layer_style.cpp.

393{
394 QString filename; // default value?
395
396 KoFileDialog dialog(this, KoFileDialog::SaveFile, "layerstyle");
397 dialog.setCaption(i18n("Select ASL file"));
398 dialog.setMimeTypeFilters(QStringList() << "application/x-photoshop-style-library", "application/x-photoshop-style-library");
399 filename = dialog.filename();
400
402
403 KisPSDLayerStyleSP newStyle = style()->clone().dynamicCast<KisPSDLayerStyle>();
404 newStyle->setName(QFileInfo(filename).completeBaseName());
406 styles << newStyle;
407 serializer->setStyles(styles);
408 serializer->saveToFile(filename);
409}
QList< QString > QStringList

References KoFileDialog::SaveFile, and style().

◆ style()

KisPSDLayerStyleSP KisDlgLayerStyle::style ( ) const

Definition at line 484 of file kis_dlg_layer_style.cpp.

485{
486 m_layerStyle->setEnabled(wdgLayerStyles.chkMasterFxSwitch->isChecked());
487
488 m_layerStyle->dropShadow()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(2)->checkState() == Qt::Checked);
489 m_layerStyle->innerShadow()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(3)->checkState() == Qt::Checked);
490 m_layerStyle->outerGlow()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(4)->checkState() == Qt::Checked);
491 m_layerStyle->innerGlow()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(5)->checkState() == Qt::Checked);
492 m_layerStyle->bevelAndEmboss()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(6)->checkState() == Qt::Checked);
493 m_layerStyle->bevelAndEmboss()->setContourEnabled(wdgLayerStyles.lstStyleSelector->item(7)->checkState() == Qt::Checked);
494 m_layerStyle->bevelAndEmboss()->setTextureEnabled(wdgLayerStyles.lstStyleSelector->item(8)->checkState() == Qt::Checked);
495 m_layerStyle->satin()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(9)->checkState() == Qt::Checked);
496 m_layerStyle->colorOverlay()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(10)->checkState() == Qt::Checked);
497 m_layerStyle->gradientOverlay()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(11)->checkState() == Qt::Checked);
498 m_layerStyle->patternOverlay()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(12)->checkState() == Qt::Checked);
499 m_layerStyle->stroke()->setEffectEnabled(wdgLayerStyles.lstStyleSelector->item(13)->checkState() == Qt::Checked);
500
501
502 m_dropShadow->fetchShadow(m_layerStyle->dropShadow());
503 m_innerShadow->fetchShadow(m_layerStyle->innerShadow());
504 m_outerGlow->fetchConfig(m_layerStyle->outerGlow());
505 m_innerGlow->fetchConfig(m_layerStyle->innerGlow());
512
515
516 return m_layerStyle;
517}
void fetchBevelAndEmboss(psd_layer_effects_bevel_emboss *bevelAndEmboss) const
void fetchColorOverlay(psd_layer_effects_color_overlay *colorOverlay) const
void fetchShadow(psd_layer_effects_shadow_common *shadow) const
void fetchGradientOverlay(psd_layer_effects_gradient_overlay *gradient) const
void fetchConfig(psd_layer_effects_glow_common *innerGlow) const
void fetchPatternOverlay(psd_layer_effects_pattern_overlay *pattern) const
void fetchSatin(psd_layer_effects_satin *satin) const
void fetchStroke(psd_layer_effects_stroke *stroke) const

References BevelAndEmboss::fetchBevelAndEmboss(), ColorOverlay::fetchColorOverlay(), InnerGlow::fetchConfig(), GradientOverlay::fetchGradientOverlay(), PatternOverlay::fetchPatternOverlay(), Satin::fetchSatin(), DropShadow::fetchShadow(), Stroke::fetchStroke(), m_bevelAndEmboss, m_colorOverlay, m_dropShadow, m_gradientOverlay, m_innerGlow, m_innerShadow, m_layerStyle, m_outerGlow, m_patternOverlay, m_sanityLayerStyleDirty, m_satin, m_stroke, m_stylesSelector, StylesSelector::notifyExternalStyleChanged(), and wdgLayerStyles.

◆ syncGlobalAngle

void KisDlgLayerStyle::syncGlobalAngle ( int angle)
slot

Definition at line 519 of file kis_dlg_layer_style.cpp.

520{
522
523 if (style->dropShadow()->useGlobalLight()) {
524 style->dropShadow()->setAngle(angle);
525 }
526 if (style->innerShadow()->useGlobalLight()) {
527 style->innerShadow()->setAngle(angle);
528 }
529 if (style->bevelAndEmboss()->useGlobalLight()) {
530 style->bevelAndEmboss()->setAngle(angle);
531 }
532
534}

References setStyle(), and style().

Member Data Documentation

◆ m_bevelAndEmboss

BevelAndEmboss* KisDlgLayerStyle::m_bevelAndEmboss
private

Definition at line 296 of file kis_dlg_layer_style.h.

◆ m_blendingOptions

BlendingOptions* KisDlgLayerStyle::m_blendingOptions
private

Definition at line 297 of file kis_dlg_layer_style.h.

◆ m_colorOverlay

ColorOverlay* KisDlgLayerStyle::m_colorOverlay
private

Definition at line 298 of file kis_dlg_layer_style.h.

◆ m_configChangedCompressor

KisSignalCompressor* KisDlgLayerStyle::m_configChangedCompressor
private

Definition at line 311 of file kis_dlg_layer_style.h.

◆ m_contour

Contour* KisDlgLayerStyle::m_contour
private

Definition at line 299 of file kis_dlg_layer_style.h.

◆ m_dropShadow

DropShadow* KisDlgLayerStyle::m_dropShadow
private

Definition at line 300 of file kis_dlg_layer_style.h.

◆ m_gradientOverlay

GradientOverlay* KisDlgLayerStyle::m_gradientOverlay
private

Definition at line 301 of file kis_dlg_layer_style.h.

◆ m_initialLayerStyle

KisPSDLayerStyleSP KisDlgLayerStyle::m_initialLayerStyle
private

Definition at line 292 of file kis_dlg_layer_style.h.

◆ m_innerGlow

InnerGlow* KisDlgLayerStyle::m_innerGlow
private

Definition at line 302 of file kis_dlg_layer_style.h.

◆ m_innerShadow

DropShadow* KisDlgLayerStyle::m_innerShadow
private

Definition at line 303 of file kis_dlg_layer_style.h.

◆ m_isSwitchingPredefinedStyle

bool KisDlgLayerStyle::m_isSwitchingPredefinedStyle
private

Definition at line 312 of file kis_dlg_layer_style.h.

◆ m_layerStyle

KisPSDLayerStyleSP KisDlgLayerStyle::m_layerStyle
private

Definition at line 291 of file kis_dlg_layer_style.h.

◆ m_outerGlow

InnerGlow* KisDlgLayerStyle::m_outerGlow
private

Definition at line 304 of file kis_dlg_layer_style.h.

◆ m_patternOverlay

PatternOverlay* KisDlgLayerStyle::m_patternOverlay
private

Definition at line 305 of file kis_dlg_layer_style.h.

◆ m_sanityLayerStyleDirty

bool KisDlgLayerStyle::m_sanityLayerStyleDirty
mutableprivate

Used for debugging purposes only to track if m_layerStyle is in sync with what is stored in the GUI

Definition at line 318 of file kis_dlg_layer_style.h.

◆ m_satin

Satin* KisDlgLayerStyle::m_satin
private

Definition at line 306 of file kis_dlg_layer_style.h.

◆ m_stroke

Stroke* KisDlgLayerStyle::m_stroke
private

Definition at line 307 of file kis_dlg_layer_style.h.

◆ m_stylesSelector

StylesSelector* KisDlgLayerStyle::m_stylesSelector
private

Definition at line 308 of file kis_dlg_layer_style.h.

◆ m_texture

Texture* KisDlgLayerStyle::m_texture
private

Definition at line 309 of file kis_dlg_layer_style.h.

◆ wdgLayerStyles

Ui::WdgStylesDialog KisDlgLayerStyle::wdgLayerStyles
private

Definition at line 294 of file kis_dlg_layer_style.h.


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