|
Krita Source Code Documentation
|
#include <kis_node_model.h>
Inheritance diagram for KisNodeModel:Classes | |
| struct | Private |
Public Types | |
| enum | ItemDataRole { ActiveRole = Qt::UserRole + 1 , PropertiesRole , AspectRatioRole , ProgressRole , AlternateActiveRole , ShouldGrayOutRole , ColorLabelIndexRole , DropEnabled , SelectOpaqueRole , DropReasonRole , IsAnimatedRole , InfoTextRole , FilterMaskColorRole , FilterMaskPropertiesRole , LayerColorOverlayColorRole , LayerColorOverlayPropertiesRole , ReservedRole = Qt::UserRole + 99 , BeginThumbnailRole } |
| Extensions to Qt::ItemDataRole. More... | |
Public Slots | |
| void | setShowGlobalSelection (bool value) |
Signals | |
| void | sigBeforeBeginRemoveRows (const QModelIndex &parent, int start, int end) |
| void | toggleIsolateActiveNode () |
Public Member Functions | |
| bool | canDropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const override |
| int | columnCount (const QModelIndex &parent=QModelIndex()) const override |
| QVariant | data (const QModelIndex &index, int role=Qt::DisplayRole) const override |
| bool | dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
| Qt::ItemFlags | flags (const QModelIndex &index) const override |
| bool | hasDummiesFacade () |
| QModelIndex | index (int row, int column, const QModelIndex &parent=QModelIndex()) const override |
| QModelIndex | indexFromNode (KisNodeSP node) const |
| KisNodeModel (QObject *parent, int clonedColumns=0) | |
| QMimeData * | mimeData (const QModelIndexList &indexes) const override |
| QStringList | mimeTypes () const override |
| KisNodeSP | nodeFromIndex (const QModelIndex &index) const |
| QModelIndex | parent (const QModelIndex &index) const override |
| int | rowCount (const QModelIndex &parent=QModelIndex()) const override |
| bool | setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override |
| void | setDummiesFacade (KisDummiesFacadeBase *dummiesFacade, KisImageWSP image, KisShapeController *shapeController, KisSelectionActionsAdapter *selectionActionsAdapter, KisNodeManager *nodeManager) |
| void | setIdleTaskManager (KisIdleTasksManager *idleTasksManager) |
| void | setPreferredThumnalSize (int preferredSize) const |
| bool | showGlobalSelection () const |
| QModelIndex | sibling (int row, int column, const QModelIndex &idx) const override |
| Qt::DropActions | supportedDragActions () const override |
| Qt::DropActions | supportedDropActions () const override |
| ~KisNodeModel () override | |
Static Public Member Functions | |
| static bool | belongsToIsolatedGroup (KisImageSP image, KisNodeSP node, KisDummiesFacadeBase *dummiesFacade) |
Protected Slots | |
| void | processUpdateQueue () |
| void | progressPercentageChanged (int, const KisNodeSP) |
| void | slotBeginInsertDummy (KisNodeDummy *parent, int index, const QString &metaObjectType) |
| void | slotBeginRemoveDummy (KisNodeDummy *dummy) |
| void | slotDummyChanged (KisNodeDummy *dummy) |
| void | slotEndInsertDummy (KisNodeDummy *dummy) |
| void | slotEndRemoveDummy () |
| void | slotIsolatedModeChanged () |
| void | slotLayerThumbnailUpdated (KisNodeSP node) |
| void | slotNodeDisplayModeChanged (bool showRootNode, bool showGlobalSelectionMask) |
Protected Member Functions | |
| virtual KisModelIndexConverterBase * | createIndexConverter () |
| KisDummiesFacadeBase * | dummiesFacade () const |
| KisModelIndexConverterBase * | indexConverter () const |
Private Member Functions | |
| bool | belongsToIsolatedGroup (KisNodeSP node) const |
| void | connectDummies (KisNodeDummy *dummy, bool needConnect) |
| void | connectDummy (KisNodeDummy *dummy, bool needConnect) |
| void | regenerateItems (KisNodeDummy *dummy) |
| void | resetIndexConverter () |
| void | setDropEnabled (const QMimeData *data) |
| void | updateDropEnabled (const QList< KisNodeSP > &nodes, QModelIndex parent=QModelIndex()) |
Private Attributes | |
| Private *const | m_d |
Friends | |
| class | KisModelIndexConverter |
| class | KisModelIndexConverterShowAll |
KisNodeModel offers a Qt model-view compatible view of the node hierarchy. The KisNodeView displays a thumbnail and a row of icon properties for every document section.
Note that there's a discrepancy between the krita node tree model and the model Qt wants to see: we hide the root node from Qt.
The node model also shows an inverse view of the layer tree: we want the first layer to show up at the bottom.
See also the Qt documentation for QAbstractItemModel. This class extends that interface to provide a name and set of toggle properties (like visible, locked, selected.)
Definition at line 45 of file kis_node_model.h.
Extensions to Qt::ItemDataRole.
Definition at line 52 of file kis_node_model.h.
|
explicit |
Definition at line 85 of file kis_node_model.cpp.
References connect(), KisNodeModel::Private::dummyColumns, m_d, processUpdateQueue(), slotLayerThumbnailUpdated(), KisNodeModel::Private::thumbnalCache, and KisNodeModel::Private::updateCompressor.
|
override |
Definition at line 94 of file kis_node_model.cpp.
References KisNodeModel::Private::indexConverter, and m_d.
|
static |
Definition at line 119 of file kis_node_model.cpp.
References dummiesFacade(), KisDummiesFacadeBase::dummyForNode(), KisImage::isolationRootNode(), and KisNodeDummy::parent().
|
private |
Definition at line 139 of file kis_node_model.cpp.
References belongsToIsolatedGroup(), KisNodeModel::Private::dummiesFacade, KisNodeModel::Private::image, and m_d.
|
override |
Definition at line 852 of file kis_node_model.cpp.
|
override |
Definition at line 478 of file kis_node_model.cpp.
References KisNodeModel::Private::dummyColumns, m_d, and parent().
|
private |
Definition at line 265 of file kis_node_model.cpp.
References connectDummies(), connectDummy(), KisNodeDummy::firstChild(), and KisNodeDummy::nextSibling().
|
private |
Definition at line 247 of file kis_node_model.cpp.
References connect(), KisNodeDummy::node(), KisNode::nodeProgressProxy, and progressPercentageChanged().
|
protectedvirtual |
Definition at line 154 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, KisModelIndexConverter, KisModelIndexConverterShowAll, m_d, KisNodeModel::Private::showGlobalSelection, and KisNodeModel::Private::showRootLayer.
|
override |
The dummies are removed from the model asynchronously to the image operations, therefore we should make sure that node->graphListener() is still valid and this node is still present in the node graph.
WARNING: there is still a possible theoretical race condition if the node is removed from the image right here. We consider that as "improbable" atm.
Definition at line 515 of file kis_node_model.cpp.
References KisNodeModel::Private::activeNodeIndex, ActiveRole, AspectRatioRole, BeginThumbnailRole, belongsToIsolatedGroup(), KisBaseNode::colorLabelIndex(), ColorLabelIndexRole, KisLayer::colorOverlayMask(), COMPOSITE_BEHIND, COMPOSITE_COPY, COMPOSITE_OVER, KisBaseNode::compositeOp, KisBaseNode::compositeOpId(), KisBaseNode::createThumbnail(), KisSharedPtr< T >::data(), KisProjectionLeaf::DropPassThroughClone, KisProjectionLeaf::DropPassThroughMask, DropReasonRole, KisNodeModel::Private::dummiesFacade, FilterMaskColorRole, KisNode::graphListener, KisImage::height(), KisBaseNode::icon(), KisNodeModel::Private::image, index(), KisConfig::INFOTEXT_DETAILED, KisConfig::INFOTEXT_SIMPLE, InfoTextRole, KisBaseNode::isAnimated(), IsAnimatedRole, KisWeakSharedPtr< T >::isValid(), LayerColorOverlayColorRole, KisConfig::layerInfoTextStyle(), m_d, KisLayerThumbnailCache::maxSize(), KisBaseNode::name(), nodeFromIndex(), KisNode::nodeProgressProxy, KisBaseNode::opacity(), KisNodeProgressProxy::percentage, ProgressRole, KisNode::projectionLeaf, PropertiesRole, KisBaseNode::sectionModelProperties(), ShouldGrayOutRole, KisImage::size(), KisLayerThumbnailCache::thumbnail(), KisNodeModel::Private::thumbnalCache, KisBaseNode::visible(), and KisImage::width().
|
override |
Definition at line 823 of file kis_node_model.cpp.
References data(), KisNodeModel::Private::dummiesFacade, KisModelIndexConverterBase::dummyFromIndex(), KisModelIndexConverterBase::dummyFromRow(), KisNodeModel::Private::image, KisNodeModel::Private::indexConverter, KisMimeData::insertMimeLayers(), KisNodeDummy::lastChild(), m_d, KisNodeModel::Private::nodeInsertionAdapter, parent(), KisModelIndexConverterBase::rowCount(), and KisNodeModel::Private::shapeController.
|
protected |
Definition at line 242 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, and m_d.
|
override |
Definition at line 660 of file kis_node_model.cpp.
References KisNodeModel::Private::dropEnabled, KisNodeModel::Private::dummiesFacade, flags(), index(), and m_d.
| bool KisNodeModel::hasDummiesFacade | ( | ) |
Definition at line 788 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, and m_d.
|
override |
Definition at line 451 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, KisModelIndexConverterBase::dummyFromRow(), KisNodeModel::Private::indexConverter, KisModelIndexConverterBase::indexFromDummy(), m_d, and parent().
|
protected |
Definition at line 237 of file kis_node_model.cpp.
References KisNodeModel::Private::indexConverter, and m_d.
| QModelIndex KisNodeModel::indexFromNode | ( | KisNodeSP | node | ) | const |
Definition at line 111 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, KisNodeModel::Private::indexConverter, KisModelIndexConverterBase::indexFromDummy(), and m_d.
|
override |
Definition at line 803 of file kis_node_model.cpp.
References KisNodeModel::Private::image, KisBaseNode::isEditable(), m_d, KisMimeData::mimeForLayers(), and nodeFromIndex().
|
override |
Definition at line 793 of file kis_node_model.cpp.
| KisNodeSP KisNodeModel::nodeFromIndex | ( | const QModelIndex & | index | ) | const |
Definition at line 100 of file kis_node_model.cpp.
References KisModelIndexConverterBase::dummyFromIndex(), index(), KisNodeModel::Private::indexConverter, m_d, and KisNodeDummy::node().
|
override |
Definition at line 486 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, KisModelIndexConverterBase::dummyFromIndex(), index(), KisNodeModel::Private::indexConverter, KisModelIndexConverterBase::indexFromDummy(), m_d, and KisNodeDummy::parent().
|
protectedslot |
Definition at line 435 of file kis_node_model.cpp.
References addChangedIndex(), KisNodeModel::Private::dummyColumns, index(), KisNodeModel::Private::indexConverter, KisModelIndexConverterBase::indexFromDummy(), m_d, and KisNodeModel::Private::updateQueue.
Definition at line 216 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, index(), indexFromNode(), and m_d.
|
private |
Definition at line 163 of file kis_node_model.cpp.
References KisNodeModel::Private::dummyColumns, KisNodeDummy::firstChild(), index(), KisNodeModel::Private::indexConverter, KisModelIndexConverterBase::indexFromDummy(), m_d, KisNodeDummy::nextSibling(), and regenerateItems().
|
private |
Definition at line 144 of file kis_node_model.cpp.
References createIndexConverter(), KisNodeModel::Private::dummiesFacade, KisNodeModel::Private::indexConverter, and m_d.
|
override |
Definition at line 469 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, KisNodeModel::Private::indexConverter, m_d, parent(), and KisModelIndexConverterBase::rowCount().
|
override |
Definition at line 677 of file kis_node_model.cpp.
References KisNodeModel::Private::activeNodeIndex, ActiveRole, addChangedIndex(), AlternateActiveRole, KisNodeManager::colorOverlayMaskProperties(), DropEnabled, KisNodeModel::Private::dummiesFacade, KisNodeModel::Private::dummyColumns, FilterMaskPropertiesRole, KisNodeModel::Private::image, index(), KisNodeModel::Private::indexConverter, KisModelIndexConverterBase::indexFromDummy(), indexFromNode(), LayerColorOverlayPropertiesRole, m_d, mimeData(), nodeFromIndex(), KisNodeModel::Private::nodeManager, KisNodeManager::nodePropertiesIgnoreSelection(), KisNodeModel::Private::nodeSelectionAdapter, KisNodeModel::Private::parentOfRemovedNode, PropertiesRole, KisNodeModel::Private::selectionActionsAdapter, KisSelectionActionsAdapter::selectOpaqueOnNode(), SelectOpaqueRole, KisNodeSelectionAdapter::setActiveNode(), setDropEnabled(), KisNodeManager::setNodeName(), toggleIsolateActiveNode(), KisNodeManager::trySetNodeProperties(), and value().
|
private |
Definition at line 862 of file kis_node_model.cpp.
References data(), KisNodeModel::Private::dropEnabled, KisNodeModel::Private::image, KisMimeData::loadNodesFast(), m_d, KisNodeModel::Private::shapeController, and updateDropEnabled().
| void KisNodeModel::setDummiesFacade | ( | KisDummiesFacadeBase * | dummiesFacade, |
| KisImageWSP | image, | ||
| KisShapeController * | shapeController, | ||
| KisSelectionActionsAdapter * | selectionActionsAdapter, | ||
| KisNodeManager * | nodeManager ) |
Definition at line 276 of file kis_node_model.cpp.
References KisSignalAutoConnectionsStore::addConnection(), KisSignalAutoConnectionsStore::clear(), connect(), connectDummies(), KisNodeModel::Private::dummiesFacade, dummiesFacade(), KisNodeModel::Private::image, KisWeakSharedPtr< T >::isValid(), m_d, KisNodeManager::nodeDisplayModeAdapter(), KisNodeModel::Private::nodeDisplayModeAdapter, KisNodeModel::Private::nodeDisplayModeAdapterConnections, KisNodeManager::nodeInsertionAdapter(), KisNodeModel::Private::nodeInsertionAdapter, KisNodeModel::Private::nodeManager, KisNodeManager::nodeSelectionAdapter(), KisNodeModel::Private::nodeSelectionAdapter, KisNodeModel::Private::parentOfRemovedNode, resetIndexConverter(), KisNodeModel::Private::selectionActionsAdapter, KisLayerThumbnailCache::setImage(), KisNodeModel::Private::shapeController, KisNodeModel::Private::showGlobalSelection, KisNodeDisplayModeAdapter::showGlobalSelectionMask(), KisNodeModel::Private::showRootLayer, slotBeginInsertDummy(), slotBeginRemoveDummy(), slotDummyChanged(), slotEndInsertDummy(), slotEndRemoveDummy(), slotIsolatedModeChanged(), slotNodeDisplayModeChanged(), and KisNodeModel::Private::thumbnalCache.
| void KisNodeModel::setIdleTaskManager | ( | KisIdleTasksManager * | idleTasksManager | ) |
Definition at line 347 of file kis_node_model.cpp.
References m_d, KisLayerThumbnailCache::setIdleTaskManager(), and KisNodeModel::Private::thumbnalCache.
| void KisNodeModel::setPreferredThumnalSize | ( | int | preferredSize | ) | const |
Definition at line 190 of file kis_node_model.cpp.
References m_d, KisLayerThumbnailCache::setMaxSize(), and KisNodeModel::Private::thumbnalCache.
|
slot |
Definition at line 195 of file kis_node_model.cpp.
References m_d, KisNodeModel::Private::nodeDisplayModeAdapter, KisNodeDisplayModeAdapter::setShowGlobalSelectionMask(), and value().
| bool KisNodeModel::showGlobalSelection | ( | ) | const |
Definition at line 183 of file kis_node_model.cpp.
References m_d, KisNodeModel::Private::nodeDisplayModeAdapter, and KisNodeDisplayModeAdapter::showGlobalSelectionMask().
|
override |
Definition at line 502 of file kis_node_model.cpp.
References index(), KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, and parent().
|
signal |
|
protectedslot |
Definition at line 352 of file kis_node_model.cpp.
References index(), KisNodeModel::Private::indexConverter, KisModelIndexConverterBase::indexFromAddedDummy(), m_d, KisNodeModel::Private::needFinishInsertRows, and parent().
|
protectedslot |
Definition at line 379 of file kis_node_model.cpp.
References connectDummy(), KisNodeModel::Private::indexConverter, KisModelIndexConverterBase::indexFromDummy(), m_d, KisNodeModel::Private::needFinishRemoveRows, KisNodeDummy::node(), KisLayerThumbnailCache::notifyNodeRemoved(), KisNodeDummy::parent(), KisNodeModel::Private::parentOfRemovedNode, sigBeforeBeginRemoveRows(), KisSignalCompressor::stop(), KisNodeModel::Private::thumbnalCache, KisNodeModel::Private::updateCompressor, and KisNodeModel::Private::updateQueue.
|
protectedslot |
Definition at line 414 of file kis_node_model.cpp.
References m_d, KisSignalCompressor::start(), KisNodeModel::Private::updateCompressor, and KisNodeModel::Private::updateQueue.
|
protectedslot |
Definition at line 368 of file kis_node_model.cpp.
References connectDummy(), m_d, KisNodeModel::Private::needFinishInsertRows, KisNodeDummy::node(), KisLayerThumbnailCache::notifyNodeAdded(), and KisNodeModel::Private::thumbnalCache.
|
protectedslot |
Definition at line 406 of file kis_node_model.cpp.
References m_d, and KisNodeModel::Private::needFinishRemoveRows.
|
protectedslot |
Definition at line 175 of file kis_node_model.cpp.
References KisNodeModel::Private::dummiesFacade, m_d, and regenerateItems().
Definition at line 229 of file kis_node_model.cpp.
References index(), and indexFromNode().
|
protectedslot |
Definition at line 202 of file kis_node_model.cpp.
References m_d, resetIndexConverter(), KisNodeModel::Private::showGlobalSelection, and KisNodeModel::Private::showRootLayer.
|
override |
Definition at line 778 of file kis_node_model.cpp.
|
override |
Definition at line 783 of file kis_node_model.cpp.
|
signal |
|
private |
Definition at line 877 of file kis_node_model.cpp.
References KisNodeModel::Private::dropEnabled, index(), m_d, nodeFromIndex(), parent(), rowCount(), target(), and updateDropEnabled().
|
friend |
Definition at line 192 of file kis_node_model.h.
|
friend |
Definition at line 193 of file kis_node_model.h.
|
private |
Definition at line 209 of file kis_node_model.h.