Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_mirror_manager.cpp
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2009 Cyrille Berger <cberger@cberger.net>
3
* SPDX-FileCopyrightText: 2014 Sven Langkamp <sven.langkamp@gmail.com>
4
*
5
* SPDX-License-Identifier: GPL-2.0-or-later
6
*/
7
8
#include "
kis_mirror_manager.h
"
9
#include "
KisViewManager.h
"
10
#include <
kis_canvas_controller.h
>
11
#include <
kis_icon.h
>
12
13
#include <klocalizedstring.h>
14
#include <kguiitem.h>
15
#include <ktoggleaction.h>
16
#include <
kactioncollection.h
>
17
#include <QAction>
18
19
#include "
kis_canvas2.h
"
20
#include "
kis_mirror_axis.h
"
21
#include <
KisMirrorAxisConfig.h
>
22
#include <
KisDocument.h
>
23
#include <
kis_signals_blocker.h
>
24
#include <
kis_types.h
>
25
26
KisMirrorManager::KisMirrorManager
(
KisViewManager
* view) : QObject(view)
27
, m_imageView(0)
28
{
29
}
30
31
KisMirrorManager::~KisMirrorManager
()
32
{
33
}
34
35
void
KisMirrorManager::setup
(
KisKActionCollection
* collection)
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
);
50
m_mirrorCanvasAroundCanvas
->setIcon(
KisIconUtils::loadIcon
(
"mirror-view"
));
51
collection->
addAction
(
"mirror_canvas_around_canvas"
,
m_mirrorCanvasAroundCanvas
);
52
53
updateAction
();
54
}
55
56
void
KisMirrorManager::setView
(
QPointer<KisView>
imageView)
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,
79
&
KoCanvasControllerProxyObject::documentMirrorStatusChanged
,
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
97
setDecorationConfig
();
98
}
99
100
updateAction
();
101
}
102
103
void
KisMirrorManager::slotSyncActionStates
(
bool
val) {
104
KisSignalsBlocker
blocker(
m_mirrorCanvas
);
105
KisSignalsBlocker
blocker2(
m_mirrorCanvasAroundCursor
);
106
KisSignalsBlocker
blocker3(
m_mirrorCanvasAroundCanvas
);
107
108
m_mirrorCanvas
->setChecked(val);
109
m_mirrorCanvasAroundCursor
->setChecked(val);
110
m_mirrorCanvasAroundCanvas
->setChecked(val);
111
}
112
113
void
KisMirrorManager::updateAction
()
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
}
132
133
void
KisMirrorManager::slotDocumentConfigChanged
()
134
{
135
setDecorationConfig
();
136
}
137
138
void
KisMirrorManager::slotMirrorAxisConfigChanged
()
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
}
149
150
KisMirrorAxisSP
KisMirrorManager::decoration
()
const
151
{
152
if
(
m_imageView
) {
153
return
qobject_cast<KisMirrorAxis*>(
m_imageView
->canvasBase()->decoration(
"mirror_axis"
).data());
154
}
else
{
155
return
0;
156
}
157
}
158
159
void
KisMirrorManager::setDecorationConfig
()
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
}
KisDocument.h
KisMirrorAxisConfig.h
KisViewManager.h
connect
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisCanvasController
Definition
kis_canvas_controller.h:24
KisKActionCollection
A container for a set of QAction objects.
Definition
kactioncollection.h:44
KisKActionCollection::setDefaultShortcut
void setDefaultShortcut(QAction *action, const QKeySequence &shortcut)
Definition
kactioncollection.cpp:391
KisKActionCollection::addAction
Q_INVOKABLE QAction * addAction(const QString &name, QAction *action)
Definition
kactioncollection.cpp:247
KisMirrorAxisConfig
The KisMirrorAxisConfig class stores configuration for the KisMirrorAxis canvas decoration....
Definition
KisMirrorAxisConfig.cpp:14
KisMirrorAxis
Definition
kis_mirror_axis.h:20
KisMirrorManager::m_mirrorCanvas
QAction * m_mirrorCanvas
Definition
kis_mirror_manager.h:41
KisMirrorManager::slotMirrorAxisConfigChanged
void slotMirrorAxisConfigChanged()
Definition
kis_mirror_manager.cpp:138
KisMirrorManager::setView
void setView(QPointer< KisView > imageView)
Definition
kis_mirror_manager.cpp:56
KisMirrorManager::updateAction
void updateAction()
Definition
kis_mirror_manager.cpp:113
KisMirrorManager::decoration
KisMirrorAxisSP decoration() const
Definition
kis_mirror_manager.cpp:150
KisMirrorManager::m_imageView
QPointer< KisView > m_imageView
Definition
kis_mirror_manager.h:40
KisMirrorManager::slotDocumentConfigChanged
void slotDocumentConfigChanged()
Definition
kis_mirror_manager.cpp:133
KisMirrorManager::setDecorationConfig
void setDecorationConfig()
Definition
kis_mirror_manager.cpp:159
KisMirrorManager::m_mirrorCanvasAroundCursor
QAction * m_mirrorCanvasAroundCursor
Definition
kis_mirror_manager.h:42
KisMirrorManager::m_mirrorCanvasAroundCanvas
QAction * m_mirrorCanvasAroundCanvas
Definition
kis_mirror_manager.h:43
KisMirrorManager::setup
void setup(KisKActionCollection *collection)
Definition
kis_mirror_manager.cpp:35
KisMirrorManager::~KisMirrorManager
~KisMirrorManager() override
Definition
kis_mirror_manager.cpp:31
KisMirrorManager::KisMirrorManager
KisMirrorManager(KisViewManager *view)
Definition
kis_mirror_manager.cpp:26
KisMirrorManager::slotSyncActionStates
void slotSyncActionStates(bool val)
Definition
kis_mirror_manager.cpp:103
KisSharedPtr
Definition
kis_shared_ptr.h:57
KisSharedPtr::data
T * data()
Definition
kis_shared_ptr.h:139
KisSignalsBlocker
Definition
kis_signals_blocker.h:29
KisViewManager
Definition
KisViewManager.h:52
KoCanvasControllerProxyObject::documentMirrorStatusChanged
void documentMirrorStatusChanged(bool mirrorX, bool mirrorY)
QPointer
Definition
kis_types.h:255
kactioncollection.h
kis_canvas2.h
kis_canvas_controller.h
kis_icon.h
kis_mirror_axis.h
kis_mirror_manager.h
kis_signals_blocker.h
kis_types.h
KisIconUtils::loadIcon
QIcon loadIcon(const QString &name)
Definition
kis_icon_utils.cpp:29
libs
ui
kis_mirror_manager.cpp
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52