30 #include "qgssettings.h" 
   41 #include <QDesktopWidget> 
   46 #define MIN_VIEW_SCALE 0.05 
   47 #define MAX_VIEW_SCALE 1000.0 
   50   : QGraphicsView( parent )
 
   52   setResizeAnchor( QGraphicsView::AnchorViewCenter );
 
   53   setMouseTracking( 
true );
 
   54   viewport()->setMouseTracking( 
true );
 
   60   viewport()->setStyleSheet( QStringLiteral( 
"background-color:#d7d7d7;" ) );
 
   67   viewport()->setGraphicsEffect( mPreviewEffect );
 
   79   return qobject_cast<QgsLayout *>( scene() );
 
   84   return qobject_cast<const QgsLayout *>( scene() );
 
   98   mSnapMarker = 
new QgsLayoutViewSnapMarker();
 
  100   layout->addItem( mSnapMarker );
 
  101   mHorizontalSnapLine = createSnapLine();
 
  102   mHorizontalSnapLine->hide();
 
  103   layout->addItem( mHorizontalSnapLine );
 
  104   mVerticalSnapLine = createSnapLine();
 
  105   mVerticalSnapLine->hide();
 
  106   layout->addItem( mVerticalSnapLine );
 
  107   mSectionLabel = 
nullptr;
 
  109   if ( mHorizontalRuler )
 
  111     connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } );
 
  112     connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } );
 
  113     connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } );
 
  114     connect( &layout->
guides(), &QAbstractItemModel::modelReset, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } );
 
  116   if ( mVerticalRuler )
 
  118     connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mVerticalRuler, [ = ] { mVerticalRuler->update(); } );
 
  119     connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mVerticalRuler, [ = ] { mVerticalRuler->update(); } );
 
  120     connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mVerticalRuler, [ = ] { mVerticalRuler->update(); } );
 
  121     connect( &layout->
guides(), &QAbstractItemModel::modelReset, mVerticalRuler, [ = ] { mVerticalRuler->update(); } );
 
  146   if ( mHorizontalSnapLine )
 
  147     mHorizontalSnapLine->hide();
 
  148   if ( mVerticalSnapLine )
 
  149     mVerticalSnapLine->hide();
 
  161   if ( mTool && mTool == 
tool )
 
  165     setCursor( Qt::ArrowCursor );
 
  171   mPreviewEffect->setEnabled( enabled );
 
  176   return mPreviewEffect->isEnabled();
 
  181   mPreviewEffect->
setMode( mode );
 
  186   return mPreviewEffect->
mode();
 
  191   double currentScale = transform().m11();
 
  192   scale *= currentScale;
 
  194   setTransform( QTransform::fromScale( scale, scale ) );
 
  206     setTransform( QTransform::fromScale( level, level ) );
 
  210     double dpi = QgsApplication::desktop()->logicalDpiX();
 
  212     if ( ( dpi < 60 ) || ( dpi > 1200 ) )
 
  218     setTransform( QTransform::fromScale( mmLevel, mmLevel ) );
 
  226   mHorizontalRuler = ruler;
 
  230     connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [ = ] { mHorizontalRuler->update(); } );
 
  231     connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [ = ] { mHorizontalRuler->update(); } );
 
  232     connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [ = ] { mHorizontalRuler->update(); } );
 
  233     connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [ = ] { mHorizontalRuler->update(); } );
 
  240   mVerticalRuler = ruler;
 
  244     connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [ = ] { mVerticalRuler->update(); } );
 
  245     connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [ = ] { mVerticalRuler->update(); } );
 
  246     connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [ = ] { mVerticalRuler->update(); } );
 
  247     connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [ = ] { mVerticalRuler->update(); } );
 
  254   mMenuProvider.reset( provider );
 
  259   return mMenuProvider.get();
 
  265     return QList< QgsLayoutItemPage *>();
 
  268   QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
 
  269   QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
 
  276     return QList< int >();
 
  279   QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
 
  280   QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
 
  323   QDomElement documentElement = doc.createElement( QStringLiteral( 
"LayoutItemClipboard" ) );
 
  327   QSet< QgsLayoutMultiFrame * > copiedMultiFrames;
 
  334       const QList<QgsLayoutItem *> groupedItems = itemGroup->items();
 
  337         groupedItem->writeXml( documentElement, doc, context );
 
  340     else if ( 
QgsLayoutFrame *frame = qobject_cast<QgsLayoutFrame *>( item ) )
 
  343       if ( frame->multiFrame() && !copiedMultiFrames.contains( frame->multiFrame() ) )
 
  345         frame->multiFrame()->writeXml( documentElement, doc, context );
 
  346         copiedMultiFrames.insert( frame->multiFrame() );
 
  349     item->writeXml( documentElement, doc, context );
 
  353   doc.appendChild( documentElement );
 
  361   QDomNodeList itemsNodes = doc.elementsByTagName( QStringLiteral( 
"LayoutItem" ) );
 
  362   for ( 
int i = 0; i < itemsNodes.count(); ++i )
 
  364     QDomNode itemNode = itemsNodes.at( i );
 
  365     if ( itemNode.isElement() )
 
  367       itemNode.toElement().removeAttribute( QStringLiteral( 
"uuid" ) );
 
  368       itemNode.toElement().removeAttribute( QStringLiteral( 
"groupUuid" ) );
 
  371   QDomNodeList multiFrameNodes = doc.elementsByTagName( QStringLiteral( 
"LayoutMultiFrame" ) );
 
  372   for ( 
int i = 0; i < multiFrameNodes.count(); ++i )
 
  374     QDomNode multiFrameNode = multiFrameNodes.at( i );
 
  375     if ( multiFrameNode.isElement() )
 
  377       multiFrameNode.toElement().removeAttribute( QStringLiteral( 
"uuid" ) );
 
  378       QDomNodeList frameNodes = multiFrameNode.toElement().elementsByTagName( QStringLiteral( 
"childFrame" ) );
 
  379       for ( 
int j = 0; j < frameNodes.count(); ++j )
 
  381         QDomNode itemNode = frameNodes.at( j );
 
  382         if ( itemNode.isElement() )
 
  384           itemNode.toElement().removeAttribute( QStringLiteral( 
"uuid" ) );
 
  390   QMimeData *mimeData = 
