41   , mGridSettings( this )
 
   46   setBackgroundBrush( Qt::NoBrush );
 
   53   mUndoStack->blockCommands( 
true );
 
   55   deleteAndRemoveMultiFrames();
 
   63   QList<QGraphicsItem *> itemList = items();
 
   68     for ( QGraphicsItem *item : std::as_const( itemList ) )
 
   85   QDomDocument currentDoc;
 
   88   QDomElement elem = 
writeXml( currentDoc, context );
 
   89   currentDoc.appendChild( elem );
 
   91   std::unique_ptr< QgsLayout > newLayout = std::make_unique< QgsLayout >( mProject );
 
   93   newLayout->loadFromTemplate( currentDoc, context, 
true, &ok );
 
   99   return newLayout.release();
 
  107   mPageCollection->addPage( page );
 
  108   mUndoStack->stack()->clear();
 
  113   deleteAndRemoveMultiFrames();
 
  116   const QList<QGraphicsItem *> itemList = items();
 
  117   for ( QGraphicsItem *item : itemList )
 
  121     if ( cItem && !pItem )
 
  123       removeLayoutItemPrivate( cItem );
 
  126   mItemsModel->clear();
 
  128   mPageCollection->clear();
 
  129   mUndoStack->stack()->clear();
 
  139   return mItemsModel.get();
 
  144   QList<QgsLayoutItem *> layoutItemList;
 
  146   const QList<QGraphicsItem *> graphicsItemList = selectedItems();
 
  147   for ( QGraphicsItem *item : graphicsItemList )
 
  150     if ( layoutItem && ( includeLockedItems || !layoutItem->
isLocked() ) )
 
  152       layoutItemList.push_back( layoutItem );
 
  156   return layoutItemList;
 
  175   const QList<QGraphicsItem *> selectedItemList = selectedItems();
 
  176   for ( QGraphicsItem *item : selectedItemList )
 
  180       layoutItem->setSelected( 
false );
 
  189   bool result = mItemsModel->reorderItemUp( item );
 
  190   if ( result && !deferUpdate )
 
  202   bool result = mItemsModel->reorderItemDown( item );
 
  203   if ( result && !deferUpdate )
 
  215   bool result = mItemsModel->reorderItemToTop( item );
 
  216   if ( result && !deferUpdate )
 
  228   bool result = mItemsModel->reorderItemToBottom( item );
 
  229   if ( result && !deferUpdate )
 
  240   QList<QgsLayoutItem *> itemList;
 
  244     if ( item->uuid() == uuid )
 
  246     else if ( includeTemplateUuids && item->mTemplateUuid == uuid )
 
  255   QList<QgsLayoutItem *> itemList;
 
  259     if ( item->mTemplateUuid == uuid )
 
  268   const QList<QGraphicsItem *> itemList = items();
 
  269   for ( QGraphicsItem *item : itemList )
 
  272     if ( layoutItem && layoutItem->
id() == id )
 
  284     if ( mf->uuid() == uuid )
 
  286     else if ( includeTemplateUuids && mf->mTemplateUuid == uuid )
 
  301   const QList<QGraphicsItem *> itemList = items( position, Qt::IntersectsItemShape, Qt::DescendingOrder );
 
  303   bool foundBelowItem = 
false;
 
  304   for ( QGraphicsItem *graphicsItem : itemList )
 
  308     if ( layoutItem && !paperItem )
 
  312       if ( ( ! belowItem || foundBelowItem ) && ( !ignoreLocked || !layoutItem->
isLocked() ) )
 
  318         if ( layoutItem == belowItem )
 
  321           foundBelowItem = 
true;
 
  361   return *mRenderContext;
 
  366   return *mRenderContext;
 
  371   return *mReportContext;
 
  376   return *mReportContext;
 
  382   mPageCollection->redraw();
 
  387   return mPageCollection->guides();
 
  392   return mPageCollection->guides();
 
  400   if ( mReportContext->
layer() )
 
  409   mCustomProperties.
