Krita Source Code Documentation
Loading...
Searching...
No Matches
LayerBox.h
Go to the documentation of this file.
1/*
2 * LayerBox.h - part of Krita aka Krayon aka KimageShop
3 *
4 * SPDX-FileCopyrightText: 2002 Patrick Julien <freak@codepimps.org>
5 * SPDX-FileCopyrightText: 2006 Gábor Lehel <illissius@gmail.com>
6 * SPDX-FileCopyrightText: 2007 Thomas Zander <zander@kde.org>
7 * SPDX-FileCopyrightText: 2007-2009 Boudewijn Rempt <boud@valdyas.org>
8 *
9 * SPDX-License-Identifier: GPL-2.0-or-later
10 */
11#ifndef KIS_LAYERBOX_H
12#define KIS_LAYERBOX_H
13
14#include <QList>
15#include <QDockWidget>
16#include <QPointer>
17
18#include <kis_debug.h>
19
20#include <KoColorSpace.h>
21#include <KoDockFactoryBase.h>
22
23#include <kis_types.h>
24
25#include "kis_action.h"
26#include "KisViewManager.h"
31#include <QSlider>
32#include <QCheckBox>
33#include <kis_slider_spin_box.h>
34#include <QComboBox>
35#include <kis_idle_watcher.h>
36
37#include "kritalayerdocker_export.h"
38
39class QModelIndex;
40
42
43class QMenu;
44class QAbstractButton;
45class KoCompositeOp;
46class KisCanvas2;
47class KisNodeModel;
49class Ui_WdgLayerBox;
52class QWidgetAction;
55
63class KRITALAYERDOCKER_EXPORT LayerBox : public QDockWidget, public KisMainwindowObserver
64{
65
66 Q_OBJECT
67
68public:
69
70 LayerBox();
71 ~LayerBox() override;
72 QString observerName() override { return "LayerBox"; }
74 void setViewManager(KisViewManager* kisview) override;
75 void setCanvas(KoCanvasBase *canvas) override;
76 void unsetCanvas() override;
77
78protected:
79 void showEvent(QShowEvent *event) override;
80 void hideEvent(QHideEvent *event) override;
81
82private Q_SLOTS:
83
84 void notifyImageDeleted();
85
86 void slotContextMenuRequested(const QPoint &pos, const QModelIndex &index);
87
88 // From the node manager to the layerbox
89 void slotSetCompositeOp(const KoCompositeOp* compositeOp);
90 void slotSetOpacity(double opacity);
91 void slotUpdateOpacitySlider(quint8 value);
92 void updateUI();
93 void setCurrentNode(KisNodeSP node);
94 void slotModelReset();
95
96 // from the layerbox to the node manager
97 void slotRmClicked();
98 void slotRaiseClicked();
99 void slotLowerClicked();
100 void slotPropertiesClicked();
101 void slotChangeCloneSourceClicked();
102
103 void slotCompositeOpChanged(int index);
104 void slotOpacityChanged();
105 void slotOpacitySliderMoved(qreal opacity);
106
107 void slotCollapsed(const QModelIndex &index);
108 void slotExpanded(const QModelIndex &index);
109
110 void slotSelectOpaque();
111 void slotNodeCollapsedChanged();
112
113 void slotEditGlobalSelection(bool showSelections);
114 void slotRenameCurrentNode();
115
116 void slotAdjustCurrentBeforeRemoveRows(const QModelIndex &parent, int first, int last);
117 void selectionChanged(const QModelIndexList &selection);
118 void slotNodeManagerChangedSelection(const QList<KisNodeSP> &nodes);
119 void slotColorLabelChanged(int index);
120 void slotUpdateIcons();
121 void toggleActiveLayerSolo();
122 void updateLayerOpMenu(const QModelIndex &index, QMenu &menu);
123
124 void slotAddLayerBnClicked();
125 void slotLayerOpMenuOpened();
126 void slotLayerOpMenuClosed();
127
128 void updateAvailableLabels();
129 void updateLayerFiltering();
130
131 void slotUpdateThumbnailIconSize();
132 void slotUpdateTreeIndentation();
133 void slotUpdateLayerInfoTextStyle();
134 void slotUpdateLayerInfoTextOpacity();
135 void slotUpdateUseInlineLayerInfoText();
136 void slotUpdateUseLayerSelectionCheckbox();
137
138 void slotImageTimeChanged(int time);
139 void slotForgetAboutSavedNodeBeforeEditSelectionMode();
140
141Q_SIGNALS:
143
144private:
145 inline void connectActionToButton(KisViewManager* view, QAbstractButton *button, const QString &id);
146 inline void addActionToMenu(QMenu *menu, const QString &id);
147 // reimp from KisNodeManager
148 qint32 convertOpacityToInt(qreal opacity);
149
150 KisNodeSP findNonHidableNode(KisNodeSP startNode);
151private:
152
154 QScopedPointer<KisSelectionActionsAdapter> m_selectionActionsAdapter;
163 Ui_WdgLayerBox* m_wdgLayerBox;
166
177
184 QCheckBox *layerSelectionCheckBox {nullptr};
185
189};
190
191class KRITALAYERDOCKER_EXPORT LayerBoxFactory : public KoDockFactoryBase
192{
193
194public:
196
197 QString id() const override {
198 return QString("KisLayerBox");
199 }
200
201 QDockWidget* createDockWidget() override {
202 LayerBox * dockWidget = new LayerBox();
203
204 dockWidget->setObjectName(id());
205
206 return dockWidget;
207 }
208
210 return DockRight;
211 }
212
213};
214
215#endif // KIS_LAYERBOX_H
216
float value(const T *src, size_t ch)
QList< QModelIndex > QModelIndexList
Definition LayerBox.h:41
KisKeyframeChannel stores and manages KisKeyframes. Maps units of time to virtual keyframe values....
The KisMainwindowObserver class is an interface for dock widgets that want to keep track of the main ...
virtual void setViewManager(KisViewManager *kisview)=0
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
virtual void unsetCanvas()=0
virtual void setCanvas(KoCanvasBase *canvas)=0
QDockWidget * createDockWidget() override
Definition LayerBox.h:201
QString id() const override
Definition LayerBox.h:197
DockPosition defaultDockPosition() const override
Definition LayerBox.h:209
QComboBox * infoTextCombobox
Definition LayerBox.h:181
KisNodeSP m_activeNode
Definition LayerBox.h:186
void imageChanged()
KisAction * m_changeCloneSourceAction
Definition LayerBox.h:169
KisSignalCompressor m_colorLabelCompressor
Definition LayerBox.h:172
KisLayerFilterWidget * layerFilterWidget
Definition LayerBox.h:178
KisNodeSP m_changedOpacityNode
Definition LayerBox.h:165
QSlider * thumbnailSizeSlider
Definition LayerBox.h:179
KisSignalCompressor m_thumbnailSizeCompressor
Definition LayerBox.h:173
QCheckBox * infoTextInlineChkbox
Definition LayerBox.h:183
int m_newOpacity
Definition LayerBox.h:164
KisAction * m_layerToggleSolo
Definition LayerBox.h:170
KisAction * m_propertiesAction
Definition LayerBox.h:168
QSlider * indentationSlider
Definition LayerBox.h:180
QString observerName() override
Definition LayerBox.h:72
KisImageWSP m_image
Definition LayerBox.h:157
KisSignalAutoConnectionsStore m_activeNodeConnections
Definition LayerBox.h:188
KisSignalCompressor m_infoTextOpacityCompressor
Definition LayerBox.h:175
KisAction * m_showGlobalSelectionMask
Definition LayerBox.h:171
KisSignalCompressor m_nodeOpacityCompressor
Definition LayerBox.h:176
QPointer< KisNodeManager > m_nodeManager
Definition LayerBox.h:160
QScopedPointer< KisSelectionActionsAdapter > m_selectionActionsAdapter
Definition LayerBox.h:154
KisSliderSpinBox * infoTextOpacitySlider
Definition LayerBox.h:182
Ui_WdgLayerBox * m_wdgLayerBox
Definition LayerBox.h:163
QMenu * m_newLayerMenu
Definition LayerBox.h:155
QPointer< KisNodeFilterProxyModel > m_filteringModel
Definition LayerBox.h:159
QPointer< QWidgetAction > m_colorSelectorAction
Definition LayerBox.h:162
QPointer< KisColorLabelSelectorWidgetMenuWrapper > m_colorSelector
Definition LayerBox.h:161
KisAction * m_removeAction
Definition LayerBox.h:167
QMenu * m_opLayerMenu
Definition LayerBox.h:156
QPointer< KisNodeModel > m_nodeModel
Definition LayerBox.h:158
KisNodeWSP m_savedNodeBeforeEditSelectionMode
Definition LayerBox.h:187
QPointer< KisCanvas2 > m_canvas
Definition LayerBox.h:153
KisSignalCompressor m_treeIndentationCompressor
Definition LayerBox.h:174
QString button(const QWheelEvent &ev)