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

#include <kis_workspace_chooser.h>

+ Inheritance diagram for KisWorkspaceChooser:

Classes

struct  ChooserWidgets
 

Public Member Functions

 KisWorkspaceChooser (KisViewManager *view, QWidget *parent=0)
 
 ~KisWorkspaceChooser () override
 

Private Slots

void showEvent (QShowEvent *) override
 
void slotSaveWindowLayout ()
 
void slotSaveWorkspace ()
 
void slotUpdateWindowLayoutSaveButton ()
 
void slotUpdateWorkspaceSaveButton ()
 
void windowLayoutSelected (KoResourceSP resource)
 
void workspaceSelected (KoResourceSP resource)
 

Private Member Functions

ChooserWidgets createChooserWidgets (const QString &resourceType, const QString &title)
 

Private Attributes

QGridLayout * m_layout
 
KisViewManagerm_view
 
ChooserWidgets m_windowLayoutWidgets
 
ChooserWidgets m_workspaceWidgets
 

Detailed Description

Definition at line 20 of file kis_workspace_chooser.h.

Constructor & Destructor Documentation

◆ KisWorkspaceChooser()

KisWorkspaceChooser::KisWorkspaceChooser ( KisViewManager * view,
QWidget * parent = 0 )

Definition at line 85 of file kis_workspace_chooser.cpp.

85 : QWidget(parent), m_view(view)
86{
87 m_layout = new QGridLayout(this);
88
89 // Workspaces
91
92 KisConfig cfg(true);
93 QString workspaceName = cfg.readEntry<QString>("CurrentWorkspace");
95
96 connect(m_workspaceWidgets.itemChooser, SIGNAL(resourceSelected(KoResourceSP )),
97 this, SLOT(workspaceSelected(KoResourceSP )));
98 connect(m_workspaceWidgets.saveButton, SIGNAL(clicked(bool)), this, SLOT(slotSaveWorkspace()));
99 connect(m_workspaceWidgets.nameEdit, SIGNAL(textEdited(const QString&)), this, SLOT(slotUpdateWorkspaceSaveButton()));
100
102
103 // Window layouts
105
106 connect(m_windowLayoutWidgets.itemChooser, SIGNAL(resourceSelected(KoResourceSP )),
107 this, SLOT(windowLayoutSelected(KoResourceSP )));
108 connect(m_windowLayoutWidgets.saveButton, SIGNAL(clicked(bool)), this, SLOT(slotSaveWindowLayout()));
109 connect(m_windowLayoutWidgets.nameEdit, SIGNAL(textEdited(const QString&)), this, SLOT(slotUpdateWindowLayoutSaveButton()));
110
112}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void setCurrentResource(KoResourceSP resource)
Sets the item representing the resource as selected.
ChooserWidgets m_workspaceWidgets
ChooserWidgets m_windowLayoutWidgets
ChooserWidgets createChooserWidgets(const QString &resourceType, const QString &title)
void workspaceSelected(KoResourceSP resource)
void windowLayoutSelected(KoResourceSP resource)
const QString Workspaces
const QString WindowLayouts

References connect(), createChooserWidgets(), KisWorkspaceChooser::ChooserWidgets::itemChooser, m_layout, m_windowLayoutWidgets, m_workspaceWidgets, KisWorkspaceChooser::ChooserWidgets::nameEdit, KisConfig::readEntry(), KisWorkspaceChooser::ChooserWidgets::saveButton, KisResourceItemChooser::setCurrentResource(), slotSaveWindowLayout(), slotSaveWorkspace(), slotUpdateWindowLayoutSaveButton(), slotUpdateWorkspaceSaveButton(), ResourceType::WindowLayouts, windowLayoutSelected(), ResourceType::Workspaces, and workspaceSelected().

◆ ~KisWorkspaceChooser()

KisWorkspaceChooser::~KisWorkspaceChooser ( )
override

Definition at line 145 of file kis_workspace_chooser.cpp.