new QMimeData;
 
  391   mimeData->setData( QStringLiteral( 
"text/xml" ), doc.toByteArray() );
 
  392   QClipboard *clipboard = QApplication::clipboard();
 
  393   clipboard->setMimeData( mimeData );
 
  399     return QList< QgsLayoutItem * >();
 
  401   QList< QgsLayoutItem * > pastedItems;
 
  403   QClipboard *clipboard = QApplication::clipboard();
 
  404   if ( doc.setContent( clipboard->mimeData()->data( QStringLiteral( 
"text/xml" ) ) ) )
 
  406     QDomElement docElem = doc.documentElement();
 
  407     if ( docElem.tagName() == QLatin1String( 
"LayoutItemClipboard" ) )
 
  416           pt = mapToScene( mapFromGlobal( QCursor::pos() ) );
 
  422           pt = mapToScene( viewport()->rect().center() );
 
  440     return QList<QgsLayoutItem *>();
 
  442   QList< QgsLayoutItem * > pastedItems;
 
  444   QClipboard *clipboard = QApplication::clipboard();
 
  445   if ( doc.setContent( clipboard->mimeData()->data( QStringLiteral( 
"text/xml" ) ) ) )
 
  447     QDomElement docElem = doc.documentElement();
 
  448     if ( docElem.tagName() == QLatin1String( 
"LayoutItemClipboard" ) )
 
  463   QClipboard *clipboard = QApplication::clipboard();
 
  464   if ( doc.setContent( clipboard->mimeData()->data( QStringLiteral( 
"text/xml" ) ) ) )
 
  466     QDomElement docElem = doc.documentElement();
 
  467     if ( docElem.tagName() == QLatin1String( 
"LayoutItemClipboard" ) )
 
  476   double increment = 1.0;
 
  477   if ( event->modifiers() & Qt::ShiftModifier )
 
  482   else if ( event->modifiers() & Qt::AltModifier )
 
  485     double viewScale = transform().m11();
 
  488       increment = 1 / viewScale;
 
  494   switch ( event->key() )
 
  512   return QPointF( deltaX, deltaY );
 
  517   mPaintingEnabled = enabled;
 
  527   if ( !mSectionLabel )
 
  529     mSectionLabel = 