setValue( key, value );
 
  411   if ( key.startsWith( QLatin1String( 
"variable" ) ) )
 
  417   return mCustomProperties.
value( key, defaultValue );
 
  422   mCustomProperties.
remove( key );
 
  427   return mCustomProperties.
keys();
 
  437   QList< QgsLayoutItemMap * > maps;
 
  440   double largestMapArea = 0;
 
  443     double area = map->rect().width() * map->rect().height();
 
  444     if ( area > largestMapArea )
 
  446       largestMapArea = area;
 
  455   mWorldFileMapId = map ? map->
uuid() : QString();
 
  461   return mPageCollection.get();
 
  466   return mPageCollection.get();
 
  475   const auto constItems = items();
 
  476   for ( 
const QGraphicsItem *item : constItems )
 
  483     if ( !isPage || !ignorePages )
 
  491         itemBounds = layoutItem->mapToScene( layoutItem->rect() ).boundingRect();
 
  494         itemBounds = item->sceneBoundingRect();
 
  496       if ( bounds.isValid() )
 
  497         bounds = bounds.united( itemBounds );
 
  503   if ( bounds.isValid() && margin > 0.0 )
 
  506     double maxWidth = mPageCollection->maximumPageWidth();
 
  507     bounds.adjust( -maxWidth * margin, -maxWidth * margin, maxWidth * margin, maxWidth * margin );
 
  520   const QList<QGraphicsItem *> itemList = items();
 
  521   for ( QGraphicsItem *item : itemList )
 
  526       if ( visibleOnly && !layoutItem->isVisible() )
 
  530       if ( bounds.isValid() )
 
  531         bounds = bounds.united( item->sceneBoundingRect() );
 
  533         bounds = item->sceneBoundingRect();
 
  542   addLayoutItemPrivate( item );
 
  546     undoText = tr( 
"Create %1" ).arg( metadata->visibleName() );
 
  550     undoText = tr( 
"Create Item" );
 
  552   if ( !mUndoStack->isBlocked() )
 
  558   std::unique_ptr< QgsLayoutItemDeleteUndoCommand > deleteCommand;
 
  559   if ( !mUndoStack->isBlocked() )
 
  561     mUndoStack->beginMacro( tr( 
"Delete Items" ) );
 
  564   removeLayoutItemPrivate( item );
 
  567     mUndoStack->push( deleteCommand.release() );
 
  568     mUndoStack->endMacro();
 
  577   if ( !mMultiFrames.contains( multiFrame ) )
 
  578     mMultiFrames << multiFrame;
 
  583   mMultiFrames.removeAll( multiFrame );
 
  593   QFile templateFile( path );
 
  594   if ( !templateFile.open( QIODevice::WriteOnly | QIODevice::Truncate ) )
 
  599   QDomDocument saveDocument;
 
  600   QDomElement elem = 
writeXml( saveDocument, context );
 
  601   saveDocument.appendChild( elem );
 
  603   if ( templateFile.write( saveDocument.toByteArray() ) == -1 )
 
  614   QList< QgsLayoutItem * > result;
 
  634   QDomNodeList itemsNodes = doc.elementsByTagName( QStringLiteral( 
"LayoutItem" ) );
 
  635   for ( 
int i = 0; i < itemsNodes.count(); ++i )
 
  637     QDomNode itemNode = itemsNodes.at( i );
 
  638     if ( itemNode.isElement() )
 
  640       itemNode.toElement().removeAttribute( QStringLiteral( 
"uuid" ) );
 
  643   QDomNodeList multiFrameNodes = doc.elementsByTagName( QStringLiteral( 
"LayoutMultiFrame" ) );
 
  644   for ( 
int i = 0; i < multiFrameNodes.count(); ++i )
 
  646     QDomNode multiFrameNode = multiFrameNodes.at( i );
 
  647     if ( multiFrameNode.isElement() )
 
  649       multiFrameNode.toElement().removeAttribute( QStringLiteral( 
"uuid" ) );
 
  650       QDomNodeList frameNodes = multiFrameNode.toElement().elementsByTagName( QStringLiteral( 
"childFrame" ) );
 
  651       QDomNode itemNode = frameNodes.at( i );
 
  652       if ( itemNode.isElement() )
 
  654         itemNode.toElement().removeAttribute( QStringLiteral( 
"uuid" ) );
 
  662     QDomElement layoutElem = doc.documentElement();
 
  663     if ( layoutElem.isNull() )
 
  668     bool loadOk = 
