17#include "moc_qgslayoutaddpagesdialog.cpp" 
   27  : QDialog( parent, flags )
 
   33  mPageOrientationComboBox->setCurrentIndex( 1 );
 
   38    mPageSizeComboBox->addItem( size.displayName, size.name );
 
   40  mPageSizeComboBox->addItem( tr( 
"Custom" ) );
 
   41  mPageSizeComboBox->setCurrentIndex( mPageSizeComboBox->findData( QStringLiteral( 
"A4" ) ) );
 
   42  pageSizeChanged( mPageSizeComboBox->currentIndex() );
 
   43  orientationChanged( 1 );
 
   45  mSizeUnitsComboBox->linkToWidget( mWidthSpin );
 
   46  mSizeUnitsComboBox->linkToWidget( mHeightSpin );
 
   48  mLockAspectRatio->setWidthSpinBox( mWidthSpin );
 
   49  mLockAspectRatio->setHeightSpinBox( mHeightSpin );
 
   51  connect( mPositionComboBox, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsLayoutAddPagesDialog::positionChanged );
 
   52  mExistingPageSpinBox->setEnabled( 
false );
 
   54  connect( mPageSizeComboBox, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsLayoutAddPagesDialog::pageSizeChanged );
 
   55  connect( mPageOrientationComboBox, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsLayoutAddPagesDialog::orientationChanged );
 
   57  connect( mWidthSpin, 
static_cast<void ( QDoubleSpinBox::* )( 
double )
>( &QDoubleSpinBox::valueChanged ), 
this, &QgsLayoutAddPagesDialog::setToCustomSize );
 
   58  connect( mHeightSpin, 
static_cast<void ( QDoubleSpinBox::* )( 
double )
>( &QDoubleSpinBox::valueChanged ), 
this, &QgsLayoutAddPagesDialog::setToCustomSize );
 
   60  connect( buttonBox, &QDialogButtonBox::helpRequested, 
this, &QgsLayoutAddPagesDialog::showHelp );
 
 
   66  mSizeUnitsComboBox->setConverter( &mConverter );
 
   68  mSizeUnitsComboBox->setUnit( layout->
units() );
 
 
   73  return mPagesSpinBox->value();
 
 
   78  return static_cast<PagePosition>( mPositionComboBox->currentIndex() );
 
 
   83  return mExistingPageSpinBox->value();
 
 
   88  return QgsLayoutSize( mWidthSpin->value(), mHeightSpin->value(), mSizeUnitsComboBox->unit() );
 
 
   91void QgsLayoutAddPagesDialog::positionChanged( 
int index )
 
   93  mExistingPageSpinBox->setEnabled( index != 2 );
 
   96void QgsLayoutAddPagesDialog::pageSizeChanged( 
int )
 
   98  if ( mPageSizeComboBox->currentData().toString().isEmpty() )
 
  101    mLockAspectRatio->setEnabled( 
true );
 
  102    mSizeUnitsComboBox->setEnabled( 
true );
 
  103    mPageOrientationComboBox->setEnabled( 
false );
 
  107    mLockAspectRatio->setEnabled( 
false );
 
  108    mLockAspectRatio->setLocked( 
false );
 
  109    mSizeUnitsComboBox->setEnabled( 
false );
 
  110    mPageOrientationComboBox->setEnabled( 
true );
 
  113    mSettingPresetSize = 
true;
 
  114    switch ( mPageOrientationComboBox->currentData().toInt() )
 
  117        mWidthSpin->setValue( convertedSize.
height() );
 
  118        mHeightSpin->setValue( convertedSize.
width() );
 
  122        mWidthSpin->setValue( convertedSize.
width() );
 
  123        mHeightSpin->setValue( convertedSize.
height() );
 
  126    mSettingPresetSize = 
false;
 
  130void QgsLayoutAddPagesDialog::orientationChanged( 
int )
 
  132  if ( mPageSizeComboBox->currentData().toString().isEmpty() )
 
  135  const double width = mWidthSpin->value();
 
  136  const double height = mHeightSpin->value();
 
  137  switch ( mPageOrientationComboBox->currentData().toInt() )
 
  140      if ( width < height )
 
  148      if ( width > height )
 
  157void QgsLayoutAddPagesDialog::setToCustomSize()
 
  159  if ( mSettingPresetSize )
 
  161  whileBlocking( mPageSizeComboBox )->setCurrentIndex( mPageSizeComboBox->count() - 1 );
 
  162  mPageOrientationComboBox->setEnabled( 
false );
 
  163  mLockAspectRatio->setEnabled( 
true );
 
  164  mSizeUnitsComboBox->setEnabled( 
true );
 
  167void QgsLayoutAddPagesDialog::showHelp()
 
  169  QgsHelp::openHelp( QStringLiteral( 
"print_composer/overview_composer.html#working-with-the-page-properties" ) );
 
static QgsPageSizeRegistry * pageSizeRegistry()
Returns the application's page size registry, used for managing layout page sizes.
 
static void openHelp(const QString &key)
Opens help topic for the given help key using default system web browser.
 
int numberPages() const
Returns the number of pages to insert.
 
QgsLayoutAddPagesDialog(QWidget *parent=nullptr, Qt::WindowFlags flags=Qt::WindowFlags())
Constructor for QgsLayoutAddPagesDialog.
 
void setLayout(QgsLayout *layout)
Sets the layout associated with the dialog.
 
PagePosition
Page insertion positions.
 
PagePosition pagePosition() const
Returns the position at which to insert the new pages.
 
QgsLayoutSize pageSize() const
Returns the desired page size.
 
int beforePage() const
Returns the page number for which new pages should be inserted before/after.
 
@ Landscape
Landscape orientation.
 
@ Portrait
Portrait orientation.
 
QgsLayoutMeasurement convert(QgsLayoutMeasurement measurement, Qgis::LayoutUnit targetUnits) const
Converts a measurement from one unit to another.
 
int pageCount() const
Returns the number of pages in the collection.
 
const QgsLayoutMeasurementConverter & measurementConverter() const
Returns the layout measurement converter to be used in the layout.
 
Provides a method of storing sizes, consisting of a width and height, for use in QGIS layouts.
 
double height() const
Returns the height of the size.
 
double width() const
Returns the width of the size.
 
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
 
QgsLayoutRenderContext & renderContext()
Returns a reference to the layout's render context, which stores information relating to the current ...
 
QgsLayoutPageCollection * pageCollection()
Returns a pointer to the layout's page collection, which stores and manages page items in the layout.
 
Qgis::LayoutUnit units() const
Returns the native units for the layout.
 
QList< QgsPageSize > entries() const
Returns a list of page sizes in the registry.
 
QList< QgsPageSize > find(const QString &name) const
Finds matching page sizes from the registry, using a case insensitive match on the page size name.
 
A named page size for layouts.
 
QgsLayoutSize size
Page size.
 
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.