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

#include <SnapshotDocker.h>

+ Inheritance diagram for SnapshotDocker:

Classes

struct  Private
 

Public Member Functions

QString observerName () override
 
void setCanvas (KoCanvasBase *canvas) override
 
void setViewManager (KisViewManager *viewManager) override
 
 SnapshotDocker ()
 
void unsetCanvas () override
 
 ~SnapshotDocker () override
 
- Public Member Functions inherited from KisMainwindowObserver
 KisMainwindowObserver ()
 
 ~KisMainwindowObserver () override
 
- Public Member Functions inherited from KoCanvasObserverBase
 KoCanvasObserverBase ()
 
KoCanvasBaseobservedCanvas () const
 
void setObservedCanvas (KoCanvasBase *canvas)
 
void unsetObservedCanvas ()
 
virtual ~KoCanvasObserverBase ()
 

Private Slots

void slotBnAddClicked ()
 
void slotBnRemoveClicked ()
 
void slotBnSwitchToClicked ()
 

Private Attributes

QScopedPointer< Privatem_d
 

Additional Inherited Members

Detailed Description

Definition at line 18 of file SnapshotDocker.h.

Constructor & Destructor Documentation

◆ SnapshotDocker()

SnapshotDocker::SnapshotDocker ( )

Definition at line 52 of file SnapshotDocker.cpp.

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}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QScopedPointer< Private > m_d
QIcon loadIcon(const QString &name)

References connect(), KisIconUtils::loadIcon(), m_d, slotBnAddClicked(), slotBnRemoveClicked(), and slotBnSwitchToClicked().

◆ ~SnapshotDocker()

SnapshotDocker::~SnapshotDocker ( )
override

Definition at line 85 of file SnapshotDocker.cpp.

86{
87}

Member Function Documentation

◆ observerName()

QString SnapshotDocker::observerName ( )
inlineoverridevirtual

Reimplemented from KoCanvasObserverBase.

Definition at line 25 of file SnapshotDocker.h.

25{ return "SnapshotDocker"; }

◆ setCanvas()

void SnapshotDocker::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 103 of file SnapshotDocker.cpp.

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}

References m_d.

◆ setViewManager()

void SnapshotDocker::setViewManager ( KisViewManager * viewManager)
overridevirtual

Implements KisMainwindowObserver.

Definition at line 89 of file SnapshotDocker.cpp.

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}
KisAction * createAction(const QString &name)
void slotSwitchToSelectedSnapshot()
void slotRemoveSelectedSnapshot()
KisActionManager * actionManager() const

References KisViewManager::actionManager(), KisActionManager::createAction(), m_d, KisSnapshotModel::slotCreateSnapshot(), KisSnapshotView::slotRemoveSelectedSnapshot(), and KisSnapshotView::slotSwitchToSelectedSnapshot().

◆ slotBnAddClicked

void SnapshotDocker::slotBnAddClicked ( )
privateslot

Definition at line 121 of file SnapshotDocker.cpp.

122{
123 if (m_d->canvas) {
124 KisAction *action = m_d->canvas->viewManager()->actionManager()->actionByName("create_snapshot");
125 action->trigger();
126 }
127}
KisAction * actionByName(const QString &name) const
KisViewManager * viewManager() const
KisCanvas2 * canvas

References KisActionManager::actionByName(), KisViewManager::actionManager(), Private::canvas, m_d, and KisCanvas2::viewManager().

◆ slotBnRemoveClicked

void SnapshotDocker::slotBnRemoveClicked ( )
privateslot

Definition at line 137 of file SnapshotDocker.cpp.

138{
139 if (m_d->canvas) {
140 KisAction *action = m_d->canvas->viewManager()->actionManager()->actionByName("remove_snapshot");
141 action->trigger();
142 }
143}

References KisActionManager::actionByName(), KisViewManager::actionManager(), Private::canvas, m_d, and KisCanvas2::viewManager().

◆ slotBnSwitchToClicked

void SnapshotDocker::slotBnSwitchToClicked ( )
privateslot

Definition at line 129 of file SnapshotDocker.cpp.

130{
131 if (m_d->canvas) {
132 KisAction *action = m_d->canvas->viewManager()->actionManager()->actionByName("switchto_snapshot");
133 action->trigger();
134 }
135}

References KisActionManager::actionByName(), KisViewManager::actionManager(), Private::canvas, m_d, and KisCanvas2::viewManager().

◆ unsetCanvas()

void SnapshotDocker::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 116 of file SnapshotDocker.cpp.

117{
118 setCanvas(0);
119}
void setCanvas(KoCanvasBase *canvas) override

References setCanvas().

Member Data Documentation

◆ m_d

QScopedPointer<Private> SnapshotDocker::m_d
private

Definition at line 38 of file SnapshotDocker.h.


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