readXml( layoutElem, doc, context );
 
  688   return mUndoStack.get();
 
  693   return mUndoStack.get();
 
  708     void saveState( QDomDocument &stateDoc )
 const override 
  711       QDomElement documentElement = stateDoc.createElement( QStringLiteral( 
"UndoState" ) );
 
  713       stateDoc.appendChild( documentElement );
 
  723       mLayout->readXmlLayoutSettings( stateDoc.documentElement(), stateDoc, 
QgsReadWriteContext() );
 
  724       mLayout->project()->setDirty( 
true );
 
  740   if ( items.size() < 2 )
 
  746   mUndoStack->beginMacro( tr( 
"Group Items" ) );
 
  750     itemGroup->addItem( item );
 
  755   std::unique_ptr< QgsLayoutItemGroupUndoCommand > 
c( 
new QgsLayoutItemGroupUndoCommand( QgsLayoutItemGroupUndoCommand::Grouped, returnGroup, 
this, tr( 
"Group Items" ) ) );
 
  756   mUndoStack->push( 
c.release() );
 
  759   mUndoStack->endMacro();
 
  766   QList<QgsLayoutItem *> ungroupedItems;
 
  769     return ungroupedItems;
 
  772   mUndoStack->beginMacro( tr( 
"Ungroup Items" ) );
 
  775   std::unique_ptr< QgsLayoutItemGroupUndoCommand > 
c( 
new QgsLayoutItemGroupUndoCommand( QgsLayoutItemGroupUndoCommand::Ungrouped, group, 
this, tr( 
"Ungroup Items" ) ) );
 
  776   mUndoStack->push( 
c.release() );
 
  780   ungroupedItems = group->
items();
 
  784   mUndoStack->endMacro();
 
  786   return ungroupedItems;
 
  791   const QList< QGraphicsItem * > constItems = items();
 
  792   for ( 
const QGraphicsItem *item : constItems )
 
  798     if ( !layoutItem->
accept( visitor ) )
 
  806   mUndoStack->blockCommands( 
true );
 
  807   mPageCollection->beginPageSizeChange();
 
  809   mPageCollection->reflow();
 
  810   mPageCollection->endPageSizeChange();
 
  811   mUndoStack->blockCommands( 
false );
 
  815 void QgsLayout::writeXmlLayoutSettings( QDomElement &element, QDomDocument &document, 
const QgsReadWriteContext & )
 const 
  817   mCustomProperties.
writeXml( element, document );
 
  819   element.setAttribute( QStringLiteral( 
"worldFileMap" ), mWorldFileMapId );
 
  820   element.setAttribute( QStringLiteral( 
"printResolution" ), mRenderContext->
dpi() );
 
  825   QDomElement element = document.createElement( QStringLiteral( 
"Layout" ) );
 
  828     return object->writeXml( element, document, context );
 
  831   save( &mGridSettings );
 
  832   save( mPageCollection.get() );
 
  835   const QList<QGraphicsItem *> itemList = items();
 
  836   for ( 
const QGraphicsItem *graphicsItem : itemList )
 
  843       item->writeXml( element, document, context );
 
  850     if ( mf->frameCount() > 0 )
 
  851       mf->writeXml( element, document, context );
 
  854   writeXmlLayoutSettings( element, document, context );
 
  858 bool QgsLayout::readXmlLayoutSettings( 
const QDomElement &layoutElement, 
const QDomDocument &, 
const QgsReadWriteContext & )
 
  860   mCustomProperties.
readXml( layoutElement );
 
  862   mWorldFileMapId = layoutElement.attribute( QStringLiteral( 
"worldFileMap" ) );
 
  863   mRenderContext->