146{
147
148}

Member Function Documentation

◆ createChooserWidgets()

KisWorkspaceChooser::ChooserWidgets KisWorkspaceChooser::createChooserWidgets ( const QString & resourceType,
const QString & title )
private

Definition at line 114 of file kis_workspace_chooser.cpp.

115{
116 ChooserWidgets r;
117
118 QLabel *titleLabel = new QLabel(this);
119 QFont titleFont;
120 titleFont.setBold(true);
121 titleLabel->setFont(titleFont);
122 titleLabel->setText(title);
123
124 r.itemChooser = new KisResourceItemChooser(resourceType, false, this);
125 r.itemChooser->setItemDelegate(new KisWorkspaceDelegate(this));
126 r.itemChooser->setListViewMode(ListViewMode::Detail);
127 r.itemChooser->setRowHeight(KisWorkspaceDelegate::heightHint);
128 r.itemChooser->showTaggingBar(false);
129
130 r.nameEdit = new QLineEdit(this);
131 r.nameEdit->setPlaceholderText(i18n("Insert name"));
132 r.nameEdit->setClearButtonEnabled(true);
133
134 r.saveButton = new QPushButton(i18n("Save"));
135
136 int firstRow = m_layout->rowCount();
137 m_layout->addWidget(titleLabel, firstRow, 0, 1, 2);
138 m_layout->addWidget(r.itemChooser, firstRow + 1, 0, 1, 2);
139 m_layout->addWidget(r.nameEdit, firstRow + 2, 0, 1, 1);
140 m_layout->addWidget(r.saveButton, firstRow + 2, 1, 1, 1);
141
142 return r;
143}

References Detail, KisWorkspaceDelegate::heightHint, and m_layout.

◆ showEvent

void KisWorkspaceChooser::showEvent ( QShowEvent * event)
overrideprivateslot

◆ slotSaveWindowLayout

void KisWorkspaceChooser::slotSaveWindowLayout ( )
privateslot

Definition at line 226 of file kis_workspace_chooser.cpp.

227{
228 KisMainWindow *thisWindow = qobject_cast<KisMainWindow*>(m_view->qtMainWindow());
229 if (!thisWindow) return;
230
231 if (m_windowLayoutWidgets.nameEdit->text().isEmpty()) {
232 return;
233 }
234
237 dlg.exec();
238
239 if (dlg.result() != QDialog::Accepted) return;
240
241 QString name = dlg.name();
242 bool showImageInAllWindows = dlg.showImageInAllWindows();
243 bool primaryWorkspaceFollowsFocus = dlg.primaryWorkspaceFollowsFocus();
244
245 KisWindowLayoutResourceSP layout = KisWindowLayoutResource::fromCurrentWindows(name, KisPart::instance()->mainWindows(), showImageInAllWindows, primaryWorkspaceFollowsFocus, thisWindow);
246 layout->setValid(true);
247
249 KisWindowLayoutManager::instance()->setPrimaryWorkspaceFollowsFocus(primaryWorkspaceFollowsFocus, thisWindow->id());
250
251 if (name.isEmpty()) {
252 name = i18n("Window Layout");
253 }
254
255 layout->setName(name);
256 layout->setFilename(name.split(" ").join("_") + layout->defaultFileExtension());
258
260}
Main window for Krita.
void setName(const QString &name)
static KisPart * instance()
Definition KisPart.cpp:131
static bool addResourceWithUserInput(QWidget *widgetParent, KoResourceSP resource, QString storageLocation="")
QMainWindow * qtMainWindow() const
void setShowImageInAllWindowsEnabled(bool showInAll)
void setPrimaryWorkspaceFollowsFocus(bool enabled, QUuid primaryWindow)
static KisWindowLayoutManager * instance()
static KisWindowLayoutResourceSP fromCurrentWindows(const QString &filename, const QList< QPointer< KisMainWindow > > &mainWindows, bool showImageInAllWindows, bool primaryWorkspaceFollowsFocus, KisMainWindow *primaryWindow)
const char * name(StandardAction id)

