|
Krita Source Code Documentation
|
#include <kis_dummies_facade_base.h>
Inheritance diagram for KisDummiesFacadeBase:Classes | |
| struct | Private |
Signals | |
| void | sigActivateNode (KisNodeSP node) |
| void | sigBeginInsertDummy (KisNodeDummy *parent, int index, const QString &metaObjectType) |
| void | sigBeginRemoveDummy (KisNodeDummy *dummy) |
| void | sigDummyChanged (KisNodeDummy *dummy) |
| void | sigEndInsertDummy (KisNodeDummy *dummy) |
| void | sigEndRemoveDummy () |
Public Member Functions | |
| virtual int | dummiesCount () const =0 |
| virtual KisNodeDummy * | dummyForNode (KisNodeSP node) const =0 |
| virtual bool | hasDummyForNode (KisNodeSP node) const =0 |
| KisDummiesFacadeBase (QObject *parent=0) | |
| KisNodeSP | lastActivatedNode () const |
| virtual KisNodeDummy * | rootDummy () const =0 |
| void | setImage (KisImageWSP image) |
| virtual void | setImage (KisImageWSP image, KisNodeSP activeNode) |
| ~KisDummiesFacadeBase () override | |
Protected Member Functions | |
| virtual void | addNodeImpl (KisNodeSP node, KisNodeSP parent, KisNodeSP aboveThis)=0 |
| KisImageWSP | image () const |
| virtual void | removeNodeImpl (KisNodeSP node)=0 |
Private Slots | |
| void | slotContinueAddNode (KisNodeSP node, KisNodeSP parent, KisNodeSP aboveThis) |
| void | slotContinueRemoveNode (KisNodeSP node) |
| void | slotLayersChanged () |
| void | slotNodeActivationRequested (KisNodeSP node, KisNodeAdditionFlags flags) |
| void | slotNodeAdded (KisNodeSP node, KisNodeAdditionFlags flags) |
| void | slotNodeChanged (KisNodeSP node) |
| void | slotRemoveNode (KisNodeSP node) |
Static Private Member Functions | |
| static KisNodeSP | findFirstLayer (KisNodeSP root) |
Private Attributes | |
| Private *const | m_d |
Keeps track of the node stack and manages local (UI-wide) representation of the node stack. It uses KisNodeDummy objects to represent the stack. This is done to break synchronization tie between UI and Image threads, caused by the fact that KisNodeModel must be synchronously notified when a node is removed/deleted.
Definition at line 26 of file kis_dummies_facade_base.h.
| KisDummiesFacadeBase::KisDummiesFacadeBase | ( | QObject * | parent = 0 | ) |
Definition at line 45 of file kis_dummies_facade_base.cpp.
References KisDummiesFacadeBase::Private::activateNodeConnection, KisDummiesFacadeBase::Private::addNodeConnection, m_d, KisDummiesFacadeBase::Private::nodeChangedConnection, KisDummiesFacadeBase::Private::removeNodeConnection, slotContinueAddNode(), slotContinueRemoveNode(), slotNodeActivationRequested(), and slotNodeChanged().
|
override |
|
protectedpure virtual |
Implemented in KisDummiesFacade, and KisShapeController.
|
pure virtual |
Implemented in KisDummiesFacade, and KisShapeController.
|
pure virtual |
Implemented in KisShapeController, and KisDummiesFacade.
Definition at line 123 of file kis_dummies_facade_base.cpp.
References KisNode::firstChild(), and KisNode::nextSibling().
|
pure virtual |
Implemented in KisDummiesFacade, and KisShapeController.
|
protected |
Definition at line 118 of file kis_dummies_facade_base.cpp.
References KisDummiesFacadeBase::Private::image, and m_d.
| KisNodeSP KisDummiesFacadeBase::lastActivatedNode | ( | ) | const |
Sometimes (e.g. on setImage() call) sigActivateNode() signal may be emitted while the dummies facade is not yet connected to the node managed. In this case, the activation signal would be lost. Hence we should provide the last emitted value, so that node manager could cold-initialize the current node value on connection.
Definition at line 113 of file kis_dummies_facade_base.cpp.
References KisDummiesFacadeBase::Private::lastActivatedNode, and m_d.
Implemented in KisDummiesFacade, and KisShapeController.
|
pure virtual |
Return the root dummy of the graph. Since the call to setImage() causes an asynchronous update of the dummies graph, it may cause rootDummy() to be null at some moments, which is a valid state.
Implemented in KisDummiesFacade, and KisShapeController.
| void KisDummiesFacadeBase::setImage | ( | KisImageWSP | image | ) |
Definition at line 60 of file kis_dummies_facade_base.cpp.
References image(), and setImage().
|
virtual |
Reimplemented in KisShapeController, and KisShapeController.
Definition at line 65 of file kis_dummies_facade_base.cpp.
References KisDummiesFacadeBase::Private::activateNodeConnection, connect(), findFirstLayer(), KisDummiesFacadeBase::Private::image, image(), KisDummiesFacadeBase::Private::lastActivatedNode, m_d, KisDummiesFacadeBase::Private::nodeChangedConnection, None, KisDummiesFacadeBase::Private::pendingNodeSet, KisDummiesFacadeBase::Private::pendingNodeSetLock, KisDummiesFacadeBase::Private::removeNodeConnection, KisNodeFacade::root, sigActivateNode(), KisImage::sigNodeAddedAsync(), KisImage::sigNodeChanged(), slotLayersChanged(), slotNodeAdded(), and slotRemoveNode().
This signal is emitted when the shape controller wants to request the change of an active layer. E.g. when a new layer is added or when the root layer of the image is changed. It should be forwarded through a signal to allow queueing and synchronization of threads.
|
signal |
The signals for controlling the node model
|
signal |
|
signal |
|
signal |
|
signal |
|
privateslot |
Definition at line 205 of file kis_dummies_facade_base.cpp.
References addNodeImpl(), dummyForNode(), KisNodeDummy::indexOf(), sigBeginInsertDummy(), and sigEndInsertDummy().
Definition at line 219 of file kis_dummies_facade_base.cpp.
References dummyForNode(), removeNodeImpl(), sigBeginRemoveDummy(), and sigEndRemoveDummy().
|
privateslot |
Definition at line 147 of file kis_dummies_facade_base.cpp.
References KisDummiesFacadeBase::Private::image, m_d, and setImage().
|
privateslot |
Definition at line 152 of file kis_dummies_facade_base.cpp.
References DontActivateNode, KisNode::graphListener, KisDummiesFacadeBase::Private::lastActivatedNode, m_d, and sigActivateNode().
Definition at line 167 of file kis_dummies_facade_base.cpp.
References KisDummiesFacadeBase::Private::addNodeConnection, KisNode::firstChild(), m_d, KisNode::nextSibling(), KisNode::parent, KisDummiesFacadeBase::Private::pendingNodeSet, KisDummiesFacadeBase::Private::pendingNodeSetLock, KisNode::prevSibling(), and slotNodeAdded().
In some "buggy" code the node-changed signal may be emitted before the node will become a part of the node graph. It is a bug, we a really minor one. It should not cause any data losses to the user.
Definition at line 132 of file kis_dummies_facade_base.cpp.
References dummyForNode(), KIS_SAFE_ASSERT_RECOVER_RETURN, and sigDummyChanged().
Definition at line 185 of file kis_dummies_facade_base.cpp.
References KIS_SAFE_ASSERT_RECOVER_RETURN, KisNode::lastChild(), m_d, KisDummiesFacadeBase::Private::pendingNodeSet, KisDummiesFacadeBase::Private::pendingNodeSetLock, KisNode::prevSibling(), KisDummiesFacadeBase::Private::removeNodeConnection, and slotRemoveNode().
|
private |
Definition at line 101 of file kis_dummies_facade_base.h.