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

#include <palettedocker_dock.h>

+ Inheritance diagram for PaletteDockerDock:

Public Member Functions

 PaletteDockerDock ()
 
void removingResource (QSharedPointer< KoColorSet > resource) override
 
void resourceAdded (QSharedPointer< KoColorSet > resource) override
 
void resourceChanged (QSharedPointer< KoColorSet > resource) override
 
void setCanvas (KoCanvasBase *canvas) override
 
void setViewManager (KisViewManager *kisview) override
 
void unsetCanvas () override
 
void unsetResourceServer () override
 
 ~PaletteDockerDock () override
 
- Public Member Functions inherited from KisMainwindowObserver
 KisMainwindowObserver ()
 
 ~KisMainwindowObserver () override
 
- Public Member Functions inherited from KoCanvasObserverBase
 KoCanvasObserverBase ()
 
KoCanvasBase * observedCanvas () const
 
virtual QString observerName ()
 
void setObservedCanvas (KoCanvasBase *canvas)
 
void unsetObservedCanvas ()
 
virtual ~KoCanvasObserverBase ()
 
- Public Member Functions inherited from KoResourceServerObserver< KoColorSet >
virtual ~KoResourceServerObserver ()
 

Private Slots

void redo ()
 
void setRedoToolTip (const QString &text)
 
void setUndoToolTip (const QString &text)
 
void slotAddColor ()
 
void slotAddPalette ()
 
void slotContextMenu (const QModelIndex &)
 
void slotEditEntry ()
 
void slotEditPalette ()
 
void slotExportPalette (KoColorSetSP)
 
void slotFGColorResourceChanged (const KoColor &color)
 
void slotImportPalette ()
 
void slotLockPalette (bool locked)
 
void slotNameListSelection (const KoColor &color)
 
void slotPaletteIndexClicked (const QModelIndex &index)
 
void slotPaletteIndexDoubleClicked (const QModelIndex &index)
 
void slotPaletteIndexSelected (const QModelIndex &index)
 
void slotRemoveColor ()
 
void slotRemovePalette (KoColorSetSP)
 
void slotSavePalette ()
 
void slotSetColorSet (KoColorSetSP colorSet)
 
void slotStoragesChanged (const QString &location)
 
void slotUpdateLblPaletteName ()
 
void undo ()
 

Private Member Functions

void setEntryByForeground (const QModelIndex &index)
 
void setFGColorByPalette (const KisSwatch &entry)
 

Private Attributes

 : QScopedPointer<Ui_WdgPaletteDock> m_ui
 
QScopedPointer< QAction > m_actAdd
 
QScopedPointer< QAction > m_actEditPalette
 
QPointer< KisDocument > m_activeDocument
 
QScopedPointer< QAction > m_actModify
 
QScopedPointer< QAction > m_actRemove
 
QScopedPointer< QAction > m_actSavePalette
 
bool m_colorSelfUpdate
 
QSharedPointer< KoColorSet > m_currentColorSet
 
KisPaletteModel * m_model
 
KisPaletteChooser * m_paletteChooser
 
QScopedPointer< KisPaletteEditor > m_paletteEditor
 
KisCanvasResourceProvider * m_resourceProvider
 
KoResourceServer< KoColorSet > *const m_rServer
 
QPointer< KisViewManager > m_view
 
QMenu m_viewContextMenu
 

Additional Inherited Members

Detailed Description

Definition at line 37 of file palettedocker_dock.h.

Constructor & Destructor Documentation

◆ PaletteDockerDock()

PaletteDockerDock::PaletteDockerDock ( )

Definition at line 56 of file palettedocker_dock.cpp.

57 : QDockWidget(i18n("Palette"))
58 , m_ui(new Ui_WdgPaletteDock())
59 , m_model(new KisPaletteModel(this))
61 , m_view(0)
66 , m_actAdd(new QAction(KisIconUtils::loadIcon("list-add"), i18n("Add a new color swatch")))
67 , m_actRemove(new QAction(KisIconUtils::loadIcon("edit-delete"), i18n("Remove swatch or group")))
68 , m_actModify(new QAction(KisIconUtils::loadIcon("document-edit"), i18n("Edit swatch or group")))
69 , m_actEditPalette(new QAction(KisIconUtils::loadIcon("palette-edit"), i18n("Edit current palette")))
70 , m_actSavePalette(new QAction(KisIconUtils::loadIcon("document-save-16"), i18n("Save current palette")))
71 , m_colorSelfUpdate(false)
72{
73 QWidget *mainWidget = new QWidget(this);
74 setWidget(mainWidget);
75 m_ui->setupUi(mainWidget);
76
77 connect(KisResourceLocator::instance(), SIGNAL(storageRemoved(QString)), this, SLOT(slotStoragesChanged(QString)));
78
79 m_ui->bnAdd->setDefaultAction(m_actAdd.data());
80 m_ui->bnRemove->setDefaultAction(m_actRemove.data());
81 m_ui->bnRename->setDefaultAction(m_actModify.data());
82 m_ui->bnEditPalette->setDefaultAction(m_actEditPalette.data());
83 m_ui->bnSavePalette->setDefaultAction(m_actSavePalette.data());
84
85 // to make sure their icons have the same size
86 m_ui->bnRemove->setIconSize(QSize(16, 16));
87 m_ui->bnRename->setIconSize(QSize(16, 16));
88 m_ui->bnAdd->setIconSize(QSize(16, 16));
89 m_ui->bnEditPalette->setIconSize(QSize(16, 16));
90 m_ui->bnSavePalette->setIconSize(QSize(16, 16));
91
92
93 m_ui->paletteView->setPaletteModel(m_model);
94 m_ui->paletteView->setAllowModification(true);
95 m_ui->cmbNameList->setCompanionView(m_ui->paletteView);
96
97 m_paletteEditor->setPaletteModel(m_model);
98
99 connect(m_actAdd.data(), SIGNAL(triggered()), SLOT(slotAddColor()));
100 connect(m_actRemove.data(), SIGNAL(triggered()), SLOT(slotRemoveColor()));
101 connect(m_actModify.data(), SIGNAL(triggered()), SLOT(slotEditEntry()));
102 connect(m_actEditPalette.data(), SIGNAL(triggered()), SLOT(slotEditPalette()));
103 connect(m_actSavePalette.data(), SIGNAL(triggered()), SLOT(slotSavePalette()));
104 connect(m_ui->paletteView, SIGNAL(sigIndexSelected(QModelIndex)), SLOT(slotPaletteIndexSelected(QModelIndex)));
105 connect(m_ui->paletteView, SIGNAL(clicked(QModelIndex)), SLOT(slotPaletteIndexClicked(QModelIndex)));
106 connect(m_ui->paletteView, SIGNAL(doubleClicked(QModelIndex)),
107 SLOT(slotPaletteIndexDoubleClicked(QModelIndex)));
108 connect(m_model, SIGNAL(sigPaletteModified()), SLOT(slotUpdateLblPaletteName()));
109 connect(m_ui->cmbNameList, SIGNAL(sigColorSelected(const KoColor&)), SLOT(slotNameListSelection(const KoColor&)));
110 connect(m_ui->bnLock, SIGNAL(toggled(bool)), SLOT(slotLockPalette(bool)));
111
112 m_viewContextMenu.addAction(m_actModify.data());
113 m_viewContextMenu.addAction(m_actRemove.data());
114 connect(m_ui->paletteView, SIGNAL(pressed(QModelIndex)), SLOT(slotContextMenu(QModelIndex)));
115
116 connect(m_paletteChooser, SIGNAL(sigPaletteSelected(KoColorSetSP)), SLOT(slotSetColorSet(KoColorSetSP)));
117 connect(m_paletteChooser, SIGNAL(sigAddPalette()), SLOT(slotAddPalette()));
118 connect(m_paletteChooser, SIGNAL(sigImportPalette()), SLOT(slotImportPalette()));
119 connect(m_paletteChooser, SIGNAL(sigRemovePalette(KoColorSetSP)), SLOT(slotRemovePalette(KoColorSetSP)));
120 connect(m_paletteChooser, SIGNAL(sigExportPalette(KoColorSetSP)), SLOT(slotExportPalette(KoColorSetSP)));
121
122 m_ui->bnColorSets->setIcon(KisIconUtils::loadIcon("palette-library"));
123 m_ui->bnColorSets->setToolTip(i18n("Load a palette"));
124 m_ui->bnColorSets->setPopupWidget(m_paletteChooser);
125
126 KisConfig cfg(true);
127 QString defaultPaletteName = cfg.defaultPalette();
128 KoColorSetSP defaultPalette = m_rServer->resource("", "", defaultPaletteName);
129 if (defaultPalette) {
130 slotSetColorSet(defaultPalette);
131 m_paletteChooser->setCurrentItem(defaultPalette);
132 } else {
133 m_ui->bnAdd->setEnabled(false);
134 m_ui->bnUndo->setEnabled(false);
135 m_ui->bnRedo->setEnabled(false);
136 m_ui->bnRename->setEnabled(false);
137 m_ui->bnRemove->setEnabled(false);
138 m_ui->bnEditPalette->setEnabled(false);
139 m_ui->bnSavePalette->setEnabled(false);
140 m_ui->bnLock->setEnabled(false);
141
142 m_ui->paletteView->setAllowModification(false);
143 }
144
145 m_ui->bnUndo->setIcon(KisIconUtils::loadIcon("edit-undo"));
146 m_ui->bnRedo->setIcon(KisIconUtils::loadIcon("edit-redo"));
147
148 //m_ui->bnUndo->setVisible(false);
149 //m_ui->bnRedo->setVisible(false);
150
151
153 srv->addObserver(this);
154}
void setCurrentItem(KoResourceSP currentResource)
The PaletteEditor class this class manipulates a KisPaletteModel using GUI elements and communicates ...
The KisPaletteModel class This, together with KisPaletteView and KisPaletteDelegate forms a mvc way t...
static KisResourceLocator * instance()
void addObserver(ObserverType *observer)
QSharedPointer< T > resource(const QString &md5, const QString &fileName, const QString &name)
resource retrieves a resource. If the md5sum is not empty, the resource will only be retrieved if a r...
QPointer< KisViewManager > m_view
void slotRemovePalette(KoColorSetSP)
void slotSetColorSet(KoColorSetSP colorSet)
QScopedPointer< QAction > m_actEditPalette
QScopedPointer< QAction > m_actRemove
QScopedPointer< KisPaletteEditor > m_paletteEditor
QScopedPointer< QAction > m_actModify
void slotStoragesChanged(const QString &location)
QScopedPointer< QAction > m_actSavePalette
void slotExportPalette(KoColorSetSP)
QPointer< KisDocument > m_activeDocument
QScopedPointer< QAction > m_actAdd
KoResourceServer< KoColorSet > *const m_rServer
KisCanvasResourceProvider * m_resourceProvider
void slotPaletteIndexClicked(const QModelIndex &index)
void slotLockPalette(bool locked)
KisPaletteModel * m_model
void slotContextMenu(const QModelIndex &)
KisPaletteChooser * m_paletteChooser
void slotPaletteIndexDoubleClicked(const QModelIndex &index)
void slotPaletteIndexSelected(const QModelIndex &index)
void slotNameListSelection(const KoColor &color)
QIcon loadIcon(const QString &name)
static KoResourceServerProvider * instance()
KoResourceServer< KoColorSet > * paletteServer

