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 ()
 
KoCanvasBaseobservedCanvas () 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< KisDocumentm_activeDocument
 
QScopedPointer< QAction > m_actModify
 
QScopedPointer< QAction > m_actRemove
 
QScopedPointer< QAction > m_actSavePalette
 
bool m_colorSelfUpdate
 
QSharedPointer< KoColorSetm_currentColorSet
 
KisPaletteModelm_model
 
KisPaletteChooserm_paletteChooser
 
QScopedPointer< KisPaletteEditorm_paletteEditor
 
KisCanvasResourceProviderm_resourceProvider
 
KoResourceServer< KoColorSet > *const m_rServer
 
QPointer< KisViewManagerm_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->setVisible(false);
146 //m_ui->bnRedo->setVisible(false);
147
148
150 srv->addObserver(this);
151}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
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(), connect(), 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 153 of file palettedocker_dock.cpp.

154{
155 if (m_paletteEditor->isModified()) {
156 m_paletteEditor->saveNewPaletteVersion();
157 }
159 srv->removeObserver(this);
160}
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 453 of file palettedocker_dock.cpp.

454{
455 m_currentColorSet->undoStack()->redo();
457}
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 182 of file palettedocker_dock.cpp.

183{
184 Q_UNUSED(resource);
185}

◆ 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 177 of file palettedocker_dock.cpp.

178{
179 Q_UNUSED(resource);
180}

◆ 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 187 of file palettedocker_dock.cpp.

188{
190}
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 244 of file palettedocker_dock.cpp.

245{
246 setEnabled(canvas != 0);
247 if (canvas) {
248 KisCanvas2 *cv = qobject_cast<KisCanvas2*>(canvas);
249 m_ui->paletteView->setDisplayRenderer(cv->displayColorConverter()->displayRendererInterface());
250 }
251
252 if (m_view && m_view->document()) {
253 m_activeDocument = m_view->document();
254 m_paletteEditor->setView(m_view);
255 }
256
257 if (!m_currentColorSet) {
259 }
260}
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 507 of file palettedocker_dock.cpp.

508{
509 m_paletteEditor->setEntry(m_resourceProvider->fgColor(), index);
510 m_ui->bnRemove->setEnabled(true);
512}

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

◆ setFGColorByPalette()

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

Definition at line 368 of file palettedocker_dock.cpp.

369{
370 if (m_resourceProvider) {
371 m_colorSelfUpdate = true;
373 m_colorSelfUpdate = false;
374 }
375}
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 442 of file palettedocker_dock.cpp.

443{
444 m_ui->bnRedo->setToolTip(text);
445}

◆ setUndoToolTip

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

Definition at line 437 of file palettedocker_dock.cpp.

438{
439 m_ui->bnUndo->setToolTip(text);
440}

◆ setViewManager()

void PaletteDockerDock::setViewManager ( KisViewManager * kisview)
overridevirtual

Implements KisMainwindowObserver.

Definition at line 162 of file palettedocker_dock.cpp.

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

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

◆ slotAddColor

void PaletteDockerDock::slotAddColor ( )
privateslot

◆ slotAddPalette

void PaletteDockerDock::slotAddPalette ( )
privateslot

Definition at line 199 of file palettedocker_dock.cpp.

200{
201 KoColorSetSP palette = m_paletteEditor->addPalette();
202
203 if (palette) {
205 }
206}
rgba palette[MAX_PALETTE]
Definition palette.c:35

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

◆ slotContextMenu

void PaletteDockerDock::slotContextMenu ( const QModelIndex & )
privateslot

Definition at line 192 of file palettedocker_dock.cpp.

193{
194 if (QApplication::mouseButtons() == Qt::RightButton) {
195 m_viewContextMenu.exec(QCursor::pos());
196 }
197}

References m_viewContextMenu.

◆ slotEditEntry

void PaletteDockerDock::slotEditEntry ( )
privateslot

Definition at line 514 of file palettedocker_dock.cpp.

