Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDlgPaletteEditor.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2018 Michael Zhou <simeirxh@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#include <QAction>
8#include <QSpinBox>
9#include <QVBoxLayout>
10#include <QLineEdit>
11#include <QMessageBox>
12#include <QInputDialog>
13#include <QFormLayout>
14#include <QPicture>
15#include <QSignalBlocker>
16
18#include <KoResourceServer.h>
19#include <KoDialog.h>
20#include <KoColorSet.h>
21#include <kis_global.h>
22#include <KisPaletteModel.h>
23#include <KisStorageModel.h>
24
25#include "KisPaletteEditor.h"
26
27#include "ui_WdgDlgPaletteEditor.h"
28
29#include "KisDlgPaletteEditor.h"
30
31#include <kstandardguiitem.h>
32
33KisDlgPaletteEditor::KisDlgPaletteEditor(KisPaletteEditor *editor, QWidget *parent, Qt::WindowFlags f)
34 : QDialog(parent, f)
35 , m_ui(new Ui_WdgDlgPaletteEditor)
36 , m_actAddGroup(new QAction(i18n("Add a swatch group")))
37 , m_actDelGroup(new QAction(i18nc("Group as Swatch Group in a Palette", "Remove selected group")))
38 , m_actRenGroup(new QAction(i18nc("Group as Swatch Group in a Palette", "Rename selected group")))
39 , m_paletteEditor(editor)
40 , m_currentGroupOriginalName(KoColorSet::GLOBAL_GROUP_NAME)
41{
42 setWindowTitle(i18n("Palette Editor"));
43
44 m_ui->setupUi(this);
45 m_ui->gbxPalette->setTitle(i18n("Palette options"));
46 m_ui->labelName->setText(i18n("Palette name:"));
47 m_ui->bnAddGroup->setDefaultAction(m_actAddGroup.data());
48
49 m_ui->gbxGroup->setTitle(i18n("Swatch Group options"));
50 m_ui->labelColCount->setText(i18n("Columns of swatches:"));
51 m_ui->labelRowCount->setText(i18n("Rows of swatches in group:"));
52 m_ui->bnDelGroup->setDefaultAction(m_actDelGroup.data());
53 m_ui->bnRenGroup->setDefaultAction(m_actRenGroup.data());
54
55 connect(m_actAddGroup.data(), SIGNAL(triggered(bool)), SLOT(slotAddGroup()));
56 connect(m_actDelGroup.data(), SIGNAL(triggered(bool)), SLOT(slotDelGroup()));
57 connect(m_actRenGroup.data(), SIGNAL(triggered(bool)), SLOT(slotRenGroup()));
58 connect(m_ui->spinBoxRow, SIGNAL(valueChanged(int)), SLOT(slotRowCountChanged(int)));
59 connect(m_ui->spinBoxCol, SIGNAL(valueChanged(int)), SLOT(slotColCountChanged(int)));
60 connect(m_ui->lineEditName, SIGNAL(editingFinished()), SLOT(slotNameChanged()));
61
62
63 m_ui->storageLocation->setModel(KisStorageModel::instance());
64 m_ui->storageLocation->setModelColumn(KisStorageModel::DisplayName);
65
66 // TODO: We have no concept of moving storages whatsoever, so for now, let's disable this combobox.
67 m_ui->storageLocation->setEnabled(false);
68 connect(m_ui->storageLocation, SIGNAL(currentIndexChanged(int)), SLOT(slotSetGlobal()));
69
70 m_warnPalette.setColor(QPalette::Text, Qt::red);
71
72 KGuiItem::assign(m_ui->buttonBox->button(QDialogButtonBox::Ok), KStandardGuiItem::ok());
73 KGuiItem::assign(m_ui->buttonBox->button(QDialogButtonBox::Cancel), KStandardGuiItem::cancel());
74}
75
78
80{
81 m_colorSet = model->colorSet();
82 if (m_colorSet.isNull()) {
83 return;
84 }
85
86 // don't let editor make changes when initializing
87 const QSignalBlocker blocker2(m_ui->lineEditName);
88 const QSignalBlocker blocker3(m_ui->spinBoxCol);
89 const QSignalBlocker blocker4(m_ui->spinBoxRow);
90 const QSignalBlocker blocker5(m_ui->storageLocation);
91 const QSignalBlocker blocker7(m_ui->cbxGroup);
92
93 m_ui->lineEditName->setText(m_colorSet->name());
94 m_ui->spinBoxCol->setValue(m_colorSet->columnCount());
95
96 m_ui->storageLocation->setCurrentIndex(m_ui->storageLocation->findData(m_colorSet->storageLocation(), Qt::UserRole + KisStorageModel::Location));
97
98 Q_FOREACH (const QString & groupName, m_colorSet->swatchGroupNames()) {
99 m_ui->cbxGroup->addItem(groupName);
100 }
101
102 connect(m_ui->cbxGroup, SIGNAL(currentTextChanged(QString)), SLOT(slotGroupChosen(QString)));
103 m_ui->cbxGroup->setCurrentText(KoColorSet::GLOBAL_GROUP_NAME);
104 m_ui->bnDelGroup->setEnabled(false);
105 m_ui->bnRenGroup->setEnabled(false);
106
107 m_ui->spinBoxRow->setValue(m_paletteEditor->rowCountOfGroup(KoColorSet::GLOBAL_GROUP_NAME));
108
109 m_ui->lineEditName->setEnabled(true);
110 m_ui->spinBoxCol->setEnabled(true);
111 m_ui->spinBoxRow->setEnabled(true);
112 m_ui->bnAddGroup->setEnabled(true);
113}
114
116{
117 QString newGroupName = m_paletteEditor->addGroup();
118 if (!newGroupName.isEmpty()) {
119 m_ui->cbxGroup->addItem(newGroupName);
120 m_ui->cbxGroup->setCurrentIndex(m_ui->cbxGroup->count() - 1);
121 };
122}
123
125{
126 QString newName = m_paletteEditor->renameGroup(m_currentGroupOriginalName);
127 if (!newName.isEmpty()) {
128 int idx = m_ui->cbxGroup->currentIndex();
129 m_ui->cbxGroup->removeItem(idx);
130 m_ui->cbxGroup->insertItem(idx, newName);
131 m_ui->cbxGroup->setCurrentIndex(idx);
132 }
133}
134
136{
137 int deletedIdx = m_ui->cbxGroup->currentIndex();
139 m_ui->cbxGroup->setCurrentIndex(0);
140 m_ui->cbxGroup->removeItem(deletedIdx);
141 }
142}
143
144void KisDlgPaletteEditor::slotGroupChosen(const QString &groupName)
145{
146 if (groupName == KoColorSet::GLOBAL_GROUP_NAME) {
147 m_ui->bnDelGroup->setEnabled(false);
148 m_ui->bnRenGroup->setEnabled(false);
149 } else {
150 m_ui->bnDelGroup->setEnabled(true);
151 m_ui->bnRenGroup->setEnabled(true);
152 }
153 m_currentGroupOriginalName = m_paletteEditor->oldNameFromNewName(groupName);
154 m_ui->spinBoxRow->setValue(m_paletteEditor->rowCountOfGroup(m_currentGroupOriginalName));
155}
156
158{
159 m_paletteEditor->changeGroupRowCount(m_currentGroupOriginalName, newCount);
160}
161
163{
164 m_paletteEditor->setStorageLocation(m_ui->storageLocation->currentData(KisStorageModel::Location).toString());
165}
166
168{
169 m_paletteEditor->rename(qobject_cast<QLineEdit*>(sender())->text());
170}
171
173{
174 m_paletteEditor->changeColumnCount(newCount);
175}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisDlgPaletteEditor(KisPaletteEditor *editor, QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
QSharedPointer< KoColorSet > m_colorSet
QScopedPointer< Ui_WdgDlgPaletteEditor > m_ui
QScopedPointer< QAction > m_actRenGroup
void slotGroupChosen(const QString &groupName)
QPointer< KisPaletteEditor > m_paletteEditor
void initialize(KisPaletteModel *)
QScopedPointer< QAction > m_actDelGroup
QScopedPointer< QAction > m_actAddGroup
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...
KoColorSetSP colorSet() const
static KisStorageModel * instance()
static const QString GLOBAL_GROUP_NAME
Definition KoColorSet.h:33