References KoResourceServer< T >::addObserver(), KisConfig::defaultPalette(), KisResourceLocator::instance(), KoResourceServerProvider::instance(), KisIconUtils::loadIcon(), m_actAdd, m_actEditPalette, m_actModify, m_actRemove, m_actSavePalette, m_model, m_paletteChooser, m_paletteEditor, m_rServer, m_viewContextMenu, KoResourceServerProvider::paletteServer, KoResourceServer< T >::resource(), KisPaletteChooser::setCurrentItem(), slotAddColor(), slotAddPalette(), slotContextMenu(), slotEditEntry(), slotEditPalette(), slotExportPalette(), slotImportPalette(), slotLockPalette(), slotNameListSelection(), slotPaletteIndexClicked(), slotPaletteIndexDoubleClicked(), slotPaletteIndexSelected(), slotRemoveColor(), slotRemovePalette(), slotSavePalette(), slotSetColorSet(), slotStoragesChanged(), and slotUpdateLblPaletteName().

◆ ~PaletteDockerDock()

PaletteDockerDock::~PaletteDockerDock ( )
override

Definition at line 156 of file palettedocker_dock.cpp.

157{
158 if (m_paletteEditor->isModified()) {
159 m_paletteEditor->saveNewPaletteVersion();
160 }
162 srv->removeObserver(this);
163}
void removeObserver(ObserverType *observer)

References KoResourceServerProvider::instance(), m_paletteEditor, KoResourceServerProvider::paletteServer, and KoResourceServer< T >::removeObserver().

Member Function Documentation

◆ redo

void PaletteDockerDock::redo ( )
privateslot

Definition at line 464 of file palettedocker_dock.cpp.

465{
466 if (!m_currentColorSet) return;
467 m_currentColorSet->undoStack()->redo();
469}
QSharedPointer< KoColorSet > m_currentColorSet

References m_currentColorSet, and slotUpdateLblPaletteName().

◆ removingResource()

void PaletteDockerDock::removingResource ( QSharedPointer< KoColorSet > resource)
overridevirtual

Will be called by the resource server before a resource will be removed

Parameters
resourcethe resource which is going to be removed

Implements KoResourceServerObserver< KoColorSet >.

Definition at line 185 of file palettedocker_dock.cpp.

