Changeset View
Changeset View
Standalone View
Standalone View
libs/ui/kis_mirror_manager.cpp
Show All 24 Lines | |||||
25 | #include <klocalizedstring.h> | 25 | #include <klocalizedstring.h> | ||
26 | #include <kguiitem.h> | 26 | #include <kguiitem.h> | ||
27 | #include <ktoggleaction.h> | 27 | #include <ktoggleaction.h> | ||
28 | #include <kactioncollection.h> | 28 | #include <kactioncollection.h> | ||
29 | #include <QAction> | 29 | #include <QAction> | ||
30 | 30 | | |||
31 | #include "kis_canvas2.h" | 31 | #include "kis_canvas2.h" | ||
32 | #include "kis_mirror_axis.h" | 32 | #include "kis_mirror_axis.h" | ||
33 | #include <KisMirrorAxisConfig.h> | ||||
34 | #include <KisDocument.h> | ||||
35 | #include <kis_signals_blocker.h> | ||||
36 | | ||||
37 | class KisMirrorManager::Private | ||||
38 | { | ||||
39 | public: | ||||
40 | Private() | ||||
41 | : mirrorAxisDecoration(nullptr) | ||||
42 | {} | ||||
43 | | ||||
44 | KisMirrorAxis* mirrorAxisDecoration; | ||||
45 | // KisMirrorAxisConfig mirrorAxisConfig() {} | ||||
46 | }; | ||||
33 | 47 | | |||
34 | KisMirrorManager::KisMirrorManager(KisViewManager* view) : QObject(view) | 48 | KisMirrorManager::KisMirrorManager(KisViewManager* view) : QObject(view) | ||
49 | , d(new Private()) | ||||
35 | , m_imageView(0) | 50 | , m_imageView(0) | ||
36 | { | 51 | { | ||
37 | } | 52 | } | ||
38 | 53 | | |||
39 | KisMirrorManager::~KisMirrorManager() | 54 | KisMirrorManager::~KisMirrorManager() | ||
40 | { | 55 | { | ||
41 | } | 56 | } | ||
42 | 57 | | |||
Show All 12 Lines | |||||
55 | void KisMirrorManager::setView(QPointer<KisView> imageView) | 70 | void KisMirrorManager::setView(QPointer<KisView> imageView) | ||
56 | { | 71 | { | ||
57 | if (m_imageView) { | 72 | if (m_imageView) { | ||
58 | m_mirrorCanvas->disconnect(); | 73 | m_mirrorCanvas->disconnect(); | ||
59 | } | 74 | } | ||
60 | m_imageView = imageView; | 75 | m_imageView = imageView; | ||
61 | if (m_imageView) { | 76 | if (m_imageView) { | ||
62 | connect(m_mirrorCanvas, SIGNAL(toggled(bool)), dynamic_cast<KisCanvasController*>(m_imageView->canvasController()), SLOT(mirrorCanvas(bool))); | 77 | connect(m_mirrorCanvas, SIGNAL(toggled(bool)), dynamic_cast<KisCanvasController*>(m_imageView->canvasController()), SLOT(mirrorCanvas(bool))); | ||
78 | connect(m_imageView->document(), SIGNAL(sigMirrorAxisConfigChanged()), this, SLOT(slotDocumentConfigChanged()), Qt::UniqueConnection); | ||||
63 | 79 | | |||
64 | if (!hasDecoration()) { | 80 | if (!hasDecoration()) { | ||
65 | m_imageView->canvasBase()->addDecoration(new KisMirrorAxis(m_imageView->viewManager()->resourceProvider(), m_imageView)); | 81 | d->mirrorAxisDecoration = new KisMirrorAxis(m_imageView->viewManager()->resourceProvider(), m_imageView); | ||
82 | connect(d->mirrorAxisDecoration, SIGNAL(sigConfigChanged()), this, SLOT(slotMirrorAxisConfigChanged()), Qt::UniqueConnection); | ||||
83 | m_imageView->canvasBase()->addDecoration(d->mirrorAxisDecoration); | ||||
66 | } | 84 | } | ||
85 | | ||||
86 | d->mirrorAxisDecoration->setMirrorAxisConfig(mirrorAxisConfig()); | ||||
67 | } | 87 | } | ||
68 | updateAction(); | 88 | updateAction(); | ||
69 | } | 89 | } | ||
70 | 90 | | |||
71 | void KisMirrorManager::updateAction() | 91 | void KisMirrorManager::updateAction() | ||
72 | { | 92 | { | ||
73 | if (m_imageView) { | 93 | if (m_imageView) { | ||
74 | m_mirrorCanvas->setEnabled(true); | 94 | m_mirrorCanvas->setEnabled(true); | ||
75 | m_mirrorCanvas->setChecked(m_imageView->canvasIsMirrored()); | 95 | m_mirrorCanvas->setChecked(m_imageView->canvasIsMirrored()); | ||
76 | } | 96 | } | ||
77 | else { | 97 | else { | ||
78 | m_mirrorCanvas->setEnabled(false); | 98 | m_mirrorCanvas->setEnabled(false); | ||
79 | m_mirrorCanvas->setChecked(false); | 99 | m_mirrorCanvas->setChecked(false); | ||
80 | } | 100 | } | ||
81 | } | 101 | } | ||
82 | 102 | | |||
103 | void KisMirrorManager::slotDocumentConfigChanged() | ||||
104 | { | ||||
105 | d->mirrorAxisDecoration->setMirrorAxisConfig(mirrorAxisConfig()); | ||||
106 | } | ||||
107 | | ||||
108 | void KisMirrorManager::slotMirrorAxisConfigChanged() | ||||
109 | { | ||||
110 | if (m_imageView) { | ||||
111 | KisSignalsBlocker blocker(m_imageView->document()); | ||||
112 | m_imageView->document()->setMirrorAxisConfig(d->mirrorAxisDecoration->mirrorAxisConfig()); | ||||
113 | } | ||||
114 | } | ||||
115 | | ||||
83 | KisMirrorAxis* KisMirrorManager::hasDecoration() { | 116 | KisMirrorAxis* KisMirrorManager::hasDecoration() { | ||
84 | 117 | | |||
85 | if (m_imageView && m_imageView->canvasBase() && m_imageView->canvasBase()->decoration("mirror_axis")) { | 118 | if (m_imageView && m_imageView->canvasBase() && m_imageView->canvasBase()->decoration("mirror_axis")) { | ||
86 | return dynamic_cast<KisMirrorAxis*>(m_imageView->canvasBase()->decoration("mirror_axis").data()); | 119 | return dynamic_cast<KisMirrorAxis*>(m_imageView->canvasBase()->decoration("mirror_axis").data()); | ||
87 | } | 120 | } | ||
88 | return 0; | 121 | return 0; | ||
89 | } | 122 | } | ||
123 | | ||||
124 | const KisMirrorAxisConfig& KisMirrorManager::mirrorAxisConfig() const | ||||
125 | { | ||||
126 | return m_imageView->document()->mirrorAxisConfig(); | ||||
127 | } |