use project scales in label rendering and new 2D canvas dock if they are

set (fix #51326)
This commit is contained in:
Alexander Bruy 2024-01-24 11:28:53 +02:00 committed by Nyall Dawson
parent 0f9b830d58
commit 72226c5983
2 changed files with 36 additions and 0 deletions

View File

@ -30,6 +30,7 @@
#include "qgsvectorlayer.h"
#include "qgsapplication.h"
#include "qgsdockablewidgethelper.h"
#include "qgsprojectviewsettings.h"
#include "canvas/qgsappcanvasfiltering.h"
#include <QMessageBox>
@ -597,6 +598,22 @@ QgsMapSettingsAction::QgsMapSettingsAction( QWidget *parent )
gLayout->addWidget( label, 2, 0 );
mScaleCombo = new QgsScaleComboBox();
// use either global scales or project scales
if ( QgsProject::instance()->viewSettings()->useProjectScales() )
{
const QVector< double > scales = QgsProject::instance()->viewSettings()->mapScales();
QStringList textScales;
textScales.reserve( scales.size() );
for ( const double scale : scales )
textScales << QStringLiteral( "1:%1" ).arg( QLocale().toString( scale, 'f', 0 ) );
mScaleCombo->updateScales( textScales );
}
else
{
// use global scales
mScaleCombo->updateScales();
}
gLayout->addWidget( mScaleCombo, 2, 1 );
mRotationWidget = new QgsDoubleSpinBox();

View File

@ -43,6 +43,7 @@
#include "qgssymbollayerreference.h"
#include "qgsconfig.h"
#include "qgsprojectstylesettings.h"
#include "qgsprojectviewsettings.h"
#include <QButtonGroup>
#include <QMessageBox>
@ -849,6 +850,24 @@ void QgsTextFormatWidget::populateDataDefinedButtons()
registerDataDefinedButton( mScaleBasedVisibilityMaxDDBtn, QgsPalLayerSettings::Property::MaximumScale );
mScaleBasedVisibilityMaxDDBtn->setUsageInfo( ddScaleVisInfo );
// use either global scales or project scales
if ( QgsProject::instance()->viewSettings()->useProjectScales() )
{
const QVector< double > scales = QgsProject::instance()->viewSettings()->mapScales();
QStringList textScales;
textScales.reserve( scales.size() );
for ( const double scale : scales )
textScales << QStringLiteral( "1:%1" ).arg( QLocale().toString( scale, 'f', 0 ) );
mMinScaleWidget->updateScales( textScales );
mMaxScaleWidget->updateScales( textScales );
}
else
{
// use global scales
mMinScaleWidget->updateScales();
mMaxScaleWidget->updateScales();
}
registerDataDefinedButton( mFontLimitPixelDDBtn, QgsPalLayerSettings::Property::FontLimitPixel );
mFontLimitPixelDDBtn->registerCheckedWidget( mFontLimitPixelChkBox );
registerDataDefinedButton( mFontMinPixelDDBtn, QgsPalLayerSettings::Property::FontMinPixel );