186{
187 Q_UNUSED(resource);
188}

◆ resourceAdded()

void PaletteDockerDock::resourceAdded ( QSharedPointer< KoColorSet > resource)
overridevirtual

Will be called by the resource server after a resource is added

Parameters
resourcethe added resource

Implements KoResourceServerObserver< KoColorSet >.

Definition at line 180 of file palettedocker_dock.cpp.

181{
182 Q_UNUSED(resource);
183}

◆ resourceChanged()

void PaletteDockerDock::resourceChanged ( QSharedPointer< KoColorSet > resource)
overridevirtual

Will be called by the resource server when a resource is changed

Parameters
resourcethe resource which is going to be removed

Implements KoResourceServerObserver< KoColorSet >.

Definition at line 190 of file palettedocker_dock.cpp.

191{
193}
void slotExternalPaletteModified(QSharedPointer< KoColorSet > resource)

References m_model, and KisPaletteModel::slotExternalPaletteModified().

◆ setCanvas()

void PaletteDockerDock::setCanvas ( KoCanvasBase * canvas)
overridevirtual

re-implement this method in your canvas observer. It will be called whenever a canvas becomes active. Note that you are responsible for not connecting more than one time to the signals of a canvas or any of the QObjects you can access through the canvas.

Implements KoCanvasObserverBase.

Definition at line 249 of file palettedocker_dock.cpp.

250{
251 setEnabled(canvas != 0);
252 if (canvas) {
253 KisCanvas2 *cv = qobject_cast<KisCanvas2*>(canvas);
254 m_ui->paletteView->setDisplayRenderer(cv->displayColorConverter()->displayRendererInterface());
255 }
256
257 if (m_view && m_view->document()) {
258 m_activeDocument = m_view->document();
259 m_paletteEditor->setView(m_view);
260 }
261
262 if (!m_currentColorSet) {
264 }
265}
KisDisplayColorConverter displayColorConverter
KoColorDisplayRendererInterface * displayRendererInterface() const

References KisCanvas2::displayColorConverter, KisDisplayColorConverter::displayRendererInterface(), m_activeDocument, m_currentColorSet, m_paletteEditor, m_view, and slotSetColorSet().

◆ setEntryByForeground()

void PaletteDockerDock::setEntryByForeground ( const QModelIndex & index)
private

Definition at line 519 of file palettedocker_dock.cpp.

520{
521 m_paletteEditor->setEntry(m_resourceProvider->fgColor(), index);
522 m_ui->bnRemove->setEnabled(true);
524}

References KisCanvasResourceProvider::fgColor(), m_paletteEditor, m_resourceProvider, and slotUpdateLblPaletteName().

◆ setFGColorByPalette()

void PaletteDockerDock::setFGColorByPalette ( const KisSwatch & entry)
private

Definition at line 374 of file palettedocker_dock.cpp.

375{
376 if (m_resourceProvider) {
377 m_colorSelfUpdate = true;
379 m_colorSelfUpdate = false;
380 }
381}
KoColor color() const
Definition KisSwatch.h:30

References KisSwatch::color(), m_colorSelfUpdate, m_resourceProvider, and KisCanvasResourceProvider::setFGColor().

◆ setRedoToolTip

void PaletteDockerDock::setRedoToolTip ( const QString & text)
privateslot

Definition at line 452 of file palettedocker_dock.cpp.

453{
454 m_ui->bnRedo->setToolTip(text);
455}

◆ setUndoToolTip

void PaletteDockerDock::setUndoToolTip ( const QString & text)
privateslot

Definition at line 447 of file palettedocker_dock.cpp.

448{
449 m_ui->bnUndo->setToolTip(text);
450}

◆ setViewManager()

void PaletteDockerDock::setViewManager ( KisViewManager * kisview)
overridevirtual

Implements KisMainwindowObserver.

Definition at line 165 of file palettedocker_dock.cpp.

