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

#include <kis_mirror_manager.h>

+ Inheritance diagram for KisMirrorManager:

Public Member Functions

 KisMirrorManager (KisViewManager *view)
 
void setup (KisKActionCollection *collection)
 
void setView (QPointer< KisView > imageView)
 
 ~KisMirrorManager () override
 

Private Slots

void slotDocumentConfigChanged ()
 
void slotMirrorAxisConfigChanged ()
 
void slotSyncActionStates (bool val)
 
void updateAction ()
 

Private Member Functions

KisMirrorAxisSP decoration () const
 
void setDecorationConfig ()
 

Private Attributes

QPointer< KisViewm_imageView
 
QAction * m_mirrorCanvas {nullptr}
 
QAction * m_mirrorCanvasAroundCanvas {nullptr}
 
QAction * m_mirrorCanvasAroundCursor {nullptr}
 

Detailed Description

Definition at line 22 of file kis_mirror_manager.h.

Constructor & Destructor Documentation

◆ KisMirrorManager()

KisMirrorManager::KisMirrorManager ( KisViewManager * view)

Definition at line 26 of file kis_mirror_manager.cpp.

26 : QObject(view)
27 , m_imageView(0)
28{
29}
QPointer< KisView > m_imageView

◆ ~KisMirrorManager()

KisMirrorManager::~KisMirrorManager ( )
override

Definition at line 31 of file kis_mirror_manager.cpp.

32{
33}

Member Function Documentation

◆ decoration()

KisMirrorAxisSP KisMirrorManager::decoration ( ) const
private

Definition at line 150 of file kis_mirror_manager.cpp.

151{
152 if (m_imageView) {
153 return qobject_cast<KisMirrorAxis*>(m_imageView->canvasBase()->decoration("mirror_axis").data());
154 } else {
155 return 0;
156 }
157}

References m_imageView.

◆ setDecorationConfig()

void KisMirrorManager::setDecorationConfig ( )
private

Definition at line 159 of file kis_mirror_manager.cpp.

160{
161 if (m_imageView && m_imageView->document()) {
162 KisMirrorAxisConfig config = m_imageView->document()->mirrorAxisConfig();
163
164 KisMirrorAxisSP canvasDecoration = this->decoration();
165 if (canvasDecoration) {
166 canvasDecoration->setMirrorAxisConfig(config);
167 }
168 }
169}
The KisMirrorAxisConfig class stores configuration for the KisMirrorAxis canvas decoration....
KisMirrorAxisSP decoration() const

References decoration(), and m_imageView.

◆ setup()

void KisMirrorManager::setup ( KisKActionCollection * collection)

Definition at line 35 of file kis_mirror_manager.cpp.

36{
37 m_mirrorCanvas = new KToggleAction(i18n("Mirror View"), this);
38 m_mirrorCanvas->setChecked(false);
39 m_mirrorCanvas->setIcon(KisIconUtils::loadIcon("mirror-view"));
40 collection->addAction("mirror_canvas", m_mirrorCanvas);
41 collection->setDefaultShortcut(m_mirrorCanvas, QKeySequence(Qt::Key_M));
42
43 m_mirrorCanvasAroundCursor = new KToggleAction(i18n("Mirror View Around Cursor"), this);
44 m_mirrorCanvasAroundCursor->setChecked(false);
45 m_mirrorCanvasAroundCursor->setIcon(KisIconUtils::loadIcon("mirror-view-around-cursor"));
46 collection->addAction("mirror_canvas_around_cursor", m_mirrorCanvasAroundCursor);
47
48 m_mirrorCanvasAroundCanvas = new KToggleAction(i18n("Mirror View Around Canvas"), this);
49 m_mirrorCanvasAroundCanvas->setChecked(false);
51 collection->addAction("mirror_canvas_around_canvas", m_mirrorCanvasAroundCanvas);
52
54}
void setDefaultShortcut(QAction *action, const QKeySequence &shortcut)
Q_INVOKABLE QAction * addAction(const QString &name, QAction *action)
QAction * m_mirrorCanvasAroundCursor
QAction * m_mirrorCanvasAroundCanvas
QIcon loadIcon(const QString &name)

References KisKActionCollection::addAction(), KisIconUtils::loadIcon(), m_mirrorCanvas, m_mirrorCanvasAroundCanvas, m_mirrorCanvasAroundCursor, KisKActionCollection::setDefaultShortcut(), and updateAction().

◆ setView()

void KisMirrorManager::setView ( QPointer< KisView > imageView)

Definition at line 56 of file kis_mirror_manager.cpp.

57{
58 if (m_imageView) {
59 m_mirrorCanvas->disconnect();
60 m_mirrorCanvasAroundCursor->disconnect();
61 m_mirrorCanvasAroundCanvas->disconnect();
62
63 m_imageView->document()->disconnect(this);
64
65 KisMirrorAxisSP canvasDecoration = this->decoration();
66 if (canvasDecoration) {
67 canvasDecoration->disconnect();
68 }
69 }
70
71 m_imageView = imageView;
72
73 if (m_imageView) {
74 connect(m_mirrorCanvas, SIGNAL(toggled(bool)), dynamic_cast<KisCanvasController*>(m_imageView->canvasController()), SLOT(mirrorCanvas(bool)));
75 connect(m_mirrorCanvasAroundCursor, SIGNAL(toggled(bool)), dynamic_cast<KisCanvasController*>(m_imageView->canvasController()), SLOT(mirrorCanvasAroundCursor(bool)));
76 connect(m_mirrorCanvasAroundCanvas, SIGNAL(toggled(bool)), dynamic_cast<KisCanvasController*>(m_imageView->canvasController()), SLOT(mirrorCanvasAroundCanvas(bool)));
77
78 connect(m_imageView->canvasController()->proxyObject,
80 this,
81 [this](bool mirrorX, bool mirrorY) {
82 Q_UNUSED(mirrorY);
83 this->slotSyncActionStates(mirrorX);
84 });
85
86 connect(m_imageView->document(), SIGNAL(sigMirrorAxisConfigChanged()), this, SLOT(slotDocumentConfigChanged()), Qt::UniqueConnection);
87
88 KisMirrorAxisSP canvasDecoration = this->decoration();
89 if (!canvasDecoration) {
90 KisMirrorAxis* decoration = new KisMirrorAxis(m_imageView->viewManager()->canvasResourceProvider(), m_imageView);
91 connect(decoration, SIGNAL(sigConfigChanged()), this, SLOT(slotMirrorAxisConfigChanged()), Qt::UniqueConnection);
92 m_imageView->canvasBase()->addDecoration(decoration);
93 } else {
94 connect(canvasDecoration.data(), SIGNAL(sigConfigChanged()), this, SLOT(slotMirrorAxisConfigChanged()), Qt::UniqueConnection);
95 }
96
98 }
99
100 updateAction();
101}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void documentMirrorStatusChanged(bool mirrorX, bool mirrorY)

References connect(), KisSharedPtr< T >::data(), decoration(), KoCanvasControllerProxyObject::documentMirrorStatusChanged(), m_imageView, m_mirrorCanvas, m_mirrorCanvasAroundCanvas, m_mirrorCanvasAroundCursor, setDecorationConfig(), slotDocumentConfigChanged(), slotMirrorAxisConfigChanged(), and updateAction().

◆ slotDocumentConfigChanged

void KisMirrorManager::slotDocumentConfigChanged ( )
privateslot

Definition at line 133 of file kis_mirror_manager.cpp.

134{
136}

References setDecorationConfig().

◆ slotMirrorAxisConfigChanged

void KisMirrorManager::slotMirrorAxisConfigChanged ( )
privateslot

Definition at line 138 of file kis_mirror_manager.cpp.

139{
140 if (m_imageView && m_imageView->document()) {
141 KisSignalsBlocker blocker(m_imageView->document());
142
143 KisMirrorAxisSP canvasDecoration = this->decoration();
144 if (canvasDecoration) {
145 m_imageView->document()->setMirrorAxisConfig(canvasDecoration->mirrorAxisConfig());
146 }
147 }
148}

References decoration(), and m_imageView.

◆ slotSyncActionStates

void KisMirrorManager::slotSyncActionStates ( bool val)
privateslot

Definition at line 103 of file kis_mirror_manager.cpp.

103 {
107
108 m_mirrorCanvas->setChecked(val);
109 m_mirrorCanvasAroundCursor->setChecked(val);
110 m_mirrorCanvasAroundCanvas->setChecked(val);
111}

References m_mirrorCanvas, m_mirrorCanvasAroundCanvas, and m_mirrorCanvasAroundCursor.

◆ updateAction

void KisMirrorManager::updateAction ( )
privateslot

Definition at line 113 of file kis_mirror_manager.cpp.

114{
115 if (m_imageView) {
116 m_mirrorCanvas->setEnabled(true);
117 m_mirrorCanvas->setChecked(m_imageView->canvasIsMirrored());
118 m_mirrorCanvasAroundCursor->setEnabled(true);
119 m_mirrorCanvasAroundCursor->setChecked(m_imageView->canvasIsMirrored());
120 m_mirrorCanvasAroundCanvas->setEnabled(true);
121 m_mirrorCanvasAroundCanvas->setChecked(m_imageView->canvasIsMirrored());
122 }
123 else {
124 m_mirrorCanvas->setEnabled(false);
125 m_mirrorCanvas->setChecked(false);
126 m_mirrorCanvasAroundCursor->setEnabled(false);
127 m_mirrorCanvasAroundCursor->setChecked(false);
128 m_mirrorCanvasAroundCanvas->setEnabled(false);
129 m_mirrorCanvasAroundCanvas->setChecked(false);
130 }
131}

References m_imageView, m_mirrorCanvas, m_mirrorCanvasAroundCanvas, and m_mirrorCanvasAroundCursor.

Member Data Documentation

◆ m_imageView

QPointer<KisView> KisMirrorManager::m_imageView
private

Definition at line 40 of file kis_mirror_manager.h.

◆ m_mirrorCanvas

QAction* KisMirrorManager::m_mirrorCanvas {nullptr}
private

Definition at line 41 of file kis_mirror_manager.h.

41{nullptr};

◆ m_mirrorCanvasAroundCanvas

QAction* KisMirrorManager::m_mirrorCanvasAroundCanvas {nullptr}
private

Definition at line 43 of file kis_mirror_manager.h.

43{nullptr};

◆ m_mirrorCanvasAroundCursor

QAction* KisMirrorManager::m_mirrorCanvasAroundCursor {nullptr}
private

Definition at line 42 of file kis_mirror_manager.h.

42{nullptr};

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