new QgsLayoutReportSectionLabel( 
currentLayout(), 
this );
 
  531     mSectionLabel->setRect( 0, -200, 1000, 200 );
 
  532     mSectionLabel->setZValue( -1 );
 
  534   mSectionLabel->setLabel( label );
 
  542   fitInView( scene()->sceneRect(), Qt::KeepAspectRatio );
 
  553   QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
 
  554   QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
 
  556   double verticalCenter = ( visibleRect.top() + visibleRect.bottom() ) / 2.0;
 
  561   const double tinyHeight = 0.01;
 
  562   QRectF targetRect( scene()->sceneRect().left(),
 
  563                      verticalCenter - tinyHeight,
 
  564                      scene()->sceneRect().width(),
 
  567   fitInView( targetRect, Qt::KeepAspectRatio );
 
  601   const QList<QGraphicsItem *> itemList = 
currentLayout()->items();
 
  602   for ( QGraphicsItem *graphicsItem : itemList )
 
  606     if ( item && !paperItem )
 
  643   const QList<QGraphicsItem *> itemList = 
currentLayout()->items();
 
  644   for ( QGraphicsItem *graphicsItem : itemList )
 
  648     if ( item && !paperItem )
 
  651       if ( item->isSelected() || item->
isLocked() )
 
  675   if ( !selectedItems.isEmpty() )
 
  677     previousSelectedItem = selectedItems.at( 0 );
 
  680   if ( !previousSelectedItem )
 
  688     selectedItem = layout->
itemsModel()->findItemBelow( previousSelectedItem );
 
  690     selectedItem = layout->
itemsModel()->findItemAbove( previousSelectedItem );
 
  717   bool itemsRaised = 
false;
 
  740   bool itemsLowered = 
false;
 
  763   bool itemsRaised = 
false;
 
  786   bool itemsLowered = 
false;
 
  812     item->setLocked( 
true );
 
  832   const QList<QGraphicsItem *> itemList = 
currentLayout()->items();
 
  833   for ( QGraphicsItem *graphicItem : itemList )
 
  907   QList< QgsLayoutItem * > ungroupedItems;
 
  919   if ( !ungroupedItems.empty() )
 
  921     for ( 
QgsLayoutItem *item : std::as_const( ungroupedItems ) )
 
  935     mSnapMarker->setVisible( 
false );
 
  940     mTool->layoutPressEvent( me.get() );
 
  941     event->setAccepted( me->isAccepted() );
 
  944   if ( !mTool || !event->isAccepted() )
 
  946     if ( event->button() == Qt::MiddleButton )
 
  949       setTool( mMidMouseButtonPanTool );
 
  952     else if ( event->button() == Qt::RightButton && mMenuProvider )
 
  954       QMenu *menu = mMenuProvider->createContextMenu( 
this, 
currentLayout(), mapToScene( event->pos() ) );
 
  957         menu->exec( event->globalPos() );
 
  963       QGraphicsView::mousePressEvent( event );
 
  976     mTool->layoutReleaseEvent( me.get() );
 
  977     event->setAccepted( me->isAccepted() );
 
  980   if ( !mTool || !event->isAccepted() )
 
  981     QGraphicsView::mouseReleaseEvent( event );
 
  989   mMouseCurrentXY = 
event->pos();
 
  991   QPointF cursorPos = mapToScene( mMouseCurrentXY );
 
  997       me->snapPoint( mHorizontalSnapLine, mVerticalSnapLine, mTool->ignoredSnapItems() );
 
 1002       if ( me->isSnapped() )
 
 1004         cursorPos = me->snappedPoint();
 
 1007           mSnapMarker->setPos( me->snappedPoint() );
 
 1008           mSnapMarker->setVisible( 
true );
 
 1011       else if ( mSnapMarker )
 
 1013         mSnapMarker->setVisible( 
false );
 
 1016     mTool->layoutMoveEvent( me.get() );
 
 1017     event->setAccepted( me->isAccepted() );
 
 1023   if ( !mTool || !event->isAccepted() )
 
 1024     QGraphicsView::mouseMoveEvent( event );
 
 1035     mTool->layoutDoubleClickEvent( me.get() );
 
 1036     event->setAccepted( me->isAccepted() );
 
 1039   if ( !mTool || !event->isAccepted() )
 
 1040     QGraphicsView::mouseDoubleClickEvent( event );
 
 1050     mTool->wheelEvent( event );
 
 1053   if ( !mTool || !event->isAccepted() )
 
 1067     mTool->keyPressEvent( event );
 
 1070   if ( mTool && event->isAccepted() )
 
 1073   if ( event->key() == Qt::Key_Space && ! event->isAutoRepeat() )
 
 1075     if ( !( event->modifiers() & Qt::ControlModifier ) )
 
 1087   else if ( event->key() == Qt::Key_Left
 
 1088             || event->key() == Qt::Key_Right
 
 1089             || event->key() == Qt::Key_Up
 
 1090             || event->key() == Qt::Key_Down )
 
 1101       item->attemptMoveBy( delta.x(), delta.y() );
 
 1116     mTool->keyReleaseEvent( event );
 
 1119   if ( !mTool || !event->isAccepted() )
 
 1120     QGraphicsView::keyReleaseEvent( event );
 
 1125   QGraphicsView::resizeEvent( event );
 
 1132   QGraphicsView::scrollContentsBy( dx, dy );
 
 1146   if ( mPaintingEnabled )
 
 1148     QGraphicsView::paintEvent( event );
 
 1157 void QgsLayoutView::invalidateCachedRenders()
 
 1163   QList< QgsLayoutItem *> items;
 
 1168     item->invalidateCache();
 
 1174   if ( mHorizontalRuler )
 
 1178   if ( mVerticalRuler )
 
 1184   QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
 
 1185   QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
 
 1186   QPointF centerVisible = visibleRect.center();
 
 1191     if ( newPage != mCurrentPage )
 
 1193       mCurrentPage = newPage;
 
 1204 void QgsLayoutView::wheelZoom( QWheelEvent *event )
 
 1207   QgsSettings settings;
 
 1208   double zoomFactor = settings.value( QStringLiteral( 
"qgis/zoom_factor" ), 2 ).toDouble();
 
 1211   zoomFactor = 1.0 + ( zoomFactor - 1.0 ) / 120.0 * std::fabs( event->angleDelta().y() );
 
 1213   if ( event->modifiers() & Qt::ControlModifier )
 
 1216     zoomFactor = 1.0 + ( zoomFactor - 1.0 ) / 20.0;
 
 1220   bool zoomIn = 
event->angleDelta().y() > 0;
 
 1221   double scaleFactor = ( 
zoomIn ? 1 / zoomFactor : zoomFactor );
 
 1224   QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
 
 1228   QPointF scenePoint = mapToScene( event->pos() );
 
 1232   QgsPointXY newCenter( scenePoint.x() + ( ( oldCenter.x() - scenePoint.x() ) * scaleFactor ),
 
 1233                         scenePoint.y() + ( ( oldCenter.y() - scenePoint.y() ) * scaleFactor ) );
 
 1234   centerOn( newCenter.x(), newCenter.y() );
 
 1247 QGraphicsLineItem *QgsLayoutView::createSnapLine()
 const 
 1249   std::unique_ptr< QGraphicsLineItem>  item( 
new QGraphicsLineItem( 
nullptr ) );
 
 1250   QPen pen = QPen( QColor( Qt::blue ) );
 
 1251   pen.setStyle( Qt::DotLine );
 
 1252   pen.setWidthF( 0.0 );
 
 1253   item->setPen( pen );
 
 1255   return item.release();
 
 1263 QgsLayoutViewSnapMarker::QgsLayoutViewSnapMarker()
 
 1264   : QGraphicsRectItem( QRectF( 0, 0, 0, 0 ) )
 
 1267   QFontMetrics fm( f );
 
 1268   mSize = fm.horizontalAdvance( 
'X' );
 
 1269   setPen( QPen( Qt::transparent, mSize ) );
 
 1271   setFlags( flags() | QGraphicsItem::ItemIgnoresTransformations );
 
 1275 void QgsLayoutViewSnapMarker::paint( QPainter *p, 
const QStyleOptionGraphicsItem *, QWidget * )
 
 1277   QPen pen( QColor( 255, 0, 0 ) );
 
 1280   p->setBrush( Qt::NoBrush );
 
 1282   double halfSize = mSize / 2.0;
 
 1283   p->drawLine( QLineF( -halfSize, -halfSize, halfSize, halfSize ) );
 
 1284   p->drawLine( QLineF( -halfSize, halfSize, halfSize, -halfSize ) );
 
Alignment
Alignment options.
static void alignItems(QgsLayout *layout, const QList< QgsLayoutItem * > &items, Alignment alignment)
Aligns a set of items from a layout in place.
static void distributeItems(QgsLayout *layout, const QList< QgsLayoutItem * > &items, Distribution distribution)
Distributes a set of items from a layout in place.
static void resizeItems(QgsLayout *layout, const QList< QgsLayoutItem * > &items, Resize resize)
Resizes a set of items from a layout in place.
Distribution
Distribution options.
Base class for frame items, which form a layout multiframe item.
A container for grouping several QgsLayoutItems.
Item representing the paper in a layout.
@ LayoutGroup
Grouped item.
Base class for graphical items within a QgsLayout.
@ UndoIncrementalMove
Layout item incremental movement, e.g. as a result of a keypress.
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.
void setLocked(bool locked)
Sets whether the item is locked, preventing mouse interactions with the item.
double length() const
Returns the length of the measurement.
QList< int > visiblePageNumbers(const QRectF ®ion) const
Returns a list of the page numbers which are visible within the specified region (in layout coordinat...
void changed()
Emitted when pages are added or removed from the collection.
int pageNumberForPoint(QPointF point) const
Returns the page number corresponding to a point in the layout (in layout units).
QList< QgsLayoutItemPage * > visiblePages(const QRectF ®ion) const
Returns a list of the pages which are visible within the specified region (in layout coordinates).
A custom ruler widget for use with QgsLayoutView, displaying the current zoom and position of the vis...
void setSceneTransform(const QTransform &transform)
Sets the current scene transform.
void setLayoutView(QgsLayoutView *view)
Sets the current layout view to synchronize the ruler with.
void endCommand()
Saves final state of an object and pushes the active command to the undo history.
void beginMacro(const QString &commandText)
Starts a macro command, with the given descriptive commandText.
void beginCommand(QgsLayoutUndoObjectInterface *object, const QString &commandText, int id=0)
Begins a new undo command for the specified object.
void endMacro()
Ends a macro command.
A QgsLayoutViewMouseEvent is the result of a user interaction with the mouse on a QgsLayoutView.
void alignSelectedItems(QgsLayoutAligner::Alignment alignment)
Aligns all selected items using the specified alignment.
void zoomFull()
Zooms the view to the full extent of the layout.
void selectNextItemBelow()
Selects the next item below the existing selection, by item z order.
QgsLayoutView(QWidget *parent=nullptr)
Constructor for QgsLayoutView.
void moveSelectedItemsToBottom()
Lowers the selected items to the bottom of the z-order.
void pushStatusMessage(const QString &message)
Pushes a new status bar message to the view.
void viewChanged()
Updates associated rulers and other widgets after view extent or zoom has changed.
void cursorPosChanged(QPointF layoutPoint)
Emitted when the mouse cursor coordinates change within the view.
@ PasteModeCenter
Paste items in center of view.
@ PasteModeInPlace
Paste items in place.
@ PasteModeCursor
Paste items at cursor position.
void unlockAllItems()
Unlocks all locked items in the layout.
void deleteSelectedItems()
Deletes all selected items.
void mouseMoveEvent(QMouseEvent *event) override
QgsLayout * currentLayout
void setMenuProvider(QgsLayoutViewMenuProvider *provider)
Sets a provider for context menus.
void dragEnterEvent(QDragEnterEvent *e) override
void resizeEvent(QResizeEvent *event) override
void lowerSelectedItems()
Lowers the selected items down the z-order.
void setPaintingEnabled(bool enabled)
Sets whether widget repainting should be allowed for the view.
void mouseReleaseEvent(QMouseEvent *event) override
QgsPreviewEffect::PreviewMode previewMode() const
Returns the preview mode which may be used to modify the view's appearance.
void lockSelectedItems()
Locks any selected items, preventing them from being interacted with by mouse interactions.
void setSectionLabel(const QString &label)
Sets a section label, to display above the first page shown in the view.
void resizeSelectedItems(QgsLayoutAligner::Resize resize)
Resizes all selected items using the specified resize mode.
void setTool(QgsLayoutViewTool *tool)
Sets the tool currently being used in the view.
void zoomLevelChanged()
Emitted whenever the zoom level of the view is changed.
void deleteItems(const QList< QgsLayoutItem * > &items)
Delete the specified items.
void selectAll()
Selects all items in the view.
QList< QgsLayoutItem * > pasteItems(PasteMode mode)
Pastes items from clipboard, using the specified mode.
void willBeDeleted()
Emitted in the destructor when the view is about to be deleted, but is still in a perfectly valid sta...
QPointF deltaForKeyEvent(QKeyEvent *event)
Returns the delta (in layout coordinates) by which to move items for the given key event.
void setHorizontalRuler(QgsLayoutRuler *ruler)
Sets a horizontal ruler to synchronize with the view state.
~QgsLayoutView() override
void setPreviewMode(QgsPreviewEffect::PreviewMode mode)
Sets the preview mode which should be used to modify the view's appearance.
void deselectAll()
Deselects all items in the view.
void keyPressEvent(QKeyEvent *event) override
void zoomWidth()
Zooms the view to the full width of the layout.
void raiseSelectedItems()
Raises the selected items up the z-order.
void statusMessage(const QString &message)
Emitted when the view has a message for display in a parent window's status bar.
void itemFocused(QgsLayoutItem *item)
Emitted when an item is "focused" in the view, i.e.
void selectNextItemAbove()
Selects the next item above the existing selection, by item z order.
void moveSelectedItemsToTop()
Raises the selected items to the top of the z-order.
bool hasItemsInClipboard() const
Returns true if the current clipboard contains layout items.
void zoomActual()
Zooms to the actual size of the layout.
void setPreviewModeEnabled(bool enabled)
Sets whether a preview effect should be used to alter the view's appearance.
void layoutSet(QgsLayout *layout)
Emitted when a layout is set for the view.
void setCurrentLayout(QgsLayout *layout)
Sets the current layout to edit in the view.
void wheelEvent(QWheelEvent *event) override
ClipboardOperation
Clipboard operations.
void ungroupSelectedItems()
Ungroups all selected items.
void emitZoomLevelChanged()
Emits the zoomLevelChanged() signal.
bool previewModeEnabled() const
Returns true if a preview effect is being used to alter the view's appearance.
void zoomOut()
Zooms out of the view by a preset amount.
void setVerticalRuler(QgsLayoutRuler *ruler)
Sets a vertical ruler to synchronize with the view state.
QList< QgsLayoutItemPage * > visiblePages() const
Returns a list of page items which are currently visible in the view.
void copyItems(const QList< QgsLayoutItem * > &items, ClipboardOperation operation)
Cuts or copies the a list of items, respecting the specified operation.
void setZoomLevel(double level)
Sets the zoom level for the view, where a zoom level of 1.0 corresponds to 100%.
void distributeSelectedItems(QgsLayoutAligner::Distribution distribution)
Distributes all selected items using the specified distribution.
void unsetTool(QgsLayoutViewTool *tool)
Unsets the current view tool, if it matches the specified tool.
void invertSelection()
Inverts the current selection, selecting deselected items and deselecting and selected items.
void toolSet(QgsLayoutViewTool *tool)
Emitted when the current tool is changed.
void mouseDoubleClickEvent(QMouseEvent *event) override
void scaleSafe(double scale)
Scales the view in a safe way, by limiting the acceptable range of the scale applied.
void pageChanged(int page)
Emitted when the page visible in the view is changed.
void scrollContentsBy(int dx, int dy) override
void copySelectedItems(ClipboardOperation operation)
Cuts or copies the selected items, respecting the specified operation.
void zoomIn()
Zooms in to the view by a preset amount.
void paintEvent(QPaintEvent *event) override
void keyReleaseEvent(QKeyEvent *event) override
QgsLayoutViewMenuProvider * menuProvider() const
Returns the provider for context menus.
QList< int > visiblePageNumbers() const
Returns a list of page numbers for pages which are currently visible in the view.
void groupSelectedItems()
Groups all selected items.
void mousePressEvent(QMouseEvent *event) override
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
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 layoutItems(QList< T * > &itemList) const
Returns a list of layout items of a specific type.
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.
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.
bool lowerItem(QgsLayoutItem *item, bool deferUpdate=false)
Lowers an item down the z-order.
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.
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.
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 updateZValues(bool addUndoCommands=true)
Resets the z-values of items based on their position in the internal z order list.
@ ZSmartGuide
Z-value for smart (item bounds based) guides.
@ ZSnapIndicator
Z-value for snapping indicator.
QgsProject * project() const
The project associated with the layout.
QgsLayoutUndoStack * undoStack()
Returns a pointer to the layout's undo stack, which manages undo/redo states for the layout and it's ...
A class to represent a 2D point.
A graphics effect which can be applied to a widget to simulate various printing and color blindness m...
void setMode(PreviewMode mode)
Sets the mode for the preview effect, which controls how the effect modifies a widgets appearance.
PreviewMode mode() const
Returns the mode used for the preview effect.
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.
A rectangle specified with double values.
QgsPointXY center() const SIP_HOLDGIL
Returns the center point of the rectangle.
@ LayoutMillimeters
Millimeters.
void selectNextByZOrder(QgsLayout *layout, bool above)