18#include "moc_qgslayout.cpp"
51 , mGridSettings( this )
56 setBackgroundBrush( Qt::NoBrush );
63 mUndoStack->blockCommands(
true );
65 deleteAndRemoveMultiFrames();
73 QList<QGraphicsItem *> itemList = items();
78 for ( QGraphicsItem *item : std::as_const( itemList ) )
95 QDomDocument currentDoc;
98 QDomElement elem =
writeXml( currentDoc, context );
99 currentDoc.appendChild( elem );
101 std::unique_ptr< QgsLayout > newLayout = std::make_unique< QgsLayout >( mProject );
103 newLayout->loadFromTemplate( currentDoc, context,
true, &ok );
109 return newLayout.release();
117 mPageCollection->addPage( page );
118 mUndoStack->stack()->clear();
123 deleteAndRemoveMultiFrames();
126 const QList<QGraphicsItem *> itemList = items();
127 for ( QGraphicsItem *item : itemList )
131 if ( cItem && !pItem )
133 removeLayoutItemPrivate( cItem );
136 mItemsModel->clear();
138 mPageCollection->clear();
139 mUndoStack->stack()->clear();
149 return mItemsModel.get();
154 QList<QgsLayoutItem *> layoutItemList;
156 const QList<QGraphicsItem *> graphicsItemList = selectedItems();
157 for ( QGraphicsItem *item : graphicsItemList )
160 if ( layoutItem && ( includeLockedItems || !layoutItem->
isLocked() ) )
162 layoutItemList.push_back( layoutItem );
166 return layoutItemList;
185 const QList<QGraphicsItem *> selectedItemList = selectedItems();
186 for ( QGraphicsItem *item : selectedItemList )
190 layoutItem->setSelected(
false );
199 bool result = mItemsModel->reorderItemUp( item );
200 if ( result && !deferUpdate )
212 bool result = mItemsModel->reorderItemDown( item );
213 if ( result && !deferUpdate )
225 bool result = mItemsModel->reorderItemToTop( item );
226 if ( result && !deferUpdate )
238 bool result = mItemsModel->reorderItemToBottom( item );
239 if ( result && !deferUpdate )
250 QList<QgsLayoutItem *> itemList;
254 if ( item->uuid() == uuid )
256 else if ( includeTemplateUuids && item->mTemplateUuid == uuid )
265 QList<QgsLayoutItem *> itemList;
269 if ( item->mTemplateUuid == uuid )
278 const QList<QGraphicsItem *> itemList = items();
279 for ( QGraphicsItem *item : itemList )
282 if ( layoutItem && layoutItem->
id() == id )
294 if ( mf->uuid() == uuid )
296 else if ( includeTemplateUuids && mf->mTemplateUuid == uuid )
305 return layoutItemAt( position,
nullptr, ignoreLocked, searchTolerance );
311 QList<QGraphicsItem *> itemList;
312 if ( searchTolerance == 0 )
314 itemList = items( position, Qt::IntersectsItemShape, Qt::DescendingOrder );
318 itemList = items( QRectF( position.x() - searchTolerance, position.y() - searchTolerance, 2 * searchTolerance, 2 * searchTolerance ), Qt::IntersectsItemShape, Qt::DescendingOrder );
321 bool foundBelowItem =
false;
322 for ( QGraphicsItem *graphicsItem : std::as_const( itemList ) )
326 if ( layoutItem && !paperItem )
330 if ( ( ! belowItem || foundBelowItem ) && ( !ignoreLocked || !layoutItem->
isLocked() ) )
335 return layoutItemAt( position, layoutItem, ignoreLocked, searchTolerance );
342 if ( layoutItem == belowItem )
345 foundBelowItem =
true;
385 return *mRenderContext;
390 return *mRenderContext;
395 return *mReportContext;
400 return *mReportContext;
406 mPageCollection->redraw();
411 return mPageCollection->guides();
416 return mPageCollection->guides();
424 if ( mReportContext->
layer() )
433 mCustomProperties.
setValue( key, value );
435 if ( key.startsWith( QLatin1String(
"variable" ) ) )
441 return mCustomProperties.
value( key, defaultValue );
446 mCustomProperties.
remove( key );
451 return mCustomProperties.
keys();
461 QList< QgsLayoutItemMap * > maps;
464 double largestMapArea = 0;
467 double area = map->rect().width() * map->rect().height();
468 if ( area > largestMapArea )
470 largestMapArea = area;
479 mWorldFileMapId = map ? map->
uuid() : QString();
485 return mPageCollection.get();
490 return mPageCollection.get();
499 const auto constItems = items();
500 for (
const QGraphicsItem *item : constItems )
507 if ( !isPage || !ignorePages )
515 itemBounds = layoutItem->mapToScene( layoutItem->rect() ).boundingRect();
518 itemBounds = item->sceneBoundingRect();
520 if ( bounds.isValid() )
521 bounds = bounds.united( itemBounds );
527 if ( bounds.isValid() && margin > 0.0 )
530 double maxWidth = mPageCollection->maximumPageWidth();
531 bounds.adjust( -maxWidth * margin, -maxWidth * margin, maxWidth * margin, maxWidth * margin );
544 const QList<QGraphicsItem *> itemList = items();
545 for ( QGraphicsItem *item : itemList )
550 if ( visibleOnly && !layoutItem->isVisible() )
554 if ( bounds.isValid() )
555 bounds = bounds.united( item->sceneBoundingRect() );
557 bounds = item->sceneBoundingRect();
566 addLayoutItemPrivate( item );
570 undoText = tr(
"Create %1" ).arg( metadata->visibleName() );
574 undoText = tr(
"Create Item" );
576 if ( !mUndoStack->isBlocked() )
582 std::unique_ptr< QgsLayoutItemDeleteUndoCommand > deleteCommand;
583 if ( !mUndoStack->isBlocked() )
585 mUndoStack->beginMacro( tr(
"Delete Items" ) );
588 removeLayoutItemPrivate( item );
591 mUndoStack->push( deleteCommand.release() );
592 mUndoStack->endMacro();
601 if ( !mMultiFrames.contains( multiFrame ) )
602 mMultiFrames << multiFrame;
607 mMultiFrames.removeAll( multiFrame );
617 QFile templateFile( path );
618 if ( !templateFile.open( QIODevice::WriteOnly | QIODevice::Truncate ) )
623 QDomDocument saveDocument;
624 QDomElement elem =
writeXml( saveDocument, context );
625 saveDocument.appendChild( elem );
627 if ( templateFile.write( saveDocument.toByteArray() ) == -1 )
638 QList< QgsLayoutItem * > result;
658 QDomNodeList itemsNodes = doc.elementsByTagName( QStringLiteral(
"LayoutItem" ) );
659 for (
int i = 0; i < itemsNodes.count(); ++i )
661 QDomNode itemNode = itemsNodes.at( i );
662 if ( itemNode.isElement() )
664 itemNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
667 QDomNodeList multiFrameNodes = doc.elementsByTagName( QStringLiteral(
"LayoutMultiFrame" ) );
668 for (
int i = 0; i < multiFrameNodes.count(); ++i )
670 QDomNode multiFrameNode = multiFrameNodes.at( i );
671 if ( multiFrameNode.isElement() )
673 multiFrameNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
674 QDomNodeList frameNodes = multiFrameNode.toElement().elementsByTagName( QStringLiteral(
"childFrame" ) );
675 QDomNode itemNode = frameNodes.at( i );
676 if ( itemNode.isElement() )
678 itemNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
686 QDomElement layoutElem = doc.documentElement();
687 if ( layoutElem.isNull() )
692 bool loadOk =
readXml( layoutElem, doc, context );
712 return mUndoStack.get();
717 return mUndoStack.get();
732 void saveState( QDomDocument &stateDoc )
const override
735 QDomElement documentElement = stateDoc.createElement( QStringLiteral(
"UndoState" ) );
737 stateDoc.appendChild( documentElement );
747 mLayout->readXmlLayoutSettings( stateDoc.documentElement(), stateDoc,
QgsReadWriteContext() );
748 mLayout->project()->setDirty(
true );
764 if ( items.size() < 2 )
770 mUndoStack->beginMacro( tr(
"Group Items" ) );
774 itemGroup->addItem( item );
779 std::unique_ptr< QgsLayoutItemGroupUndoCommand >
c(
new QgsLayoutItemGroupUndoCommand( QgsLayoutItemGroupUndoCommand::Grouped, returnGroup,
this, tr(
"Group Items" ) ) );
780 mUndoStack->push(
c.release() );
783 mUndoStack->endMacro();
791 QList<QgsLayoutItem *> ungroupedItems;
794 return ungroupedItems;
797 mUndoStack->beginMacro( tr(
"Ungroup Items" ) );
800 std::unique_ptr< QgsLayoutItemGroupUndoCommand >
c(
new QgsLayoutItemGroupUndoCommand( QgsLayoutItemGroupUndoCommand::Ungrouped, group,
this, tr(
"Ungroup Items" ) ) );
801 mUndoStack->push(
c.release() );
805 ungroupedItems = group->
items();
809 mUndoStack->endMacro();
811 return ungroupedItems;
816 const QList< QGraphicsItem * > constItems = items();
817 for (
const QGraphicsItem *item : constItems )
823 if ( !layoutItem->
accept( visitor ) )
831 mUndoStack->blockCommands(
true );
832 mPageCollection->beginPageSizeChange();
834 mPageCollection->reflow();
835 mPageCollection->endPageSizeChange();
836 mUndoStack->blockCommands(
false );
840void QgsLayout::writeXmlLayoutSettings( QDomElement &element, QDomDocument &document,
const QgsReadWriteContext & )
const
842 mCustomProperties.
writeXml( element, document );
844 element.setAttribute( QStringLiteral(
"worldFileMap" ), mWorldFileMapId );
845 element.setAttribute( QStringLiteral(
"printResolution" ), mRenderContext->
dpi() );
850 QDomElement element = document.createElement( QStringLiteral(
"Layout" ) );
853 return object->writeXml( element, document, context );
856 save( &mGridSettings );
857 save( mPageCollection.get() );
860 const QList<QGraphicsItem *> itemList = items();
861 for (
const QGraphicsItem *graphicsItem : itemList )
868 item->writeXml( element, document, context );
875 if ( mf->frameCount() > 0 )
876 mf->writeXml( element, document, context );
879 writeXmlLayoutSettings( element, document, context );
883bool QgsLayout::readXmlLayoutSettings(
const QDomElement &layoutElement,
const QDomDocument &,
const QgsReadWriteContext & )
885 mCustomProperties.
readXml( layoutElement );
887 mWorldFileMapId = layoutElement.attribute( QStringLiteral(
"worldFileMap" ) );
888 mRenderContext->
setDpi( layoutElement.attribute( QStringLiteral(
"printResolution" ), QStringLiteral(
"300" ) ).toDouble() );
898 mItemsModel->rebuildZList();
903void QgsLayout::removeLayoutItemPrivate(
QgsLayoutItem *item )
905 mItemsModel->setItemRemoved( item );
912 emit itemRemoved( item );
918void QgsLayout::deleteAndRemoveMultiFrames()
920 qDeleteAll( mMultiFrames );
921 mMultiFrames.clear();
924QPointF QgsLayout::minPointFromXml(
const QDomElement &elem )
const
926 double minX = std::numeric_limits<double>::max();
927 double minY = std::numeric_limits<double>::max();
928 const QDomNodeList itemList = elem.elementsByTagName( QStringLiteral(
"LayoutItem" ) );
930 for (
int i = 0; i < itemList.size(); ++i )
932 const QDomElement currentItemElem = itemList.at( i ).toElement();
937 minX = std::min( minX, layoutPoint.x() );
938 minY = std::min( minY, layoutPoint.y() );
941 return found ? QPointF( minX, minY ) : QPointF( 0, 0 );
946 int counter = mItemsModel->zOrderListSize();
947 const QList<QgsLayoutItem *> zOrderList = mItemsModel->zOrderList();
949 if ( addUndoCommands )
951 mUndoStack->beginMacro( tr(
"Change Item Stacking" ) );
957 if ( addUndoCommands )
959 mUndoStack->beginCommand( currentItem, QString() );
961 currentItem->setZValue( counter );
962 if ( addUndoCommands )
964 mUndoStack->endCommand();
969 if ( addUndoCommands )
971 mUndoStack->endMacro();
977 if ( layoutElement.nodeName() != QLatin1String(
"Layout" ) )
984 return object->readXml( layoutElement, document, context );
987 std::unique_ptr< QgsScopedRuntimeProfile > profile;
989 profile = std::make_unique< QgsScopedRuntimeProfile >( tr(
"Read layout settings" ), QStringLiteral(
"projectload" ) );
991 blockSignals(
true );
992 readXmlLayoutSettings( layoutElement, document, context );
993 blockSignals(
false );
996 profile->switchTask( tr(
"Load pages" ) );
997 restore( mPageCollection.get() );
999 profile->switchTask( tr(
"Load snapping settings" ) );
1000 restore( &mSnapper );
1002 profile->switchTask( tr(
"Load grid settings" ) );
1003 restore( &mGridSettings );
1006 profile->switchTask( tr(
"Restore items" ) );
1016 QList< QgsLayoutItem * > newItems;
1017 QList< QgsLayoutMultiFrame * > newMultiFrames;
1022 int zOrderOffset = mItemsModel->zOrderListSize();
1024 QPointF pasteShiftPos;
1025 int pageNumber = -1;
1031 QPointF minItemPos = minPointFromXml( parentElement );
1034 pasteShiftPos = *position - minItemPos;
1037 pageNumber = mPageCollection->pageNumberForPoint( *position );
1041 std::unique_ptr< QgsScopedRuntimeProfile > profile;
1043 profile = std::make_unique< QgsScopedRuntimeProfile >( tr(
"Read items" ), QStringLiteral(
"projectload" ) );
1048 const QDomNodeList multiFrameList = parentElement.elementsByTagName( QStringLiteral(
"LayoutMultiFrame" ) );
1049 for (
int i = 0; i < multiFrameList.size(); ++i )
1051 const QDomElement multiFrameElem = multiFrameList.at( i ).toElement();
1052 const int itemType = multiFrameElem.attribute( QStringLiteral(
"type" ) ).toInt();
1058 profile->switchTask( tr(
"Load %1" ).arg( metadata->visibleName() ) );
1068 mf->readXml( multiFrameElem, document, context );
1071 mf->setCreateUndoCommands(
true );
1086 newMultiFrames << m;
1089 const QDomNodeList layoutItemList = parentElement.childNodes();
1090 for (
int i = 0; i < layoutItemList.size(); ++i )
1092 const QDomElement currentItemElem = layoutItemList.at( i ).toElement();
1093 if ( currentItemElem.nodeName() != QLatin1String(
"LayoutItem" ) )
1096 const int itemType = currentItemElem.attribute( QStringLiteral(
"type" ) ).toInt();
1102 profile->switchTask( tr(
"Load %1" ).arg( metadata->visibleName() ) );
1113 item->readXml( currentItemElem, document, context );
1119 item->attemptMove( posOnPage,
true,
false, pageNumber );
1123 item->attemptMoveBy( pasteShiftPos.x(), pasteShiftPos.y() );
1139 label->setTextFormat( textFormat );
1143 if ( item->isGroupMember() )
1155 newMultiFrames << html;
1163 layoutItem->setZValue( layoutItem->zValue() + zOrderOffset );
1164 newItems << layoutItem;
1171 std::unique_ptr< QgsScopedRuntimeProfile > itemProfile;
1174 profile->switchTask( tr(
"Finalize restore" ) );
1179 itemProfile = std::make_unique< QgsScopedRuntimeProfile >( item->
displayName(), QStringLiteral(
"projectload" ) );
1182 itemProfile.reset();
1187 itemProfile = std::make_unique< QgsScopedRuntimeProfile >( mf->displayName(), QStringLiteral(
"projectload" ) );
1188 mf->finalizeRestoreFromXml();
1190 itemProfile.reset();
1195 item->mTemplateUuid.clear();
1199 mf->mTemplateUuid.clear();
1207 profile->switchTask( tr(
"Update model" ) );
1208 mItemsModel->rebuildZList();
1218void QgsLayout::itemBackgroundTaskCountChanged(
int count )
1220 QgsLayoutItem *item = qobject_cast<QgsLayoutItem *>( sender() );
1225 mBackgroundTaskCount.insert( item, count );
1227 mBackgroundTaskCount.remove( item );
1231 for (
auto it = mBackgroundTaskCount.constBegin(); it != mBackgroundTaskCount.constEnd(); ++it )
1233 total += it.value();
LayoutUnit
Layout measurement units.
@ Millimeters
Millimeters.
@ Percentage
Percentage of another measurement (e.g., canvas size, feature size)
Base class for commands to undo/redo layout and layout object changes.
virtual void saveState(QDomDocument &stateDoc) const =0
Saves the state of the object to the specified stateDoc.
virtual void restoreState(QDomDocument &stateDoc)=0
Restores the state of the object from the specified stateDoc.
static QgsLayoutItemRegistry * layoutItemRegistry()
Returns the application's layout item registry, used for layout item types.
static QgsRuntimeProfiler * profiler()
Returns the application runtime profiler.
static bool isCompositionTemplate(const QDomDocument &document)
Check if the given document is a composition template.
static QDomDocument convertCompositionTemplate(const QDomDocument &document, QgsProject *project)
Convert a composition template document to a layout template.
static QgsExpressionContextScope * layoutScope(const QgsLayout *layout)
Creates a new scope which contains variables and functions relating to a QgsLayout layout.
static QgsExpressionContextScope * projectScope(const QgsProject *project)
Creates a new scope which contains variables and functions relating to a QGIS project.
static QgsExpressionContextScope * layerScope(const QgsMapLayer *layer)
Creates a new scope which contains variables and functions relating to a QgsMapLayer.
static QgsExpressionContextScope * globalScope()
Creates a new scope which contains variables and functions relating to the global QGIS context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void appendScope(QgsExpressionContextScope *scope)
Appends a scope to the end of the context.
void loadFromSettings()
Loads grid settings from the application layout settings.
Stores and manages the snap guides used by a layout.
A container for grouping several QgsLayoutItems.
void removeItems()
Removes all items from the group (but does not delete them).
void addItem(QgsLayoutItem *item)
Adds an item to the group.
QList< QgsLayoutItem * > items() const
Returns a list of items contained by the group.
static QgsLayoutItemHtml * createFromLabel(QgsLayoutItemLabel *label)
Returns a new QgsLayoutItemHtml matching the content and rendering of a given label.
A layout item subclass for text labels.
@ ModeHtml
Label displays rendered HTML content.
Layout graphical items for displaying a map.
Item representing the paper in a layout.
void setPageSize(const QgsLayoutSize &size)
Sets the size of the page.
Base class for graphical items within a QgsLayout.
virtual void cleanup()
Called just before a batch of items are deleted, allowing them to run cleanup tasks.
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified style entity visitor, causing it to visit all style entities associated with th...
QgsLayoutItemGroup * parentGroup() const
Returns the item's parent group, if the item is part of a QgsLayoutItemGroup group.
virtual void setSelected(bool selected)
Sets whether the item should be selected.
bool isLocked() const
Returns true if the item is locked, and cannot be interacted with using the mouse.
int page() const
Returns the page the item is currently on, with the first page returning 0.
virtual void finalizeRestoreFromXml()
Called after all pending items have been restored from XML.
int type() const override
Returns a unique graphics item type identifier.
virtual QString displayName() const
Gets item display name.
virtual QString uuid() const
Returns the item identification string.
QString id() const
Returns the item's ID name.
void backgroundTaskCountChanged(int count)
Emitted whenever the number of background tasks an item is executing changes.
QgsLayoutMeasurement convert(QgsLayoutMeasurement measurement, Qgis::LayoutUnit targetUnits) const
Converts a measurement from one unit to another.
This class provides a method of storing measurements for use in QGIS layouts using a variety of diffe...
double length() const
Returns the length of the measurement.
A model for items attached to a layout.
Abstract base class for layout items with the ability to distribute the content to several frames (Qg...
QgsLayoutFrame * frame(int index) const
Returns the child frame at a specified index from the multiframe.
A manager for a collection of pages in a layout.
This class provides a method of storing points, consisting of an x and y coordinate,...
static QgsLayoutPoint decodePoint(const QString &string)
Decodes a point from a string.
Stores information relating to the current rendering settings for a layout.
void setDpi(double dpi)
Sets the dpi for outputting the layout.
double dpi() const
Returns the dpi for outputting the layout.
const QgsLayoutMeasurementConverter & measurementConverter() const
Returns the layout measurement converter to be used in the layout.
Stores information relating to the current reporting context for a layout.
QgsVectorLayer * layer() const
Returns the vector layer associated with the layout's context.
An interface for layout objects which can be stored and read from DOM elements.
This class provides a method of storing sizes, consisting of a width and height, for use in QGIS layo...
Manages snapping grids and preset snap lines in a layout, and handles snapping points to the nearest ...
An undo stack for QgsLayouts.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
QgsLayoutItem * itemById(const QString &id) const
Returns a layout item given its id.
friend class QgsLayoutItemDeleteUndoCommand
void removeMultiFrame(QgsLayoutMultiFrame *multiFrame)
Removes a multiFrame from the layout (but does not delete it).
void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for the layout.
void updateBounds()
Updates the scene bounds of the layout.
bool saveAsTemplate(const QString &path, const QgsReadWriteContext &context) const
Saves the layout as a template at the given file path.
QgsAbstractLayoutUndoCommand * createCommand(const QString &text, int id=0, QUndoCommand *parent=nullptr) override
Creates a new layout undo command with the specified text and parent.
void initializeDefaults()
Initializes an empty layout, e.g.
QgsLayoutRenderContext & renderContext()
Returns a reference to the layout's render context, which stores information relating to the current ...
void removeCustomProperty(const QString &key)
Remove a custom property from the layout.
QgsLayoutModel * itemsModel()
Returns the items model attached to the layout.
QgsLayoutPageCollection * pageCollection()
Returns a pointer to the layout's page collection, which stores and manages page items in the layout.
void variablesChanged()
Emitted whenever the expression variables stored in the layout have been changed.
void layoutItems(QList< T * > &itemList) const
Returns a list of layout items of a specific type.
QgsLayoutItem * itemByUuid(const QString &uuid, bool includeTemplateUuids=false) const
Returns the layout item with matching uuid unique identifier, or nullptr if a matching item could not...
void addMultiFrame(QgsLayoutMultiFrame *multiFrame)
Adds a multiFrame to the layout.
void setUnits(Qgis::LayoutUnit units)
Sets the native measurement units for the layout.
QgsLayoutGuideCollection & guides()
Returns a reference to the layout's guide collection, which manages page snap guides.
QList< QgsLayoutItem * > ungroupItems(QgsLayoutItemGroup *group)
Ungroups items by removing them from an item group and removing the group from the layout.
bool moveItemToTop(QgsLayoutItem *item, bool deferUpdate=false)
Raises an item up to the top of the z-order.
QgsLayoutItem * layoutItemAt(QPointF position, bool ignoreLocked=false, double searchTolerance=0) const
Returns the topmost layout item at a specified position.
QgsLayoutItemMap * referenceMap() const
Returns the map item which will be used to generate corresponding world files when the layout is expo...
void changed()
Emitted when properties of the layout change.
bool moveItemToBottom(QgsLayoutItem *item, bool deferUpdate=false)
Lowers an item down to the bottom of the z-order.
QgsLayoutItemGroup * groupItems(const QList< QgsLayoutItem * > &items)
Creates a new group from a list of layout items and adds the group to the layout.
QList< QgsLayoutItem * > addItemsFromXml(const QDomElement &parentElement, const QDomDocument &document, const QgsReadWriteContext &context, QPointF *position=nullptr, bool pasteInPlace=false)
Add items from an XML representation to the layout.
friend class QgsLayoutItemAddItemCommand
void reloadSettings()
Refreshes the layout when global layout related options change.
double convertToLayoutUnits(QgsLayoutMeasurement measurement) const
Converts a measurement into the layout's native units.
virtual bool readXml(const QDomElement &layoutElement, const QDomDocument &document, const QgsReadWriteContext &context)
Sets the collection's state from a DOM element.
QStringList customProperties() const
Returns list of keys stored in custom properties for the layout.
QgsLayout * clone() const
Creates a clone of the layout.
void clear()
Clears the layout.
QgsLayoutItem * itemByTemplateUuid(const QString &uuid) const
Returns the layout item with matching template uuid unique identifier, or nullptr if a matching item ...
friend class QgsLayoutUndoCommand
bool lowerItem(QgsLayoutItem *item, bool deferUpdate=false)
Lowers an item down the z-order.
QgsLayoutMeasurement convertFromLayoutUnits(double length, Qgis::LayoutUnit unit) const
Converts a length measurement from the layout's native units to a specified target unit.
friend class QgsLayoutModel
QList< QgsLayoutItem * > loadFromTemplate(const QDomDocument &document, const QgsReadWriteContext &context, bool clearExisting=true, bool *ok=nullptr)
Load a layout template document.
static const QgsSettingsEntryStringList * settingsSearchPathForTemplates
Settings entry search path for templates.
bool raiseItem(QgsLayoutItem *item, bool deferUpdate=false)
Raises an item up the z-order.
QList< QgsLayoutItem * > selectedLayoutItems(bool includeLockedItems=true)
Returns list of selected layout items.
QVariant customProperty(const QString &key, const QVariant &defaultValue=QVariant()) const
Read a custom property from the layout.
void selectedItemChanged(QgsLayoutItem *selected)
Emitted whenever the selected item changes.
void deselectAll()
Clears any selected items in the layout.
void setSelectedItem(QgsLayoutItem *item)
Clears any selected items and sets item as the current selection.
QRectF layoutBounds(bool ignorePages=false, double margin=0.0) const
Calculates the bounds of all non-gui items in the layout.
void refresh()
Forces the layout, and all items contained within it, to refresh.
void backgroundTaskCountChanged(int total)
Emitted whenever the total number of background tasks running in items from the layout changes.
void removeLayoutItem(QgsLayoutItem *item)
Removes an item from the layout.
void refreshed()
Emitted when the layout has been refreshed and items should also be refreshed and updated.
friend class QgsLayoutItemGroupUndoCommand
void updateZValues(bool addUndoCommands=true)
Resets the z-values of items based on their position in the internal z order list.
QgsExpressionContext createExpressionContext() const override
Creates an expression context relating to the layout's current state.
QgsLayoutReportContext & reportContext()
Returns a reference to the layout's report context, which stores information relating to the current ...
virtual QDomElement writeXml(QDomDocument &document, const QgsReadWriteContext &context) const
Returns the layout's state encapsulated in a DOM element.
void setReferenceMap(QgsLayoutItemMap *map)
Sets the map item which will be used to generate corresponding world files when the layout is exporte...
QList< QgsLayoutMultiFrame * > multiFrames() const
Returns a list of multi frames contained in the layout.
void addLayoutItem(QgsLayoutItem *item)
Adds an item to the layout.
QgsLayoutMultiFrame * multiFrameByUuid(const QString &uuid, bool includeTemplateUuids=false) const
Returns the layout multiframe with matching uuid unique identifier, or nullptr if a matching multifra...
bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified style entity visitor, causing it to visit all style entities associated with th...
QgsProject * project() const
The project associated with the layout.
void itemAdded(QgsLayoutItem *item)
Emitted when an item was added to the layout.
QRectF pageItemBounds(int page, bool visibleOnly=false) const
Returns the bounding box of the items contained on a specified page.
QgsLayout(QgsProject *project)
Construct a new layout linked to the specified project.
QgsLayoutUndoStack * undoStack()
Returns a pointer to the layout's undo stack, which manages undo/redo states for the layout and it's ...
void setValue(const QString &key, const QVariant &value)
Add an entry to the store with the specified key.
QStringList keys() const
Returns a list of all stored keys.
void writeXml(QDomNode &parentNode, QDomDocument &doc) const
Writes the store contents to an XML node.
void remove(const QString &key)
Removes a key (entry) from the store.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
Returns the value for the given key.
void readXml(const QDomNode &parentNode, const QString &keyStartsWith=QString())
Read store contents from an XML node.
A class to describe the version of a project.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
void setDirty(bool b=true)
Flag the project as dirty (modified).
QgsProjectVersion lastSaveVersion() const
Returns the QGIS version which the project was last saved using.
The class is used as a container of context for various read/write operations on other objects.
bool groupIsActive(const QString &group) const
Returns true if the specified group is currently being logged, i.e.
A string list settings entry.
static QgsSettingsTreeNode * sTreeLayout
An interface for classes which can visit style entity (e.g.
Container for all settings relating to text rendering.
double lineHeight() const
Returns the line height for text.
Qgis::RenderUnit lineHeightUnit() const
Returns the units for the line height for text.
void setLineHeight(double height)
Sets the line height for text.
static Q_INVOKABLE Qgis::LayoutUnit decodeLayoutUnit(const QString &string, bool *ok=nullptr)
Decodes a layout unit from a string.
static Q_INVOKABLE QString encodeUnit(Qgis::DistanceUnit unit)
Encodes a distance unit to a string.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.