166{
167 m_view = kisview;
169 connect(m_resourceProvider, SIGNAL(sigFGColorChanged(KoColor)),
171 kisview->nodeManager()->disconnect(m_model);
172}
KisNodeManager * nodeManager() const
The node manager handles everything about nodes.
KisCanvasResourceProvider * canvasResourceProvider()
void slotFGColorResourceChanged(const KoColor &color)

References KisViewManager::canvasResourceProvider(), m_model, m_resourceProvider, m_view, KisViewManager::nodeManager(), and slotFGColorResourceChanged().

◆ slotAddColor

void PaletteDockerDock::slotAddColor ( )
privateslot

◆ slotAddPalette

void PaletteDockerDock::slotAddPalette ( )
privateslot

Definition at line 202 of file palettedocker_dock.cpp.

203{
204 KoColorSetSP palette = m_paletteEditor->addPalette();
205
206 if (palette) {
208 }
209}

References m_paletteChooser, m_paletteEditor, and KisPaletteChooser::setCurrentItem().

◆ slotContextMenu

void PaletteDockerDock::slotContextMenu ( const QModelIndex & )
privateslot

Definition at line 195 of file palettedocker_dock.cpp.

196{
197 if (QApplication::mouseButtons() == Qt::RightButton) {
198 m_viewContextMenu.exec(QCursor::pos());
199 }
200}

References m_viewContextMenu.

◆ slotEditEntry

void PaletteDockerDock::slotEditEntry ( )
privateslot

Definition at line 526 of file palettedocker_dock.cpp.

527{
528 QModelIndex index = m_ui->paletteView->currentIndex();
529 if (!index.isValid()) {
530 return;
531 }
532 m_paletteEditor->modifyEntry(index);
534}

References m_paletteEditor, and slotUpdateLblPaletteName().

◆ slotEditPalette

void PaletteDockerDock::slotEditPalette ( )
privateslot

Definition at line 336 of file palettedocker_dock.cpp.

337{
338 KisDlgPaletteEditor dlg(m_paletteEditor.data(), m_view->mainWindowAsQWidget());
339 if (!m_currentColorSet) { return; }
340 dlg.initialize(m_model);
341 m_paletteEditor->startEditing();
342 bool applyChanges = (dlg.exec() == QDialog::Accepted);
343 m_paletteEditor->endEditing(applyChanges);
344}
The KisDlgPaletteEditor class a dialog used by the palette docker to make modifications to a palette....

References KisDlgPaletteEditor::initialize(), m_currentColorSet, m_model, m_paletteEditor, and m_view.

◆ slotExportPalette

void PaletteDockerDock::slotExportPalette ( KoColorSetSP palette)
privateslot

Definition at line 224 of file palettedocker_dock.cpp.

225{
227
228 KoFileDialog dialog(this, KoFileDialog::SaveFile, "Save Palette");
229 dialog.setCaption(i18n("Export Palette"));
230 dialog.setDefaultDir(palette->filename());
231 dialog.setMimeTypeFilters(QStringList() << "application/x-krita-palette");
232 QString newPath;
233 if ((newPath = dialog.filename()).isEmpty()) { return; }
234
235 QFile file(newPath);
236 if (!file.open(QIODevice::WriteOnly)) {
237 warnKrita << "Could not open the file for writing:" << newPath;
238 return;
239 }
240 if (palette->saveToDevice(&file)) {
241 m_view->showFloatingMessage(
242 i18nc("Floating message about exporting successful", "Palette exported successfully"), QIcon(),
244 } else {
245 warnKrita << "Could export to the file:" << newPath;
246 }
247}
QList< QString > QStringList
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
#define warnKrita
Definition kis_debug.h:94

References KIS_SAFE_ASSERT_RECOVER_RETURN, KisFloatingMessage::Low, m_view, KoFileDialog::SaveFile, and warnKrita.

◆ slotFGColorResourceChanged

void PaletteDockerDock::slotFGColorResourceChanged ( const KoColor & color)
privateslot

Definition at line 472 of file palettedocker_dock.cpp.

473{
474 if (!m_colorSelfUpdate) {
475 m_ui->paletteView->slotFGColorChanged(color);
476 }
477}

References m_colorSelfUpdate.

◆ slotImportPalette

void PaletteDockerDock::slotImportPalette ( )
privateslot

Definition at line 216 of file palettedocker_dock.cpp.

217{
218 KoColorSetSP palette = m_paletteEditor->importPalette();
219 if (palette) {
221 }
222}

References m_paletteChooser, m_paletteEditor, and KisPaletteChooser::setCurrentItem().

◆ slotLockPalette

void PaletteDockerDock::slotLockPalette ( bool locked)
privateslot

Definition at line 429 of file palettedocker_dock.cpp.

430{
431 if (m_currentColorSet && m_currentColorSet->isLocked() != locked) {
432 m_currentColorSet->setLocked(locked);
433 }
434 QIcon icon = locked ? KisIconUtils::loadIcon(koIconName("object-locked"))
435 : KisIconUtils::loadIcon(koIconName("object-unlocked"));
436 m_ui->bnLock->setIcon(icon);
437 m_ui->bnUndo->setEnabled(!locked && m_currentColorSet && m_currentColorSet->undoStack()->canUndo());
438 m_ui->bnRedo->setEnabled(!locked && m_currentColorSet && m_currentColorSet->undoStack()->canRedo());
439 m_ui->bnAdd->setEnabled(!locked && m_currentColorSet);
440 m_ui->bnRename->setEnabled(!locked && m_currentColorSet);
441 m_ui->bnRemove->setEnabled(!locked && m_currentColorSet);
442 m_ui->bnEditPalette->setEnabled(!locked && m_currentColorSet);
443 m_ui->bnSavePalette->setEnabled(!locked && m_currentColorSet);
444 m_ui->paletteView->setAllowModification(!locked && m_currentColorSet);
445}
#define koIconName(name)
Definition kis_icon.h:27

References koIconName, KisIconUtils::loadIcon(), and m_currentColorSet.

◆ slotNameListSelection

void PaletteDockerDock::slotNameListSelection ( const KoColor & color)
privateslot

Definition at line 536 of file palettedocker_dock.cpp.

537{
538 m_colorSelfUpdate = true;
539 m_ui->paletteView->selectClosestColor(color);
541 m_colorSelfUpdate = false;
542}

References m_colorSelfUpdate, m_resourceProvider, and KisCanvasResourceProvider::setFGColor().

◆ slotPaletteIndexClicked

void PaletteDockerDock::slotPaletteIndexClicked ( const QModelIndex & index)
privateslot

Definition at line 505 of file palettedocker_dock.cpp.

506{
507 if (!(qvariant_cast<bool>(index.data(KisPaletteModel::CheckSlotRole)))) {
509 }
511}
void setEntryByForeground(const QModelIndex &index)

References KisPaletteModel::CheckSlotRole, setEntryByForeground(), and slotUpdateLblPaletteName().

◆ slotPaletteIndexDoubleClicked

void PaletteDockerDock::slotPaletteIndexDoubleClicked ( const QModelIndex & index)
privateslot

Definition at line 513 of file palettedocker_dock.cpp.

514{
515 m_paletteEditor->modifyEntry(index);
517}

References m_paletteEditor, and slotUpdateLblPaletteName().

◆ slotPaletteIndexSelected

void PaletteDockerDock::slotPaletteIndexSelected ( const QModelIndex & index)
privateslot

Definition at line 491 of file palettedocker_dock.cpp.

492{
493 bool occupied = qvariant_cast<bool>(index.data(KisPaletteModel::CheckSlotRole));
494 if (occupied) {
495 if (!qvariant_cast<bool>(index.data(KisPaletteModel::IsGroupNameRole))) {
496 m_ui->bnRemove->setEnabled(true);
497 KisSwatch entry = m_model->getSwatch(index);
498 setFGColorByPalette(entry);
499 }
500 }
501 m_ui->bnRemove->setEnabled(occupied);
503}
KisSwatch getSwatch(const QModelIndex &index) const
void setFGColorByPalette(const KisSwatch &entry)

References KisPaletteModel::CheckSlotRole, KisPaletteModel::getSwatch(), KisPaletteModel::IsGroupNameRole, m_model, setFGColorByPalette(), and slotUpdateLblPaletteName().

◆ slotRemoveColor

void PaletteDockerDock::slotRemoveColor ( )
privateslot

Definition at line 363 of file palettedocker_dock.cpp.

364{
365 QModelIndex index = m_ui->paletteView->currentIndex();
366 if (!index.isValid()) {
367 return;
368 }
369 m_paletteEditor->removeEntry(index);
370 m_ui->bnRemove->setEnabled(false);
372}

References m_paletteEditor, and slotUpdateLblPaletteName().

◆ slotRemovePalette

void PaletteDockerDock::slotRemovePalette ( KoColorSetSP cs)
privateslot

Definition at line 211 of file palettedocker_dock.cpp.

212{
213 m_paletteEditor->removePalette(cs);
214}

References m_paletteEditor.

◆ slotSavePalette

void PaletteDockerDock::slotSavePalette ( )
privateslot

Definition at line 346 of file palettedocker_dock.cpp.

347{
348 if (m_paletteEditor->isModified()) {
349 m_paletteEditor->saveNewPaletteVersion();
351 }
352}

References m_paletteEditor, and slotUpdateLblPaletteName().

◆ slotSetColorSet

void PaletteDockerDock::slotSetColorSet ( KoColorSetSP colorSet)
privateslot

Definition at line 278 of file palettedocker_dock.cpp.

279{
280 if (m_currentColorSet == colorSet) {
282 return;
283 }
284
285 if (m_currentColorSet) {
286 disconnect(m_currentColorSet->undoStack());
287 }
288
289 // needs to save the palette before switching to another one
290 if (m_paletteEditor->isModified() && m_currentColorSet != colorSet) {
291 m_paletteEditor->saveNewPaletteVersion();
292 }
293 if (colorSet) {
294
295 m_model->setColorSet(colorSet);
296
297 m_ui->bnUndo->setEnabled(colorSet->undoStack()->canUndo() && !colorSet->isLocked());
298 connect(colorSet->undoStack(),
300 this,
301 [bnUndo = m_ui->bnUndo, colorSet = colorSet](bool canUndo) {
302 bnUndo->setEnabled(!colorSet->isLocked() && canUndo);
303 });
304 connect(colorSet->undoStack(), SIGNAL(undoTextChanged(QString)), this, SLOT(setUndoToolTip(QString)));
305
306 m_ui->bnRedo->setEnabled(colorSet->undoStack()->canRedo() && colorSet->isLocked());
307 connect(colorSet->undoStack(),
309 this,
310 [bnRedo = m_ui->bnRedo, colorSet = colorSet](bool canRedo) {
311 bnRedo->setEnabled(!colorSet->isLocked() && canRedo);
312 });
313 connect(colorSet->undoStack(), SIGNAL(redoTextChanged(QString)), this, SLOT(setRedoToolTip(QString)));
314
315 connect(m_ui->bnUndo, SIGNAL(clicked()), this, SLOT(undo()));
316 connect(m_ui->bnRedo, SIGNAL(clicked()), this, SLOT(redo()));
317
318 m_ui->bnLock->setChecked(colorSet->isLocked());
319 }
320
321 m_currentColorSet = colorSet;
322
323 if (colorSet) {
324 KisConfig cfg(true);
325 cfg.setDefaultPalette(colorSet->name());
326 m_ui->lblPaletteName->setTextElideMode(Qt::ElideMiddle);
327 m_ui->lblPaletteName->setText(colorSet->name());
328 }
329 else {
330 m_ui->lblPaletteName->setText("");
331 }
333 slotLockPalette(!colorSet || colorSet->isLocked());
334}
void canUndoChanged(bool canUndo)
void canRedoChanged(bool canRedo)
void setColorSet(KoColorSetSP colorSet)
void setRedoToolTip(const QString &text)
void setUndoToolTip(const QString &text)

References KUndo2QStack::canRedoChanged(), KUndo2QStack::canUndoChanged(), m_currentColorSet, m_model, m_paletteEditor, redo(), KisPaletteModel::setColorSet(), KisConfig::setDefaultPalette(), setRedoToolTip(), setUndoToolTip(), slotLockPalette(), slotUpdateLblPaletteName(), and undo().

◆ slotStoragesChanged

void PaletteDockerDock::slotStoragesChanged ( const QString & location)
privateslot

Definition at line 479 of file palettedocker_dock.cpp.

480{
481 if (m_activeDocument.isNull()) {
483 }
484 if (m_currentColorSet) {
485 if (!m_rServer->resource(m_currentColorSet->md5Sum(), "", "")) {
487 }
488 }
489}

References m_activeDocument, m_currentColorSet, m_rServer, KoResourceServer< T >::resource(), and slotSetColorSet().

◆ slotUpdateLblPaletteName

void PaletteDockerDock::slotUpdateLblPaletteName ( )
privateslot

Definition at line 383 of file palettedocker_dock.cpp.

384{
385 if (m_currentColorSet) {
386 m_ui->lblPaletteName->setTextElideMode(Qt::ElideLeft);
387 QString name = m_currentColorSet->name();
388
389 bool isGlobal = true;
391 QModelIndex index = model.indexForResource(m_currentColorSet);
392 if (index.isValid()) {
393 bool ok;
394 int storageId = model.data(index, Qt::UserRole + KisAllResourcesModel::StorageId).toInt(&ok);
395 if (ok) {
396 KisStorageModel storageModel;
397 KisResourceStorageSP storage = storageModel.storageForId(storageId);
398 isGlobal = storage->type() != KisResourceStorage::StorageType::Memory;
399 }
400 }
401 m_actSavePalette.data()->setEnabled(isGlobal);
402 if (isGlobal) {
403 m_actSavePalette.data()->setToolTip(i18nc("@tooltip", "Save palette explicitly, will also happen automatically on exiting Krita."));
404 }
405 else {
406 m_actSavePalette.data()->setToolTip(i18nc("@tooltip", "Saving for document palettes is done by saving the document."));
407 }
408 // if the palette is not global, then let's not indicate that the changes has been made
409 // (it's easier than tracking whether the document has been saved or maybe exported etc.)
410 if (m_paletteEditor->isModified() && isGlobal) {
411 name = "* " + name;
412 QFont font = m_ui->lblPaletteName->font();
413 font.setItalic(true);
414 m_ui->lblPaletteName->setFont(font);
415 }
416 else {
417 QFont font = m_ui->lblPaletteName->font();
418 font.setItalic(false);
419 m_ui->lblPaletteName->setFont(font);
420 }
421
422 m_ui->lblPaletteName->setText(name);
423 }
424 else {
425 m_ui->lblPaletteName->setText("");
426 }
427}
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...
KisResourceStorageSP storageForId(const int storageId) const
const char * name(StandardAction id)
const QString Palettes

References KisResourceModel::indexForResource(), m_actSavePalette, m_currentColorSet, m_paletteEditor, KisResourceStorage::Memory, ResourceType::Palettes, KisStorageModel::storageForId(), and KisAbstractResourceModel::StorageId.

◆ undo

void PaletteDockerDock::undo ( )
privateslot

Definition at line 457 of file palettedocker_dock.cpp.

458{
459 if (!m_currentColorSet) return;
460 m_currentColorSet->undoStack()->undo();
462}

References m_currentColorSet, and slotUpdateLblPaletteName().

◆ unsetCanvas()

void PaletteDockerDock::unsetCanvas ( )
overridevirtual

Re-implement to notify the observer that its canvas is no longer among the living. The daisies, it is pushing up. This means you don't have to disconnect, it's dead.

The old canvas should be deleted already, so if you stored a pointer to it, don't touch!

Note that currently there is a bug where in certain specific circumstances unsetCanvas can be called when it shouldn't, see for example KWStatisticsDocker for a workaround for this problem.

Implements KoCanvasObserverBase.

Definition at line 267 of file palettedocker_dock.cpp.

268{
269 setEnabled(false);
270 m_ui->paletteView->setDisplayRenderer(0);
271 m_paletteEditor->setView(0);
272
273 if (!m_currentColorSet) {
275 }
276}

References m_currentColorSet, m_paletteEditor, and slotSetColorSet().

◆ unsetResourceServer()

Member Data Documentation

◆ __pad0__

PaletteDockerDock::__pad0__
private

Definition at line 93 of file palettedocker_dock.h.

◆ m_actAdd

QScopedPointer<QAction> PaletteDockerDock::m_actAdd
private

Definition at line 110 of file palettedocker_dock.h.

◆ m_actEditPalette

QScopedPointer<QAction> PaletteDockerDock::m_actEditPalette
private

Definition at line 113 of file palettedocker_dock.h.

◆ m_activeDocument

QPointer<KisDocument> PaletteDockerDock::m_activeDocument
private

Definition at line 106 of file palettedocker_dock.h.

◆ m_actModify

QScopedPointer<QAction> PaletteDockerDock::m_actModify
private

Definition at line 112 of file palettedocker_dock.h.

◆ m_actRemove

QScopedPointer<QAction> PaletteDockerDock::m_actRemove
private

Definition at line 111 of file palettedocker_dock.h.

◆ m_actSavePalette

QScopedPointer<QAction> PaletteDockerDock::m_actSavePalette
private

Definition at line 114 of file palettedocker_dock.h.

◆ m_colorSelfUpdate

bool PaletteDockerDock::m_colorSelfUpdate
private

Definition at line 117 of file palettedocker_dock.h.

◆ m_currentColorSet

QSharedPointer<KoColorSet> PaletteDockerDock::m_currentColorSet
private

Definition at line 107 of file palettedocker_dock.h.

◆ m_model

KisPaletteModel* PaletteDockerDock::m_model
private

Definition at line 98 of file palettedocker_dock.h.

◆ m_paletteChooser

KisPaletteChooser* PaletteDockerDock::m_paletteChooser
private

Definition at line 99 of file palettedocker_dock.h.

◆ m_paletteEditor

QScopedPointer<KisPaletteEditor> PaletteDockerDock::m_paletteEditor
private

Definition at line 108 of file palettedocker_dock.h.

◆ m_resourceProvider

KisCanvasResourceProvider* PaletteDockerDock::m_resourceProvider
private

Definition at line 102 of file palettedocker_dock.h.

◆ m_rServer

KoResourceServer<KoColorSet>* const PaletteDockerDock::m_rServer
private

Definition at line 104 of file palettedocker_dock.h.

◆ m_view

QPointer<KisViewManager> PaletteDockerDock::m_view
private

Definition at line 101 of file palettedocker_dock.h.

◆ m_viewContextMenu

QMenu PaletteDockerDock::m_viewContextMenu
private

Definition at line 115 of file palettedocker_dock.h.


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