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  auto 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" ) );
 
  771  auto itemGroup = std::make_unique<QgsLayoutItemGroup>( 
this );
 
  774    itemGroup->addItem( item );
 
  779  auto c = std::make_unique<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  auto c = std::make_unique<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.
 
Provides a method of storing measurements for use in QGIS layouts using a variety of different measur...
 
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.
 
Provides a method of storing points, consisting of an x and y coordinate, for use in QGIS layouts.
 
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.
 
Provides a method of storing sizes, consisting of a width and height, for use in QGIS layouts.
 
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.
 
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.
 
Describes 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.
 
A container for the context for various read/write operations on 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.