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;
56
64class KRITALAYERDOCKER_EXPORT LayerBox : public QDockWidget, public KisMainwindowObserver
65{
66
67 Q_OBJECT
68
69public:
70
71 LayerBox();
72 ~LayerBox() override;
73 QString observerName() override { return "LayerBox"; }
75 void setViewManager(KisViewManager* kisview) override;
76 void setCanvas(KoCanvasBase *canvas) override;
77 void unsetCanvas() override;
78
79protected:
80 void showEvent(QShowEvent *event) override;
81 void hideEvent(QHideEvent *event) override;
82
83private Q_SLOTS:
84
85 void notifyImageDeleted();
86
87 void slotContextMenuRequested(const QPoint &pos, const QModelIndex &index);
88
89 // From the node manager to the layerbox
90 void slotSetCompositeOp(const KoCompositeOp* compositeOp);
91 void slotSetOpacity(double opacity);
92 void slotUpdateOpacitySlider(quint8 value);
93 void updateUI();
94 void setCurrentNode(KisNodeSP node);
95 void slotModelReset();
96
97 // from the layerbox to the node manager
98 void slotRmClicked();
99 void slotRaiseClicked();
100 void slotLowerClicked();
101 void slotPropertiesClicked();
102 void slotChangeCloneSourceClicked();
103
104 void slotCompositeOpChanged(int index);
105 void slotOpacityChanged();
106 void slotOpacitySliderMoved(qreal opacity);
107
108 void slotCollapsed(const QModelIndex &index);
109 void slotExpanded(const QModelIndex &index);
110
111 void slotSelectOpaque();
112 void slotNodeCollapsedChanged();
113
114 void slotEditGlobalSelection(bool showSelections);
115 void slotRenameCurrentNode();
116
117 void slotAdjustCurrentBeforeRemoveRows(const QModelIndex &parent, int first, int last);
118 void selectionChanged(const QModelIndexList &selection);
119 void slotNodeManagerChangedSelection(const QList<KisNodeSP> &nodes);
120 void slotColorLabelChanged(int index);
121 void slotUpdateIcons();
122 void toggleActiveLayerSolo();
123 void updateLayerOpMenu(const QModelIndex &index, QMenu &menu);
124
125 void slotAddLayerBnClicked();
126 void slotLayerOpMenuOpened();
127 void slotLayerOpMenuClosed();
128
129 void updateAvailableLabels();
130 void updateLayerFiltering();
131
132 void slotUpdateThumbnailIconSize();
133 void slotSyncThumbnailIconSize();
134 void slotUpdateTreeIndentation();
135 void slotUpdateLayerInfoTextStyle();
136 void slotUpdateLayerInfoTextOpacity();
137 void slotUpdateUseInlineLayerInfoText();
138 void slotUpdateUseLayerSelectionCheckbox();
139
140 void slotImageTimeChanged(int time);
141 void slotForgetAboutSavedNodeBeforeEditSelectionMode();
142
143Q_SIGNALS:
145
146private:
147 inline void connectActionToButton(KisViewManager* view, QAbstractButton *button, const QString &id);
148 inline void addActionToMenu(QMenu *menu, const QString &id);
149 // reimp from KisNodeManager
150 qint32 convertOpacityToInt(qreal opacity);
151
152 KisNodeSP findNonHidableNode(KisNodeSP startNode);
153private:
154
156 QScopedPointer<KisSelectionActionsAdapter> m_selectionActionsAdapter;
165 Ui_WdgLayerBox* m_wdgLayerBox;
168
179
186 QCheckBox *layerSelectionCheckBox {nullptr};
187
191 QScopedPointer<KisScreenMigrationTracker> m_screenMigrationTracker;
192};
193
194class KRITALAYERDOCKER_EXPORT LayerBoxFactory : public KoDockFactoryBase
195{
196
197public:
199
200 QString id() const override {
201 return QString("KisLayerBox");
202 }
203
204 QDockWidget* createDockWidget() override {
205 LayerBox * dockWidget = new LayerBox();
206
207 dockWidget->setObjectName(id());
208
209 return dockWidget;
210 }
211
213 return DockRight;
214 }
215
216};
217
218#endif // KIS_LAYERBOX_H
219
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:204
QString id() const override
Definition LayerBox.h:200
DockPosition defaultDockPosition() const override
Definition LayerBox.h:212
QComboBox * infoTextCombobox
Definition LayerBox.h:183
KisNodeSP m_activeNode
Definition LayerBox.h:188
void imageChanged()
KisAction * m_changeCloneSourceAction
Definition LayerBox.h:171
KisSignalCompressor m_colorLabelCompressor
Definition LayerBox.h:174
KisLayerFilterWidget * layerFilterWidget
Definition LayerBox.h:180
KisNodeSP m_changedOpacityNode
Definition LayerBox.h:167
QSlider * thumbnailSizeSlider
Definition LayerBox.h:181
KisSignalCompressor m_thumbnailSizeCompressor
Definition LayerBox.h:175
QCheckBox * infoTextInlineChkbox
Definition LayerBox.h:185
int m_newOpacity
Definition LayerBox.h:166
KisAction * m_layerToggleSolo
Definition LayerBox.h:172
KisAction * m_propertiesAction
Definition LayerBox.h:170
QScopedPointer< KisScreenMigrationTracker > m_screenMigrationTracker
Definition LayerBox.h:191
QSlider * indentationSlider
Definition LayerBox.h:182
QString observerName() override
Definition LayerBox.h:73
KisImageWSP m_image
Definition LayerBox.h:159
KisSignalAutoConnectionsStore m_activeNodeConnections
Definition LayerBox.h:190
KisSignalCompressor m_infoTextOpacityCompressor
Definition LayerBox.h:177
KisAction * m_showGlobalSelectionMask
Definition LayerBox.h:173
KisSignalCompressor m_nodeOpacityCompressor
Definition LayerBox.h:178
QPointer< KisNodeManager > m_nodeManager
Definition LayerBox.h:162
QScopedPointer< KisSelectionActionsAdapter > m_selectionActionsAdapter
Definition LayerBox.h:156
KisSliderSpinBox * infoTextOpacitySlider
Definition LayerBox.h:184
Ui_WdgLayerBox * m_wdgLayerBox
Definition LayerBox.h:165
QMenu * m_newLayerMenu
Definition LayerBox.h:157
QPointer< KisNodeFilterProxyModel > m_filteringModel
Definition LayerBox.h:161
QPointer< QWidgetAction > m_colorSelectorAction
Definition LayerBox.h:164
QPointer< KisColorLabelSelectorWidgetMenuWrapper > m_colorSelector
Definition LayerBox.h:163
KisAction * m_removeAction
Definition LayerBox.h:169
QMenu * m_opLayerMenu
Definition LayerBox.h:158
QPointer< KisNodeModel > m_nodeModel
Definition LayerBox.h:160
KisNodeWSP m_savedNodeBeforeEditSelectionMode
Definition LayerBox.h:189
QPointer< KisCanvas2 > m_canvas
Definition LayerBox.h:155
KisSignalCompressor m_treeIndentationCompressor
Definition LayerBox.h:176
QString button(const QWheelEvent &ev)