|
Krita Source Code Documentation
|
The command for changing the property list of a layer. More...
#include <kis_node_property_list_command.h>
Inheritance diagram for KisNodePropertyListCommand:Public Types | |
| typedef KisBaseNode::PropertyList | PropertyList |
Public Member Functions | |
| bool | canAnnihilateWith (const KUndo2Command *other) const override |
| bool | canMergeWith (const KUndo2Command *command) const override |
| int | id () const override |
| KisNodePropertyListCommand (KisNodeSP node, KisBaseNode::PropertyList newPropertyList) | |
| bool | mergeWith (const KUndo2Command *command) override |
| void | redo () override |
| void | undo () override |
Public Member Functions inherited from KisNodeCommand | |
| KisNodeCommand (const KUndo2MagicString &name, KisNodeSP node) | |
| ~KisNodeCommand () override | |
Public Member Functions inherited from KUndo2Command | |
| QString | actionText () const |
| const KUndo2Command * | child (int index) const |
| int | childCount () const |
| virtual QTime | endTime () const |
| KUndo2CommandExtraData * | extraData () const |
| bool | hasParent () const |
| virtual bool | isMerged () const |
| KUndo2Command (const KUndo2MagicString &text, KUndo2Command *parent=0) | |
| KUndo2Command (KUndo2Command *parent=0) | |
| virtual QVector< KUndo2Command * > | mergeCommandsVector () const |
| virtual void | redoMergedCommands () |
| void | setEndTime () |
| virtual void | setEndTime (const QTime &time) |
| void | setExtraData (KUndo2CommandExtraData *data) |
| void | setText (const KUndo2MagicString &text) |
| void | setTime () |
| virtual void | setTime (const QTime &time) |
| virtual void | setTimedID (int timedID) |
| KUndo2MagicString | text () const |
| virtual QTime | time () const |
| virtual int | timedId () const |
| virtual bool | timedMergeWith (KUndo2Command *other) |
| virtual void | undoMergedCommands () |
| virtual | ~KUndo2Command () |
Public Member Functions inherited from KisAsynchronouslyMergeableCommandInterface | |
| virtual | ~KisAsynchronouslyMergeableCommandInterface () |
Static Public Member Functions | |
| static void | setNodePropertiesAutoUndo (KisNodeSP node, KisImageSP image, PropertyList proplist) |
Private Member Functions | |
| void | doUpdate (const KisBaseNode::PropertyList &oldPropertyList, const KisBaseNode::PropertyList &newPropertyList, const QRect &totalUpdateExtent) |
Static Private Member Functions | |
| static const QSet< QString > & | propsWithNoUpdates () |
Private Attributes | |
| KisBaseNode::PropertyList | m_newPropertyList |
| KisBaseNode::PropertyList | m_oldPropertyList |
Additional Inherited Members | |
Protected Attributes inherited from KisNodeCommand | |
| KisNodeSP | m_node |
The command for changing the property list of a layer.
Definition at line 16 of file kis_node_property_list_command.h.
Definition at line 35 of file kis_node_property_list_command.h.
| KisNodePropertyListCommand::KisNodePropertyListCommand | ( | KisNodeSP | node, |
| KisBaseNode::PropertyList | newPropertyList ) |
Constructor
| node | the layer to add |
| newPropertyList | the property list to which the node to be added |
TODO instead of "Property Changes" check which property has been changed and display either lock/unlock, visible/hidden or "Property Changes" (this require new strings)
Definition at line 58 of file kis_node_property_list_command.cpp.
|
overridevirtual |
Attempts to merge this command with command and checks if the two commands compensate each other. If the function returns true, both commands are removed from the stack.
If this function returns true, calling this command's redo() followed by other redo() must have no effect.
The function itself shouldn't do any changes to the command, because after returning true, the command will be deleted as a "noop"
KUndo2QStack will only try to merge two commands if they have the same id, and the id is not -1.
The default implementation returns false.
Reimplemented from KUndo2Command.
Definition at line 138 of file kis_node_property_list_command.cpp.
References m_newPropertyList, KisNodeCommand::m_node, and m_oldPropertyList.
|
overridevirtual |
command can be merged with (*this) command using KUndo2Command::mergeWith() call.WARNING: if canMergeWith() returned true, then mergeWith() must also return true. Otherwise KisSavedMacroCommand will be able to enter inconsistent state and assert.
Implements KisAsynchronouslyMergeableCommandInterface.
Definition at line 127 of file kis_node_property_list_command.cpp.
References m_newPropertyList, KisNodeCommand::m_node, and m_oldPropertyList.
|
private |
Sometimes the node might refuse to change the property, e.g. needs-update for colorize mask. In this case we should avoid issuing the update and set-modified call.
Definition at line 154 of file kis_node_property_list_command.cpp.
References checkOnionSkinChanged(), KisSharedPtr< T >::data(), KisWeakSharedPtr< T >::data(), KoID::id(), KisBaseNode::Property::id, KisBaseNode::image, KisNodeCommand::m_node, KisNode::parent, KisLayerPropertiesIcons::passThrough, KisImage::refreshGraphAsync(), KisNode::setDirty(), KisNode::setDirtyDontResetAnimationCache(), KisBaseNode::Property::state, KisWeakSharedPtr< T >::toStrongRef(), and KisLayerPropertiesIcons::visible.
|
overridevirtual |
Returns the ID of this command.
A command ID is used in command compression. It must be an integer unique to this command's class, or -1 if the command doesn't support compression.
If the command supports compression this function must be overridden in the derived class to return the correct ID. The base implementation returns -1.
KUndo2QStack::push() will only try to merge two commands if they have the same ID, and the ID is not -1.
Reimplemented from KUndo2Command.
Definition at line 98 of file kis_node_property_list_command.cpp.
References KisCommandUtils::NodePropertyListCommandId.
|
overridevirtual |
Attempts to merge this command with command. Returns true on success; otherwise returns false.
If this function returns true, calling this command's redo() must have the same effect as redoing both this command and command. Similarly, calling this command's undo() must have the same effect as undoing command and this command.
KUndo2QStack will only try to merge two commands if they have the same id, and the id is not -1.
The default implementation returns false.
Reimplemented from KUndo2Command.
Definition at line 103 of file kis_node_property_list_command.cpp.
References KisLayerPropertiesIcons::colorOverlay, KoID::id(), KIS_SAFE_ASSERT_RECOVER_NOOP, m_newPropertyList, KisNodeCommand::m_node, and m_oldPropertyList.
|
staticprivate |
Definition at line 212 of file kis_node_property_list_command.cpp.
References KisLayerPropertiesIcons::alphaLocked, KisLayerPropertiesIcons::colorizeNeedsUpdate, KisLayerPropertiesIcons::colorLabelIndex, KoID::id(), KisLayerPropertiesIcons::layerError, KisLayerPropertiesIcons::locked, KisLayerPropertiesIcons::openFileLayerFile, and KisLayerPropertiesIcons::selectionActive.
|
overridevirtual |
Applies a change to the document. This function must be implemented in the derived class. Calling KUndo2QStack::push(), KUndo2QStack::undo() or KUndo2QStack::redo() from this function leads to undefined behavior.
The default implementation calls redo() on all child commands.
Reimplemented from KUndo2Command.
Definition at line 70 of file kis_node_property_list_command.cpp.
References doUpdate(), m_newPropertyList, KisNodeCommand::m_node, KisNode::projectionPlane(), propsWithNoUpdates(), KisBaseNode::sectionModelProperties(), and KisBaseNode::setSectionModelProperties().
|
static |
HACK ALERT!
Here we start a fake legacy stroke, so that all the LoD planes would be invalidated. Ideally, we should refactor this method and avoid resetting LoD planes when node visibility changes, Instead there should be two commands executes: LoD agnostic one (which sets the properties themselves), and two LoD-specific update commands: one for lodN and another one for lod0.
Definition at line 226 of file kis_node_property_list_command.cpp.
References KisUndoAdapter::addCommand(), KisLayerPropertiesIcons::colorizeNeedsUpdate, KisImage::endStroke(), KoID::id(), KisNodePropertyListCommand(), KisLayerPropertiesIcons::openFileLayerFile, KisBaseNode::sectionModelProperties(), KisImage::startStroke(), undo(), and KisImage::undoAdapter().
|
overridevirtual |
Reverts a change to the document. After undo() is called, the state of the document should be the same as before redo() was called. This function must be implemented in the derived class. Calling KUndo2QStack::push(), KUndo2QStack::undo() or KUndo2QStack::redo() from this function leads to undefined behavior.
The default implementation calls undo() on all child commands in reverse order.
Reimplemented from KUndo2Command.
Definition at line 84 of file kis_node_property_list_command.cpp.
References doUpdate(), KisNodeCommand::m_node, m_oldPropertyList, KisNode::projectionPlane(), propsWithNoUpdates(), KisBaseNode::sectionModelProperties(), and KisBaseNode::setSectionModelProperties().
|
private |
Definition at line 43 of file kis_node_property_list_command.h.
|
private |
Definition at line 44 of file kis_node_property_list_command.h.