References KisResourceUserOperations::addResourceWithUserInput(), KisWindowLayoutResource::fromCurrentWindows(), KisMainWindow::id, KisPart::instance(), KisWindowLayoutManager::instance(), m_view, m_windowLayoutWidgets, KisNewWindowLayoutDialog::name(), KisWorkspaceChooser::ChooserWidgets::nameEdit, KisNewWindowLayoutDialog::primaryWorkspaceFollowsFocus(), KisViewManager::qtMainWindow(), KisNewWindowLayoutDialog::setName(), KisWindowLayoutManager::setPrimaryWorkspaceFollowsFocus(), KisWindowLayoutManager::setShowImageInAllWindowsEnabled(), KisNewWindowLayoutDialog::showImageInAllWindows(), and slotUpdateWindowLayoutSaveButton().

◆ slotSaveWorkspace

void KisWorkspaceChooser::slotSaveWorkspace ( )
privateslot

Definition at line 150 of file kis_workspace_chooser.cpp.

151{
152 if (!m_view->qtMainWindow()) {
153 return;
154 }
155
156 KisWorkspaceResourceSP workspace;
157 QString name = m_workspaceWidgets.nameEdit->text();
158 if (name.isEmpty()) {
159 return;
160 }
161
163 QVector<KoResourceSP> resources = resourceModel->resourcesForName(name);
164
165 if (!resources.isEmpty()) {
166 workspace = resources.first().dynamicCast<KisWorkspaceResource>();
167 }
168
169 if (workspace.isNull()) {
170 workspace.reset(new KisWorkspaceResource(name));
171 workspace->setName(name);
172 workspace->setDockerState(m_view->qtMainWindow()->saveState());
173 workspace->setImage(m_view->mainWindow()->layoutThumbnail());
174 workspace->setValid(true);
175 workspace->setFilename(name.replace(" ", "_") + workspace->defaultFileExtension());
178 }
179 else {
180 workspace->setDockerState(m_view->qtMainWindow()->saveState());
181 workspace->setImage(m_view->mainWindow()->layoutThumbnail());
184 }
185
188}
The KisAllresourcesModel class provides access to the cache database for a particular resource type....
QVector< KoResourceSP > resourcesForName(const QString &name) const
void notifySavingWorkspace(KisWorkspaceResourceSP workspace)
Notify that the workspace is saved and settings should be saved to it.
QImage layoutThumbnail()
layoutThumbnail
static KisAllResourcesModel * resourceModel(const QString &resourceType)
static bool updateResourceWithUserInput(QWidget *widgetParent, KoResourceSP resource)
KisMainWindow * mainWindow() const
KisCanvasResourceProvider * canvasResourceProvider()
Resource for storing of workspaces.

References KisResourceUserOperations::addResourceWithUserInput(), KisViewManager::canvasResourceProvider(), KisMainWindow::layoutThumbnail(), m_view, m_workspaceWidgets, KisViewManager::mainWindow(), KisWorkspaceChooser::ChooserWidgets::nameEdit, KisCanvasResourceProvider::notifySavingWorkspace(), KisViewManager::qtMainWindow(), KisResourceModelProvider::resourceModel(), KisAllResourcesModel::resourcesForName(), slotUpdateWorkspaceSaveButton(), KisResourceUserOperations::updateResourceWithUserInput(), and ResourceType::Workspaces.

◆ slotUpdateWindowLayoutSaveButton

void KisWorkspaceChooser::slotUpdateWindowLayoutSaveButton ( )
privateslot

Definition at line 262 of file kis_workspace_chooser.cpp.

263{
264 if (m_windowLayoutWidgets.nameEdit->text().isEmpty()) {
265 m_windowLayoutWidgets.saveButton->setEnabled(false);
266 return;
267 }
268 m_windowLayoutWidgets.saveButton->setEnabled(true);
269
272 if (resources.isEmpty()) return;
273
274 KoResourceSP res = resources.first();
275
276 if (res && res->active()) {
278 m_windowLayoutWidgets.saveButton->setToolTip(i18n("File name already in use. Saving will overwrite the original window layout."));
279 } else {
280 m_windowLayoutWidgets.saveButton->setIcon(QIcon());
281 m_windowLayoutWidgets.saveButton->setToolTip(i18n("Save current window layout."));
282 }
283}
QIcon loadIcon(const QString &name)

References KisIconUtils::loadIcon(), m_windowLayoutWidgets, KisWorkspaceChooser::ChooserWidgets::nameEdit, KisResourceModelProvider::resourceModel(), KisAllResourcesModel::resourcesForName(), KisWorkspaceChooser::ChooserWidgets::saveButton, and ResourceType::WindowLayouts.

◆ slotUpdateWorkspaceSaveButton

void KisWorkspaceChooser::slotUpdateWorkspaceSaveButton ( )
privateslot

Definition at line 190 of file kis_workspace_chooser.cpp.

191{
192 if (m_workspaceWidgets.nameEdit->text().isEmpty()) {
193 m_workspaceWidgets.saveButton->setEnabled(false);
194 return;
195 }
196 m_workspaceWidgets.saveButton->setEnabled(true);
197
200 KoResourceSP res = resources.count() > 0 ? resources.first() : nullptr;
201 if (res && res->active()) {
203 m_workspaceWidgets.saveButton->setToolTip(i18n("File name already in use. Saving will overwrite the original Workspace."));
204 m_workspaceWidgets.saveButton->setText(i18n("Overwrite"));
205 }
206 else {
207 m_workspaceWidgets.saveButton->setIcon(QIcon());
208 m_workspaceWidgets.saveButton->setToolTip(i18n("Save current workspace."));
209 m_workspaceWidgets.saveButton->setText(i18n("Save"));
210 }
211}

References KisIconUtils::loadIcon(), m_workspaceWidgets, KisWorkspaceChooser::ChooserWidgets::nameEdit, KisResourceModelProvider::resourceModel(), KisAllResourcesModel::resourcesForName(), KisWorkspaceChooser::ChooserWidgets::saveButton, and ResourceType::Workspaces.

◆ windowLayoutSelected

void KisWorkspaceChooser::windowLayoutSelected ( KoResourceSP resource)
privateslot

Definition at line 285 of file kis_workspace_chooser.cpp.

286{
288 layout->applyLayout();
289}

◆ workspaceSelected

void KisWorkspaceChooser::workspaceSelected ( KoResourceSP resource)
privateslot

Definition at line 213 of file kis_workspace_chooser.cpp.

214{
215 if (!m_view->qtMainWindow()) {
216 return;
217 }
218
219 KisConfig cfg(false);
220 cfg.writeEntry("CurrentWorkspace", resource->name());
221 KisWorkspaceResourceSP workspace = resource.dynamicCast<KisWorkspaceResource>();
222 KisMainWindow *mainWindow = qobject_cast<KisMainWindow*>(m_view->qtMainWindow());
223 mainWindow->restoreWorkspace(workspace);
224}

References m_view, KisViewManager::qtMainWindow(), and KisConfig::writeEntry().

Member Data Documentation

◆ m_layout

QGridLayout* KisWorkspaceChooser::m_layout
private

Definition at line 48 of file kis_workspace_chooser.h.

◆ m_view

KisViewManager* KisWorkspaceChooser::m_view
private

Definition at line 46 of file kis_workspace_chooser.h.

◆ m_windowLayoutWidgets

ChooserWidgets KisWorkspaceChooser::m_windowLayoutWidgets
private

Definition at line 50 of file kis_workspace_chooser.h.

◆ m_workspaceWidgets

ChooserWidgets KisWorkspaceChooser::m_workspaceWidgets
private

Definition at line 49 of file kis_workspace_chooser.h.


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