515{
516 QModelIndex index = m_ui->paletteView->currentIndex();
517 if (!index.isValid()) {
518 return;
519 }
520 m_paletteEditor->modifyEntry(index);
522}

References m_paletteEditor, and slotUpdateLblPaletteName().

◆ slotEditPalette

void PaletteDockerDock::slotEditPalette ( )
privateslot

Definition at line 330 of file palettedocker_dock.cpp.

331{
333 if (!m_currentColorSet) { return; }
334 dlg.initialize(m_model);
335 m_paletteEditor->startEditing();
336 bool applyChanges = (dlg.exec() == QDialog::Accepted);
337 m_paletteEditor->endEditing(applyChanges);
338}
The KisDlgPaletteEditor class a dialog used by the palette docker to make modifications to a palette....

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

◆ slotExportPalette

void PaletteDockerDock::slotExportPalette ( KoColorSetSP palette)
privateslot

Definition at line 221 of file palettedocker_dock.cpp.

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

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

◆ slotFGColorResourceChanged

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

Definition at line 460 of file palettedocker_dock.cpp.

461{
462 if (!m_colorSelfUpdate) {
463 m_ui->paletteView->slotFGColorChanged(color);
464 }
465}

References m_colorSelfUpdate.

◆ slotImportPalette

void PaletteDockerDock::slotImportPalette ( )
privateslot

Definition at line 213 of file palettedocker_dock.cpp.

214{
215 KoColorSetSP palette = m_paletteEditor->importPalette();
216 if (palette) {
218 }
219}

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

◆ slotLockPalette

void PaletteDockerDock::slotLockPalette ( bool locked)
privateslot

Definition at line 423 of file palettedocker_dock.cpp.

424{
425 m_currentColorSet->setLocked(locked);
426 QIcon icon = locked ? KisIconUtils::loadIcon(koIconName("object-locked"))
427 : KisIconUtils::loadIcon(koIconName("object-unlocked"));
428 m_ui->bnLock->setIcon(icon);
429 m_ui->bnAdd->setEnabled(!locked);
430 m_ui->bnRename->setEnabled(!locked);
431 m_ui->bnRemove->setEnabled(!locked);
432 m_ui->bnEditPalette->setEnabled(!locked);
433 m_ui->bnSavePalette->setEnabled(!locked);
434 m_ui->paletteView->setAllowModification(!locked);
435}
#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 524 of file palettedocker_dock.cpp.

525{
526 m_colorSelfUpdate = true;
527 m_ui->paletteView->selectClosestColor(color);
529 m_colorSelfUpdate = false;
530}

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

◆ slotPaletteIndexClicked

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

Definition at line 493 of file palettedocker_dock.cpp.

494{
495 if (!(qvariant_cast<bool>(index.data(KisPaletteModel::CheckSlotRole)))) {
497 }
499}
void setEntryByForeground(const QModelIndex &index)

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

◆ slotPaletteIndexDoubleClicked

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

Definition at line 501 of file palettedocker_dock.cpp.

502{
503 m_paletteEditor->modifyEntry(index);
505}

References m_paletteEditor, and slotUpdateLblPaletteName().

◆ slotPaletteIndexSelected

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

Definition at line 479 of file palettedocker_dock.cpp.

480{
481 bool occupied = qvariant_cast<bool>(index.data(KisPaletteModel::CheckSlotRole));
482 if (occupied) {
483 if (!qvariant_cast<bool>(index.data(KisPaletteModel::IsGroupNameRole))) {
484 m_ui->bnRemove->setEnabled(true);
485 KisSwatch entry = m_model->getSwatch(index);
486 setFGColorByPalette(entry);
487 }
488 }
489 m_ui->bnRemove->setEnabled(occupied);
491}
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 357 of file palettedocker_dock.cpp.

358{
359 QModelIndex index = m_ui->paletteView->currentIndex();
360 if (!index.isValid()) {
361 return;
362 }
363 m_paletteEditor->removeEntry(index);
364 m_ui->bnRemove->setEnabled(false);
366}

References m_paletteEditor, and slotUpdateLblPaletteName().

◆ slotRemovePalette

void PaletteDockerDock::slotRemovePalette ( KoColorSetSP cs)
privateslot

Definition at line 208 of file palettedocker_dock.cpp.

209{
210 m_paletteEditor->removePalette(cs);
211}

References m_paletteEditor.

◆ slotSavePalette

void PaletteDockerDock::slotSavePalette ( )
privateslot

Definition at line 340 of file palettedocker_dock.cpp.

341{
342 if (m_paletteEditor->isModified()) {
343 m_paletteEditor->saveNewPaletteVersion();
345 }
346}

References m_paletteEditor, and slotUpdateLblPaletteName().

◆ slotSetColorSet

void PaletteDockerDock::slotSetColorSet ( KoColorSetSP colorSet)
privateslot

Definition at line 273 of file palettedocker_dock.cpp.

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

References connect(), m_currentColorSet, m_model, m_paletteEditor, redo(), KisPaletteModel::setColorSet(), KisConfig::setDefaultPalette(), setRedoToolTip(), setUndoToolTip(), slotUpdateLblPaletteName(), and undo().

◆ slotStoragesChanged

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

Definition at line 467 of file palettedocker_dock.cpp.

468{
469 if (m_activeDocument.isNull()) {
471 }
472 if (m_currentColorSet) {
473 if (!m_rServer->resource(m_currentColorSet->md5Sum(), "", "")) {
475 }
476 }
477}

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

◆ slotUpdateLblPaletteName

void PaletteDockerDock::slotUpdateLblPaletteName ( )
privateslot

Definition at line 377 of file palettedocker_dock.cpp.

378{
379 if (m_currentColorSet) {
380 m_ui->lblPaletteName->setTextElideMode(Qt::ElideLeft);
381 QString name = m_currentColorSet->name();
382
383 bool isGlobal = true;
385 QModelIndex index = model.indexForResource(m_currentColorSet);
386 if (index.isValid()) {
387 bool ok;
388 int storageId = model.data(index, Qt::UserRole + KisAllResourcesModel::StorageId).toInt(&ok);
389 if (ok) {
390 KisStorageModel storageModel;
391 KisResourceStorageSP storage = storageModel.storageForId(storageId);
392 isGlobal = storage->type() != KisResourceStorage::StorageType::Memory;
393 }
394 }
395 m_actSavePalette.data()->setEnabled(isGlobal);
396 if (isGlobal) {
397 m_actSavePalette.data()->setToolTip(i18nc("@tooltip", "Save palette explicitly, will also happen automatically on exiting Krita."));
398 }
399 else {
400 m_actSavePalette.data()->setToolTip(i18nc("@tooltip", "Saving for document palettes is done by saving the document."));
401 }
402 // if the palette is not global, then let's not indicate that the changes has been made
403 // (it's easier than tracking whether the document has been saved or maybe exported etc.)
404 if (m_paletteEditor->isModified() && isGlobal) {
405 name = "* " + name;
406 QFont font = m_ui->lblPaletteName->font();
407 font.setItalic(true);
408 m_ui->lblPaletteName->setFont(font);
409 }
410 else {
411 QFont font = m_ui->lblPaletteName->font();
412 font.setItalic(false);
413 m_ui->lblPaletteName->setFont(font);
414 }
415
416 m_ui->lblPaletteName->setText(name);
417 }
418 else {
419 m_ui->lblPaletteName->setText("");
420 }
421}
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 447 of file palettedocker_dock.cpp.

448{
449 m_currentColorSet->undoStack()->undo();
451}

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 262 of file palettedocker_dock.cpp.

263{
264 setEnabled(false);
265 m_ui->paletteView->setDisplayRenderer(0);
266 m_paletteEditor->setView(0);
267
268 if (!m_currentColorSet) {
270 }
271}

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: