QgsLayoutSize QgsLayoutFrame::fixedSize() const { if ( !mMultiFrame ) return QgsLayoutSize(); //calculate index of frame int frameIndex = mMultiFrame->frameIndex( const_cast< QgsLayoutFrame * >( this ) ); //check fixed size return QgsLayoutSize( mMultiFrame->fixedFrameSize( frameIndex ), QgsUnitTypes::LayoutMillimeters ); }
QgsLayoutItemPropertiesDialog::QgsLayoutItemPropertiesDialog( QWidget *parent, Qt::WindowFlags flags ) : QDialog( parent, flags ) { setupUi( this ); QgsGui::instance()->enableAutoGeometryRestore( this ); //make button exclusive QButtonGroup *buttonGroup = new QButtonGroup( this ); buttonGroup->addButton( mUpperLeftRadioButton ); buttonGroup->addButton( mUpperMiddleRadioButton ); buttonGroup->addButton( mUpperRightRadioButton ); buttonGroup->addButton( mMiddleLeftRadioButton ); buttonGroup->addButton( mMiddleRadioButton ); buttonGroup->addButton( mMiddleRightRadioButton ); buttonGroup->addButton( mLowerLeftRadioButton ); buttonGroup->addButton( mLowerMiddleRadioButton ); buttonGroup->addButton( mLowerRightRadioButton ); buttonGroup->setExclusive( true ); QgsSettings settings; double lastWidth = settings.value( QStringLiteral( "LayoutDesigner/lastItemWidth" ), QStringLiteral( "50" ) ).toDouble(); double lastHeight = settings.value( QStringLiteral( "LayoutDesigner/lastItemHeight" ), QStringLiteral( "50" ) ).toDouble(); QgsUnitTypes::LayoutUnit lastSizeUnit = settings.enumValue( QStringLiteral( "LayoutDesigner/lastSizeUnit" ), QgsUnitTypes::LayoutMillimeters ); setItemSize( QgsLayoutSize( lastWidth, lastHeight, lastSizeUnit ) ); mPosUnitsComboBox->linkToWidget( mXPosSpin ); mPosUnitsComboBox->linkToWidget( mYPosSpin ); mSizeUnitsComboBox->linkToWidget( mWidthSpin ); mSizeUnitsComboBox->linkToWidget( mHeightSpin ); mLockAspectRatio->setWidthSpinBox( mWidthSpin ); mLockAspectRatio->setHeightSpinBox( mHeightSpin ); }
void QgsLayout::initializeDefaults() { // default to a A4 landscape page QgsLayoutItemPage *page = new QgsLayoutItemPage( this ); page->setPageSize( QgsLayoutSize( 297, 210, QgsUnitTypes::LayoutMillimeters ) ); mPageCollection->addPage( page ); }
QSizeF QgsLayoutItemLabel::sizeForText() const { double textWidth = QgsLayoutUtils::textWidthMM( mFont, currentText() ); double fontHeight = QgsLayoutUtils::fontHeightMM( mFont ); double penWidth = frameEnabled() ? ( pen().widthF() / 2.0 ) : 0; double width = textWidth + 2 * mMarginX + 2 * penWidth + 1; double height = fontHeight + 2 * mMarginY + 2 * penWidth; return mLayout->convertToLayoutUnits( QgsLayoutSize( width, height, QgsUnitTypes::LayoutMillimeters ) ); }
void QgsLayoutViewToolAddItem::layoutReleaseEvent( QgsLayoutViewMouseEvent *event ) { if ( event->button() != Qt::LeftButton || !mDrawing ) { event->ignore(); return; } mDrawing = false; QRectF rect = mRubberBand->finish( event->snappedPoint(), event->modifiers() ); QgsLayoutItem *item = QgsApplication::layoutItemRegistry()->createItem( mItemType, layout() ); // click? or click-and-drag? bool clickOnly = !isClickAndDrag( mMousePressStartPos, event->pos() ); if ( clickOnly ) { QgsLayoutItemPropertiesDialog dlg( view() ); dlg.setLayout( layout() ); dlg.setItemPosition( QgsLayoutPoint( event->snappedPoint(), layout()->units() ) ); if ( dlg.exec() ) { item->setReferencePoint( dlg.referencePoint() ); item->attemptResize( dlg.itemSize() ); item->attemptMove( dlg.itemPosition() ); } else { delete item; return; } } else { item->attemptResize( QgsLayoutSize( rect.width(), rect.height(), QgsUnitTypes::LayoutMillimeters ) ); item->attemptMove( QgsLayoutPoint( rect.left(), rect.top(), QgsUnitTypes::LayoutMillimeters ) ); } // record last created item size QgsSettings settings; settings.setValue( QStringLiteral( "LayoutDesigner/lastItemWidth" ), item->sizeWithUnits().width() ); settings.setValue( QStringLiteral( "LayoutDesigner/lastItemHeight" ), item->sizeWithUnits().height() ); settings.setValue( QStringLiteral( "LayoutDesigner/lastSizeUnit" ), static_cast< int >( item->sizeWithUnits().units() ) ); layout()->addLayoutItem( item ); layout()->setSelectedItem( item ); }
QgsLayoutSize QgsLayout::convertFromLayoutUnits( const QSizeF &size, const QgsUnitTypes::LayoutUnit unit ) const { return mRenderContext->measurementConverter().convert( QgsLayoutSize( size.width(), size.height(), mUnits ), unit ); }
QgsLayoutSize QgsLayoutItemScaleBar::minimumSize() const { return QgsLayoutSize( mStyle->calculateBoxSize( mSettings, createScaleContext() ), QgsUnitTypes::LayoutMillimeters ); }
QgsLayoutSize QgsLayoutAddPagesDialog::pageSize() const { return QgsLayoutSize( mWidthSpin->value(), mHeightSpin->value(), mSizeUnitsComboBox->unit() ); }
void QgsLayoutViewToolAddItem::layoutReleaseEvent( QgsLayoutViewMouseEvent *event ) { if ( event->button() != Qt::LeftButton || !mDrawing ) { event->ignore(); return; } mDrawing = false; QRectF rect = mRubberBand->finish( event->snappedPoint(), event->modifiers() ); QString undoText; if ( QgsLayoutItemAbstractGuiMetadata *metadata = QgsGui::layoutItemGuiRegistry()->itemMetadata( mItemMetadataId ) ) { undoText = tr( "Create %1" ).arg( metadata->visibleName() ); } else { undoText = tr( "Create Item" ); } layout()->undoStack()->beginMacro( undoText ); QgsLayoutItem *item = QgsGui::layoutItemGuiRegistry()->createItem( mItemMetadataId, layout() ); if ( !item ) { layout()->undoStack()->endMacro(); return; } // click? or click-and-drag? bool clickOnly = !isClickAndDrag( mMousePressStartPos, event->pos() ); if ( clickOnly ) { QgsLayoutItemPropertiesDialog dlg( view() ); dlg.setLayout( layout() ); dlg.setItemPosition( QgsLayoutPoint( event->snappedPoint(), layout()->units() ) ); if ( dlg.exec() ) { item->setReferencePoint( dlg.referencePoint() ); item->attemptResize( dlg.itemSize() ); item->attemptMove( dlg.itemPosition(), true, false, dlg.page() ); } else { delete item; layout()->undoStack()->endMacro(); return; } } else { item->attemptResize( QgsLayoutSize( rect.width(), rect.height(), QgsUnitTypes::LayoutMillimeters ) ); item->attemptMove( QgsLayoutPoint( rect.left(), rect.top(), QgsUnitTypes::LayoutMillimeters ) ); } // record last created item size QgsSettings settings; settings.setValue( QStringLiteral( "LayoutDesigner/lastItemWidth" ), item->sizeWithUnits().width() ); settings.setValue( QStringLiteral( "LayoutDesigner/lastItemHeight" ), item->sizeWithUnits().height() ); settings.setValue( QStringLiteral( "LayoutDesigner/lastSizeUnit" ), static_cast< int >( item->sizeWithUnits().units() ) ); QgsGui::layoutItemGuiRegistry()->newItemAddedToLayout( mItemMetadataId, item ); // it's possible (in certain circumstances, e.g. when adding frame items) that this item // has already been added to the layout if ( item->scene() != layout() ) layout()->addLayoutItem( item ); layout()->setSelectedItem( item ); layout()->undoStack()->endMacro(); emit createdItem(); }
QgsLayoutSize QgsLayoutItemPropertiesDialog::itemSize() const { return QgsLayoutSize( mWidthSpin->value(), mHeightSpin->value(), mSizeUnitsComboBox->unit() ); }