Krita Source Code Documentation
Loading...
Searching...
No Matches
SnapshotDocker.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019 Tusooa Zhu <tusooa@vista.aero>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#include "SnapshotDocker.h"
8
9#include <QWidget>
10#include <QToolButton>
11#include <QVBoxLayout>
12#include <QHBoxLayout>
13
14#include "KisSnapshotModel.h"
15#include "KisSnapshotView.h"
16
17#include <kis_canvas2.h>
18#include <kis_icon_utils.h>
19#include <kis_action.h>
20#include <kis_action_manager.h>
21#include <KisViewManager.h>
23
37
39 : model(new KisSnapshotModel)
40 , view(new KisSnapshotView)
41 , canvas(0)
42 , bnAdd(new QToolButton)
43 , bnSwitchTo(new QToolButton)
44 , bnRemove(new QToolButton)
45{
46}
47
51
53 : QDockWidget()
54 , m_d(new Private)
55{
56 QWidget *widget = new QWidget(this);
57 QVBoxLayout *mainLayout = new QVBoxLayout(widget);
58 m_d->view->setModel(m_d->model.data());
59 mainLayout->addWidget(m_d->view);
60 QHBoxLayout *buttonsLayout = new QHBoxLayout();
61 m_d->bnAdd->setIcon(KisIconUtils::loadIcon("list-add"));
62 m_d->bnAdd->setToolTip(i18nc("@info:tooltip", "Create snapshot"));
63 m_d->bnAdd->setAutoRaise(true);
64
65 connect(m_d->bnAdd, &QToolButton::clicked, this, &SnapshotDocker::slotBnAddClicked);
66 buttonsLayout->addWidget(m_d->bnAdd);
67 m_d->bnSwitchTo->setIcon(KisIconUtils::loadIcon("snapshot-load"));
68 m_d->bnSwitchTo->setToolTip(i18nc("@info:tooltip", "Switch to selected snapshot"));
69 m_d->bnSwitchTo->setAutoRaise(true);
70 connect(m_d->bnSwitchTo, &QToolButton::clicked, this, &SnapshotDocker::slotBnSwitchToClicked);
71
72 buttonsLayout->addWidget(m_d->bnSwitchTo);
73 m_d->bnRemove->setIcon(KisIconUtils::loadIcon("edit-delete"));
74 m_d->bnRemove->setToolTip(i18nc("@info:tooltip", "Remove selected snapshot"));
75 m_d->bnRemove->setAutoRaise(true);
76 connect(m_d->bnRemove, &QToolButton::clicked, this, &SnapshotDocker::slotBnRemoveClicked);
77 buttonsLayout->addWidget(m_d->bnRemove);
78 mainLayout->addLayout(buttonsLayout);
79
80 setWidget(widget);
81 setWindowTitle(i18n("Snapshot Docker"));
82 setEnabled(false);
83}
84
88
90{
91 m_d->connections.clear();
92 KisAction *action = viewManager->actionManager()->createAction("create_snapshot");
93 m_d->connections.addConnection(action, &KisAction::triggered,
95 action = viewManager->actionManager()->createAction("switchto_snapshot");
96 m_d->connections.addConnection(action, &KisAction::triggered,
98 action = viewManager->actionManager()->createAction("remove_snapshot");
99 m_d->connections.addConnection(action, &KisAction::triggered,
101}
102
104{
105 KisCanvas2 *c = dynamic_cast<KisCanvas2 *>(canvas);
106 if (c) {
107 if (m_d->canvas == c) {
108 return;
109 }
110 }
111 setEnabled(canvas != 0);
112 m_d->canvas = c;
113 m_d->model->setCanvas(c);
114}
115
117{
118 setCanvas(0);
119}
120
122{
123 if (m_d->canvas) {
124 KisAction *action = m_d->canvas->viewManager()->actionManager()->actionByName("create_snapshot");
125 action->trigger();
126 }
127}
128
130{
131 if (m_d->canvas) {
132 KisAction *action = m_d->canvas->viewManager()->actionManager()->actionByName("switchto_snapshot");
133 action->trigger();
134 }
135}
136
138{
139 if (m_d->canvas) {
140 KisAction *action = m_d->canvas->viewManager()->actionManager()->actionByName("remove_snapshot");
141 action->trigger();
142 }
143}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisAction * createAction(const QString &name)
KisAction * actionByName(const QString &name) const
KisViewManager * viewManager() const
void slotSwitchToSelectedSnapshot()
void slotRemoveSelectedSnapshot()
KisActionManager * actionManager() const
~SnapshotDocker() override
void setViewManager(KisViewManager *viewManager) override
void unsetCanvas() override
void setCanvas(KoCanvasBase *canvas) override
QScopedPointer< Private > m_d
QIcon loadIcon(const QString &name)
KisCanvas2 * canvas
QPointer< QToolButton > bnRemove
QPointer< QToolButton > bnSwitchTo
QPointer< QToolButton > bnAdd
QScopedPointer< KisSnapshotModel > model
QPointer< KisCanvas2 > canvas
KisSignalAutoConnectionsStore connections
QPointer< KisSnapshotView > view