Krita Source Code Documentation
Loading...
Searching...
No Matches
page_tag_chooser.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2023 Srirupa Datta <srirupa.sps@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#include "page_tag_chooser.h"
8#include "ui_pagetagchooser.h"
9#include "dlg_create_bundle.h"
10
11#include <QProcessEnvironment>
12#include <QMessageBox>
13#include <QStandardPaths>
14#include <QGridLayout>
15#include <QTableWidget>
16#include <QPainter>
17#include <QListWidget>
18
20#include <KoDocumentInfo.h>
21#include <KoFileDialog.h>
22#include <kis_icon.h>
23#include <KoResource.h>
24#include <KoResourceServer.h>
26#include <kstandardguiitem.h>
27#include <KisTagModel.h>
28#include "wdgtagpreview.h"
29#include <KisTag.h>
30
33#include <dlg_embed_tags.h>
34
35#include <kis_config.h>
36
37
39 QWizardPage(parent),
40 m_ui(new Ui::PageTagChooser)
41 , m_bundle(bundle)
42{
43 m_ui->setupUi(this);
44
45 KoDocumentInfo info;
46 info.updateParameters();
47
55
56 m_ui->tabWidget->addTab(tabBrushes, i18n("Brushes"));
57 m_ui->tabWidget->addTab(tabBrushPresets, i18n("Brush Presets"));
58 m_ui->tabWidget->addTab(tabGradients, i18n("Gradients"));
59 m_ui->tabWidget->addTab(tabGamutMasks, i18n("Gamut Masks"));
60 m_ui->tabWidget->addTab(tabPatterns, i18n("Patterns"));
61 m_ui->tabWidget->addTab(tabPalettes, i18n("Palettes"));
62 m_ui->tabWidget->addTab(tabWorkspaces, i18n("Workspaces"));
63
64 connect(tabBrushes, SIGNAL(tagsAdded(KisTagSP)), this, SLOT(addSelected(KisTagSP)));
65 connect(tabBrushPresets, SIGNAL(tagsAdded(KisTagSP)), this, SLOT(addSelected(KisTagSP)));
66 connect(tabGradients, SIGNAL(tagsAdded(KisTagSP)), this, SLOT(addSelected(KisTagSP)));
67 connect(tabGamutMasks, SIGNAL(tagsAdded(KisTagSP)), this, SLOT(addSelected(KisTagSP)));
68 connect(tabPatterns, SIGNAL(tagsAdded(KisTagSP)), this, SLOT(addSelected(KisTagSP)));
69 connect(tabPalettes, SIGNAL(tagsAdded(KisTagSP)), this, SLOT(addSelected(KisTagSP)));
70 connect(tabWorkspaces, SIGNAL(tagsAdded(KisTagSP)), this, SLOT(addSelected(KisTagSP)));
71
72 connect(tabBrushes, SIGNAL(tagsRemoved(KisTagSP)), this, SLOT(removeSelected(KisTagSP)));
73 connect(tabBrushPresets, SIGNAL(tagsRemoved(KisTagSP)), this, SLOT(removeSelected(KisTagSP)));
74 connect(tabGradients, SIGNAL(tagsRemoved(KisTagSP)), this, SLOT(removeSelected(KisTagSP)));
75 connect(tabGamutMasks, SIGNAL(tagsRemoved(KisTagSP)), this, SLOT(removeSelected(KisTagSP)));
76 connect(tabPatterns, SIGNAL(tagsRemoved(KisTagSP)), this, SLOT(removeSelected(KisTagSP)));
77 connect(tabPalettes, SIGNAL(tagsRemoved(KisTagSP)), this, SLOT(removeSelected(KisTagSP)));
78 connect(tabWorkspaces, SIGNAL(tagsRemoved(KisTagSP)), this, SLOT(removeSelected(KisTagSP)));
79
80 if (m_bundle) {
81 m_bundleStorage = new KisBundleStorage(m_bundle->filename());
82
84 #if defined HAVE_SEEXPR
85 resourceTypes << ResourceType::SeExprScripts;
86 #endif
88
89 for (int i = 0; i < resourceTypes.size(); i++) {
91 KisTagModel *tagModel = new KisTagModel(resourceTypes[i]);
92
93 while (tagIter->hasNext()) {
94 tagIter->next();
95 KisTagSP tag = tagModel->tagForUrl(tagIter->tag()->url());
96 m_selectedTagIds.append(tag->id());
97 }
98 }
99 }
100}
101
103{
104 delete m_ui;
105}
106
111
113{
114 m_selectedTagIds.append(tagSP->id());
115 updateTags(true, tagSP->name());
116}
117
119{
120 m_selectedTagIds.removeAll(tagSP->id());
121 updateTags(false, tagSP->name());
122}
123
124void PageTagChooser::updateTags(bool flag, QString tag)
125{
126 DlgCreateBundle *wizard = qobject_cast<DlgCreateBundle*>(this->wizard());
127 if (wizard) {
128 if (flag) {
129 wizard->m_tags.insert(tag);
130 } else {
131 wizard->m_tags.remove(tag);
132 }
133 }
134
135 Q_EMIT tagsUpdated();
136}
QList< QString > QStringList
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QSet< QString > m_tags
QSharedPointer< KisResourceStorage::TagIterator > tags(const QString &resourceType) override
KisTagSP tagForUrl(const QString &url) const override
Retrieve a tag by url.
The class containing all meta information about a document.
PageTagChooser(KoResourceBundleSP bundle=nullptr, QWidget *parent=nullptr)
KoResourceBundleSP m_bundle
void removeSelected(KisTagSP tagSP)
QList< int > m_selectedTagIds
QList< int > selectedTagIds()
void tagsUpdated()
KisBundleStorage * m_bundleStorage
void addSelected(KisTagSP tagSP)
void updateTags(bool flag, QString tag)
Ui::PageTagChooser * m_ui
const QString Palettes
const QString Brushes
const QString GamutMasks
const QString Patterns
const QString SeExprScripts
const QString Gradients
const QString Workspaces
const QString PaintOpPresets