Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDecorationsManager.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
9
10#include "KisViewManager.h"
11#include "kis_action_manager.h"
12#include "kis_action.h"
13#include "kis_config_notifier.h"
14
15#include "kis_canvas2.h"
16#include <klocalizedstring.h>
17#include <kguiitem.h>
18#include <ktoggleaction.h>
19#include <kactioncollection.h>
20#include <KisDocument.h>
21
22
24 : QObject(view)
25 , m_imageView(0)
26{
27}
28
32
34{
35 m_toggleAssistant = actionManager->createAction("view_toggle_painting_assistants");
36 m_togglePreview = actionManager->createAction("view_toggle_assistant_previews");
37 m_toggleReferenceImages = actionManager->createAction("view_toggle_reference_images");
38
40}
41
43{
44
45 // set view is called twice when a document is open, so we need to disconnect the original signals
46 // if m_imageView has already been created. This prevents double signal events firing
47 if (m_imageView) {
48 m_toggleAssistant->disconnect();
49 m_togglePreview->disconnect();
50
52 assistantsDecoration()->disconnect(this);
53 }
55 referenceImagesDecoration()->disconnect(this);
56 }
57 }
58
59 m_imageView = imageView;
60
63 m_imageView->canvasBase()->addDecoration(deco);
64 }
65
68 m_imageView->canvasBase()->addDecoration(deco);
69 }
70
72 connect(m_toggleAssistant, SIGNAL(triggered()), assistantsDecoration(), SLOT(toggleAssistantVisible()));
73 connect(m_togglePreview, SIGNAL(triggered()), assistantsDecoration(), SLOT(toggleOutlineVisible()));
74 connect(assistantsDecoration(), SIGNAL(assistantChanged()), SLOT(updateAction()));
78 m_imageView->canvasBase(), QOverload<>::of(&KisCanvas2::updateCanvas));
79
82 }
83
85 connect(m_toggleReferenceImages, SIGNAL(triggered(bool)), referenceImagesDecoration(), SLOT(setVisible(bool)), Qt::UniqueConnection);
86 }
87
88
90}
91
93{
95 bool enabled = !assistantsDecoration()->assistants().isEmpty();
96 m_toggleAssistant->setChecked(assistantsDecoration()->assistantVisibility());
97 m_toggleAssistant->setEnabled(enabled);
98 m_togglePreview->setChecked(assistantsDecoration()->outlineVisibility());
99 m_togglePreview->setEnabled(enabled);
100 } else {
101 m_toggleAssistant->setEnabled(false);
102 }
103
105 m_toggleReferenceImages->setEnabled(referenceImagesDecoration()->documentHasReferenceImages());
106 m_toggleReferenceImages->setChecked(referenceImagesDecoration()->visible());
107 }
108}
109
111{
112 if (m_imageView) {
113 return m_imageView->canvasBase()->paintingAssistantsDecoration();
114 }
115 return 0;
116}
117
119{
120 if (m_imageView) {
121 return m_imageView->canvasBase()->referenceImagesDecoration();
122 }
123 return 0;
124}
125
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
A KisActionManager class keeps track of KisActions. These actions are always associated with the GUI....
KisAction * createAction(const QString &name)
void updateCanvas()
Update the entire canvas area.
static KisConfigNotifier * instance()
void configChanged(void)
KisReferenceImagesDecorationSP referenceImagesDecoration() const
void setView(QPointer< KisView > imageView)
QPointer< KisView > m_imageView
KisDecorationsManager(KisViewManager *view)
KisPaintingAssistantsDecorationSP assistantsDecoration() const
void setup(KisActionManager *actionManager)
void sigAssistantsChanged()
QList< KisPaintingAssistantSP > assistants() const
The KisReferenceImagesDecoration class draws the reference images on the canvas. The document stores ...