setDpi( layoutElement.attribute( QStringLiteral( 
"printResolution" ), QStringLiteral( 
"300" ) ).toDouble() );
 
  873   mItemsModel->rebuildZList();
 
  878 void QgsLayout::removeLayoutItemPrivate( 
QgsLayoutItem *item )
 
  880   mItemsModel->setItemRemoved( item );
 
  887   emit itemRemoved( item );
 
  893 void QgsLayout::deleteAndRemoveMultiFrames()
 
  895   qDeleteAll( mMultiFrames );
 
  896   mMultiFrames.clear();
 
  899 QPointF QgsLayout::minPointFromXml( 
const QDomElement &elem )
 const 
  901   double minX = std::numeric_limits<double>::max();
 
  902   double minY = std::numeric_limits<double>::max();
 
  903   const QDomNodeList itemList = elem.elementsByTagName( QStringLiteral( 
"LayoutItem" ) );
 
  905   for ( 
int i = 0; i < itemList.size(); ++i )
 
  907     const QDomElement currentItemElem = itemList.at( i ).toElement();
 
  912     minX = std::min( minX, layoutPoint.x() );
 
  913     minY = std::min( minY, layoutPoint.y() );
 
  916   return found ? QPointF( minX, minY ) : QPointF( 0, 0 );
 
  921   int counter = mItemsModel->zOrderListSize();
 
  922   const QList<QgsLayoutItem *> zOrderList = mItemsModel->zOrderList();
 
  924   if ( addUndoCommands )
 
  926     mUndoStack->beginMacro( tr( 
"Change Item Stacking" ) );
 
  932       if ( addUndoCommands )
 
  934         mUndoStack->beginCommand( currentItem, QString() );
 
  936       currentItem->setZValue( counter );
 
  937       if ( addUndoCommands )
 
  939         mUndoStack->endCommand();
 
  944   if ( addUndoCommands )
 
  946     mUndoStack->endMacro();
 
  952   if ( layoutElement.nodeName() != QLatin1String( 
"Layout" ) )
 
  959     return object->readXml( layoutElement, document, context );
 
  962   std::unique_ptr< QgsScopedRuntimeProfile > profile;
 
  964     profile = std::make_unique< QgsScopedRuntimeProfile >( tr( 
"Read layout settings" ), QStringLiteral( 
"projectload" ) );
 
  966   blockSignals( 
true ); 
 
  967   readXmlLayoutSettings( layoutElement, document, context );
 
  968   blockSignals( 
false );
 
  971     profile->switchTask( tr( 
"Load pages" ) );
 
  972   restore( mPageCollection.get() );
 
  974     profile->switchTask( tr( 
"Load snapping settings" ) );
 
  975   restore( &mSnapper );
 
  977     profile->switchTask( tr( 
"Load grid settings" ) );
 
  978   restore( &mGridSettings );
 
  981     profile->switchTask( tr( 
"Restore items" ) );
 
  991   QList< QgsLayoutItem * > newItems;
 
  992   QList< QgsLayoutMultiFrame * > newMultiFrames;
 
  997   int zOrderOffset = mItemsModel->zOrderListSize();
 
  999   QPointF pasteShiftPos;
 
 1000   int pageNumber = -1;
 
 1006     QPointF minItemPos = minPointFromXml( parentElement );
 
 1009     pasteShiftPos = *position - minItemPos;
 
 1012       pageNumber = mPageCollection->pageNumberForPoint( *position );
 
 1016   std::unique_ptr< QgsScopedRuntimeProfile > profile;
 
 1018     profile = std::make_unique< QgsScopedRuntimeProfile >( tr( 
"Read items" ), QStringLiteral( 
"projectload" ) );
 
 1023   const QDomNodeList multiFrameList = parentElement.elementsByTagName( QStringLiteral( 
"LayoutMultiFrame" ) );
 
 1024   for ( 
int i = 0; i < multiFrameList.size(); ++i )
 
 1026     const QDomElement multiFrameElem = multiFrameList.at( i ).toElement();
 
 1027     const int itemType = multiFrameElem.attribute( QStringLiteral( 
"type" ) ).toInt();
 
 1033         profile->switchTask( tr( 
"Load %1" ).arg( metadata->visibleName() ) );
 
 1043     mf->readXml( multiFrameElem, document, context );
 
 1046     mf->setCreateUndoCommands( 
true );
 
 1061     newMultiFrames << m;
 
 1064   const QDomNodeList layoutItemList = parentElement.childNodes();
 
 1065   for ( 
int i = 0; i < layoutItemList.size(); ++i )
 
 1067     const QDomElement currentItemElem = layoutItemList.at( i ).toElement();
 
 1068     if ( currentItemElem.nodeName() != QLatin1String( 
"LayoutItem" ) )
 
 1071     const int itemType = currentItemElem.attribute( QStringLiteral( 
"type" ) ).toInt();
 
 1077         profile->switchTask( tr( 
"Load %1" ).arg( metadata->visibleName() ) );
 
 1088     item->readXml( currentItemElem, document, context );
 
 1094         item->attemptMove( posOnPage, 
true, 
false, pageNumber );
 
 1098         item->attemptMoveBy( pasteShiftPos.x(), pasteShiftPos.y() );
 
 1104     layoutItem->setZValue( layoutItem->zValue() + zOrderOffset );
 
 1105     newItems << layoutItem;
 
 1112   std::unique_ptr< QgsScopedRuntimeProfile > itemProfile;
 
 1115     profile->switchTask( tr( 
"Finalize restore" ) );
 
 1120       itemProfile = std::make_unique< QgsScopedRuntimeProfile >( item->
displayName(), QStringLiteral( 
"projectload" ) );
 
 1123       itemProfile.reset();
 
 1128       itemProfile = std::make_unique< QgsScopedRuntimeProfile >( mf->displayName(), QStringLiteral( 
"projectload" ) );
 
 1129     mf->finalizeRestoreFromXml();
 
 1131       itemProfile.reset();
 
 1136     item->mTemplateUuid.clear();
 
 1140     mf->mTemplateUuid.clear();
 
 1148     profile->switchTask( tr( 
"Update model" ) );
 
 1149   mItemsModel->rebuildZList();
 
 1159 void QgsLayout::itemBackgroundTaskCountChanged( 
int count )
 
 1161   QgsLayoutItem *item = qobject_cast<QgsLayoutItem *>( sender() );
 
 1166     mBackgroundTaskCount.insert( item, count );
 
 1168     mBackgroundTaskCount.remove( item );
 
 1172   for ( 
auto it = mBackgroundTaskCount.constBegin(); it != mBackgroundTaskCount.constEnd(); ++it )
 
 1174     total += it.value();
 
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).
QList< QgsLayoutItem * > items() const
Returns a list of items contained by the group.
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...
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, QgsUnitTypes::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...
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.
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.
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.
QgsLayoutItem * layoutItemAt(QPointF position, bool ignoreLocked=false) const
Returns the topmost layout item at a specified position.
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.
friend class QgsLayoutModel
QList< QgsLayoutItem * > loadFromTemplate(const QDomDocument &document, const QgsReadWriteContext &context, bool clearExisting=true, bool *ok=nullptr)
Load a layout template document.
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 setUnits(QgsUnitTypes::LayoutUnit units)
Sets the native measurement units for 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.
QgsLayoutMeasurement convertFromLayoutUnits(double length, QgsUnitTypes::LayoutUnit unit) const
Converts a length measurement from the layout's native units to a specified target unit.
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.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
void setDirty(bool b=true)
Flag the project as dirty (modified).
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.
An interface for classes which can visit style entity (e.g.
LayoutUnit
Layout measurement units.
@ LayoutMillimeters
Millimeters.
static Q_INVOKABLE QString encodeUnit(QgsUnitTypes::DistanceUnit unit)
Encodes a distance unit to a string.
static Q_INVOKABLE QgsUnitTypes::LayoutUnit decodeLayoutUnit(const QString &string, bool *ok=nullptr)
Decodes a layout unit from 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.