Krita Source Code Documentation
Loading...
Searching...
No Matches
LayerGroupSwitcher Class Reference

#include <layergroupswitcher.h>

+ Inheritance diagram for LayerGroupSwitcher:

Public Member Functions

 LayerGroupSwitcher (QObject *parent, const QVariantList &)
 
 ~LayerGroupSwitcher () override
 
- Public Member Functions inherited from KisActionPlugin
 KisActionPlugin (QObject *parent=0)
 
 ~KisActionPlugin () override
 

Private Slots

void moveIntoNextGroup ()
 
void moveIntoPreviousGroup ()
 

Additional Inherited Members

- Protected Member Functions inherited from KisActionPlugin
void addAction (const QString &name, KisAction *action)
 
void addOperation (KisOperation *operation)
 
void addUIFactory (KisOperationUIFactory *factory)
 
KisActioncreateAction (const QString &name)
 
QPointer< KisViewManagerviewManager () const
 

Detailed Description

Definition at line 15 of file layergroupswitcher.h.

Constructor & Destructor Documentation

◆ LayerGroupSwitcher()

LayerGroupSwitcher::LayerGroupSwitcher ( QObject * parent,
const QVariantList &  )

Definition at line 28 of file layergroupswitcher.cpp.

29 : KisActionPlugin(parent)
30{
31 KisAction *action = new KisAction(i18n("Move into previous group"), this);
32 addAction("LayerGroupSwitcher/previous", action);
33 connect(action, SIGNAL(triggered()), this, SLOT(moveIntoPreviousGroup()));
34
35 action = new KisAction(i18n("Move into next group"), this);
36 addAction("LayerGroupSwitcher/next", action);
37 connect(action, SIGNAL(triggered()), this, SLOT(moveIntoNextGroup()));
38}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void addAction(const QString &name, KisAction *action)
KisActionPlugin(QObject *parent=0)

References connect().

◆ ~LayerGroupSwitcher()

LayerGroupSwitcher::~LayerGroupSwitcher ( )
override

Definition at line 40 of file layergroupswitcher.cpp.

41{
42}

Member Function Documentation

◆ moveIntoNextGroup

void LayerGroupSwitcher::moveIntoNextGroup ( )
privateslot

Definition at line 44 of file layergroupswitcher.cpp.

45{
46 KisImageSP image = viewManager()->image().toStrongRef();
47 if (!image) {
48 return;
49 }
50 KisNodeManager *nodeManager = viewManager()->nodeManager();
51 KisLayerSP active = nodeManager->activeLayer();
52 if (!active) {
53 return;
54 }
55 if (active->parentLayer().data() == image->rootLayer().data()) {
56 active->setVisible(false);
57 nodeManager->activateNextNode();
58 active = nodeManager->activeLayer();
59 if (active) {
60 active->setVisible(true);
61 }
62 }
63 else if (active->parent()) {
64 KisNodeSP parent = active->parent();
65 if (parent) {
66 int indexInGroup = active->parent()->index(active);
67 nodeManager->slotNonUiActivatedNode(parent);
68 parent->setVisible(false);
69 nodeManager->activateNextNode();
70 active = nodeManager->activeLayer();
71 if (active) {
72 active->setVisible(true);
73 }
74 KisNodeSP child = active->at(indexInGroup);
75 if (child) {
76 nodeManager->slotNonUiActivatedNode(child);
77 child->setVisible(true);
78 }
79 }
80 }
81 image->refreshGraphAsync();
82
83}
QPointer< KisViewManager > viewManager() const
void refreshGraphAsync(KisNodeSP root, const QVector< QRect > &rects, const QRect &cropRect, KisProjectionUpdateFlags flags=KisProjectionUpdateFlag::None) override
KisGroupLayerSP rootLayer() const
void activateNextNode(bool siblingsOnly=false)
KisLayerSP activeLayer()
void slotNonUiActivatedNode(KisNodeSP node)
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327
virtual void setVisible(bool visible, bool loading=false)
KisLayerSP parentLayer() const
int index(const KisNodeSP node) const
Definition kis_node.cpp:432
KisNodeWSP parent
Definition kis_node.cpp:86
KisNodeSP at(quint32 index) const
Definition kis_node.cpp:421

References KisNodeManager::activateNextNode(), KisNodeManager::activeLayer(), KisNode::at(), KisSharedPtr< T >::data(), KisNode::index(), KisNode::parent, KisLayer::parentLayer(), KisImage::refreshGraphAsync(), KisImage::rootLayer(), KisBaseNode::setVisible(), KisNodeManager::slotNonUiActivatedNode(), and KisActionPlugin::viewManager().

◆ moveIntoPreviousGroup

void LayerGroupSwitcher::moveIntoPreviousGroup ( )
privateslot

Definition at line 85 of file layergroupswitcher.cpp.

86{
87 KisImageSP image = viewManager()->image().toStrongRef();
88 if (!image) {
89 return;
90 }
91 KisNodeManager *nodeManager = viewManager()->nodeManager();
92 KisLayerSP active = nodeManager->activeLayer();
93 if (!active) {
94 return;
95 }
96 if (active->parentLayer().data() == image->rootLayer().data()) {
97 active->setVisible(false);
98 nodeManager->activatePreviousNode();
99 active = nodeManager->activeLayer();
100 if (active) {
101 active->setVisible(true);
102 }
103 }
104 else if (active->parent()) {
105 KisNodeSP parent = active->parent();
106 if (parent) {
107 int indexInGroup = active->parent()->index(active);
108 nodeManager->slotNonUiActivatedNode(parent);
109 parent->setVisible(false);
110 nodeManager->activatePreviousNode();
111 active = nodeManager->activeLayer();
112 if (active) {
113 active->setVisible(true);
114 }
115 KisNodeSP child = active->at(indexInGroup);
116 if (child) {
117 nodeManager->slotNonUiActivatedNode(child);
118 child->setVisible(true);
119 }
120 }
121 }
122 image->refreshGraphAsync();
123}
void activatePreviousNode(bool siblingsOnly=false)

References KisNodeManager::activatePreviousNode(), KisNodeManager::activeLayer(), KisNode::at(), KisSharedPtr< T >::data(), KisNode::index(), KisNode::parent, KisLayer::parentLayer(), KisImage::refreshGraphAsync(), KisImage::rootLayer(), KisBaseNode::setVisible(), KisNodeManager::slotNonUiActivatedNode(), and KisActionPlugin::viewManager().


The documentation for this class was generated from the following files: