Skip to content

Commit

Permalink
[FEATURE][labels] Add multiline alignment property to the change labe…
Browse files Browse the repository at this point in the history
…l tool
  • Loading branch information
nirvn committed Jul 20, 2019
1 parent 12930b4 commit 396eb92
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 5 deletions.
51 changes: 47 additions & 4 deletions src/app/qgslabelpropertydialog.cpp
Expand Up @@ -58,10 +58,12 @@ QgsLabelPropertyDialog::QgsLabelPropertyDialog( const QString &layerId, const QS
connect( mRotationSpinBox, static_cast < void ( QDoubleSpinBox::* )( double ) > ( &QDoubleSpinBox::valueChanged ), this, &QgsLabelPropertyDialog::mRotationSpinBox_valueChanged );
connect( mFontColorButton, &QgsColorButton::colorChanged, this, &QgsLabelPropertyDialog::mFontColorButton_colorChanged );
connect( mBufferColorButton, &QgsColorButton::colorChanged, this, &QgsLabelPropertyDialog::mBufferColorButton_colorChanged );
connect( mMultiLineAlignComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLabelPropertyDialog::mMultiLineAlignComboBox_currentIndexChanged );
connect( mHaliComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLabelPropertyDialog::mHaliComboBox_currentIndexChanged );
connect( mValiComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLabelPropertyDialog::mValiComboBox_currentIndexChanged );
connect( mLabelTextLineEdit, &QLineEdit::textChanged, this, &QgsLabelPropertyDialog::mLabelTextLineEdit_textChanged );
mRotationSpinBox->setClearValue( 0 );
fillMultiLineAlignComboBox();
fillHaliComboBox();
fillValiComboBox();

Expand Down Expand Up @@ -178,8 +180,28 @@ void QgsLabelPropertyDialog::init( const QString &layerId, const QString &provid
mBufferColorButton->setColor( buffer.color() );
mMinScaleWidget->setScale( layerSettings.minimumScale );
mMaxScaleWidget->setScale( layerSettings.maximumScale );
mHaliComboBox->setCurrentIndex( mHaliComboBox->findData( "Left" ) );
mValiComboBox->setCurrentIndex( mValiComboBox->findData( "Bottom" ) );

QString defaultMultilineAlign;
switch ( layerSettings.multilineAlign )
{
case QgsPalLayerSettings::MultiLeft:
defaultMultilineAlign = QStringLiteral( "left" );
break;
case QgsPalLayerSettings::MultiCenter:
defaultMultilineAlign = QStringLiteral( "center" );
break;
case QgsPalLayerSettings::MultiRight:
defaultMultilineAlign = QStringLiteral( "right" );
break;
case QgsPalLayerSettings::MultiFollowPlacement:
defaultMultilineAlign = QStringLiteral( "follow label placement" );
break;
}
mMultiLineAlignComboBox->setItemText( mMultiLineAlignComboBox->findData( "" ), tr( "Layer default (%1)" ).arg( defaultMultilineAlign ) );
mMultiLineAlignComboBox->setCurrentIndex( mMultiLineAlignComboBox->findData( "" ) );

mHaliComboBox->setCurrentIndex( mHaliComboBox->findData( "left", Qt::UserRole, Qt::MatchFixedString ) );
mValiComboBox->setCurrentIndex( mValiComboBox->findData( "bottom", Qt::UserRole, Qt::MatchFixedString ) );
mFontColorButton->setColorDialogTitle( tr( "Font Color" ) );
mBufferColorButton->setColorDialogTitle( tr( "Buffer Color" ) );

Expand Down Expand Up @@ -215,6 +237,7 @@ void QgsLabelPropertyDialog::disableGuiElements()
mLabelDistanceSpinBox->setEnabled( false );
mXCoordSpinBox->setEnabled( false );
mYCoordSpinBox->setEnabled( false );
mMultiLineAlignComboBox->setEnabled( false );
mHaliComboBox->setEnabled( false );
mValiComboBox->setEnabled( false );
mRotationSpinBox->setEnabled( false );
Expand All @@ -240,6 +263,7 @@ void QgsLabelPropertyDialog::blockElementSignals( bool block )
mLabelDistanceSpinBox->blockSignals( block );
mXCoordSpinBox->blockSignals( block );
mYCoordSpinBox->blockSignals( block );
mMultiLineAlignComboBox->blockSignals( block );
mHaliComboBox->blockSignals( block );
mValiComboBox->blockSignals( block );
mRotationSpinBox->blockSignals( block );
Expand Down Expand Up @@ -344,11 +368,14 @@ void QgsLabelPropertyDialog::setDataDefinedValues( QgsVectorLayer *vlayer )
}
break;
}
case QgsPalLayerSettings::MultiLineAlignment:
mMultiLineAlignComboBox->setCurrentIndex( mMultiLineAlignComboBox->findData( result.toString(), Qt::UserRole, Qt::MatchFixedString ) );
break;
case QgsPalLayerSettings::Hali:
mHaliComboBox->setCurrentIndex( mHaliComboBox->findData( result.toString() ) );
mHaliComboBox->setCurrentIndex( mHaliComboBox->findData( result.toString(), Qt::UserRole, Qt::MatchFixedString ) );
break;
case QgsPalLayerSettings::Vali:
mValiComboBox->setCurrentIndex( mValiComboBox->findData( result.toString() ) );
mValiComboBox->setCurrentIndex( mValiComboBox->findData( result.toString(), Qt::UserRole, Qt::MatchFixedString ) );
break;
case QgsPalLayerSettings::BufferColor:
mBufferColorButton->setColor( QColor( result.toString() ) );
Expand Down Expand Up @@ -438,6 +465,9 @@ void QgsLabelPropertyDialog::enableDataDefinedWidgets( QgsVectorLayer *vlayer )
case QgsPalLayerSettings::LabelDistance:
mLabelDistanceSpinBox->setEnabled( true );
break;
case QgsPalLayerSettings::MultiLineAlignment:
mMultiLineAlignComboBox->setEnabled( true );
break;
case QgsPalLayerSettings::Hali:
mHaliComboBox->setEnabled( true );
break;
Expand Down Expand Up @@ -524,6 +554,14 @@ void QgsLabelPropertyDialog::populateFontStyleComboBox()
mFontStyleCmbBx->setCurrentIndex( curIndx );
}

void QgsLabelPropertyDialog::fillMultiLineAlignComboBox()
{
mMultiLineAlignComboBox->addItem( tr( "Layer default" ), "" );
mMultiLineAlignComboBox->addItem( tr( "Left" ), "Left" );
mMultiLineAlignComboBox->addItem( tr( "Center" ), "Center" );
mMultiLineAlignComboBox->addItem( tr( "Right" ), "Right" );
}

void QgsLabelPropertyDialog::fillHaliComboBox()
{
mHaliComboBox->addItem( tr( "Left" ), "Left" );
Expand Down Expand Up @@ -683,6 +721,11 @@ void QgsLabelPropertyDialog::mBufferColorButton_colorChanged( const QColor &colo
insertChangedValue( QgsPalLayerSettings::BufferColor, color.name() );
}

void QgsLabelPropertyDialog::mMultiLineAlignComboBox_currentIndexChanged( const int index )
{
insertChangedValue( QgsPalLayerSettings::MultiLineAlignment, mMultiLineAlignComboBox->itemData( index ) );
}

void QgsLabelPropertyDialog::mHaliComboBox_currentIndexChanged( const int index )
{
insertChangedValue( QgsPalLayerSettings::Hali, mHaliComboBox->itemData( index ) );
Expand Down
2 changes: 2 additions & 0 deletions src/app/qgslabelpropertydialog.h
Expand Up @@ -66,6 +66,7 @@ class APP_EXPORT QgsLabelPropertyDialog: public QDialog, private Ui::QgsLabelPro
void mRotationSpinBox_valueChanged( double d );
void mFontColorButton_colorChanged( const QColor &color );
void mBufferColorButton_colorChanged( const QColor &color );
void mMultiLineAlignComboBox_currentIndexChanged( int index );
void mHaliComboBox_currentIndexChanged( int index );
void mValiComboBox_currentIndexChanged( int index );
void mLabelTextLineEdit_textChanged( const QString &text );
Expand All @@ -86,6 +87,7 @@ class APP_EXPORT QgsLabelPropertyDialog: public QDialog, private Ui::QgsLabelPro
//! Updates combobox with named styles of font
void populateFontStyleComboBox();

void fillMultiLineAlignComboBox();
void fillHaliComboBox();
void fillValiComboBox();

Expand Down
1 change: 1 addition & 0 deletions src/app/qgsmaptoolchangelabelproperties.cpp
Expand Up @@ -38,6 +38,7 @@ QgsMapToolChangeLabelProperties::QgsMapToolChangeLabelProperties( QgsMapCanvas *
mPalProperties << QgsPalLayerSettings::Underline;
mPalProperties << QgsPalLayerSettings::Color;
mPalProperties << QgsPalLayerSettings::Strikeout;
mPalProperties << QgsPalLayerSettings::MultiLineAlignment;
mPalProperties << QgsPalLayerSettings::BufferSize;
mPalProperties << QgsPalLayerSettings::BufferColor;
mPalProperties << QgsPalLayerSettings::LabelDistance;
Expand Down
4 changes: 3 additions & 1 deletion src/core/qgsauxiliarystorage.cpp
Expand Up @@ -45,6 +45,7 @@ const QVector<QgsPalLayerSettings::Property> palHiddenProperties
QgsPalLayerSettings::Underline,
QgsPalLayerSettings::Color,
QgsPalLayerSettings::Strikeout,
QgsPalLayerSettings::MultiLineAlignment,
QgsPalLayerSettings::BufferSize,
QgsPalLayerSettings::BufferColor,
QgsPalLayerSettings::LabelDistance,
Expand All @@ -53,7 +54,8 @@ const QVector<QgsPalLayerSettings::Property> palHiddenProperties
QgsPalLayerSettings::ScaleVisibility,
QgsPalLayerSettings::MinScale,
QgsPalLayerSettings::MaxScale,
QgsPalLayerSettings::AlwaysShow
QgsPalLayerSettings::AlwaysShow,
QgsPalLayerSettings::CalloutDraw
};

//
Expand Down
20 changes: 20 additions & 0 deletions src/ui/qgslabelpropertydialogbase.ui
Expand Up @@ -347,6 +347,26 @@
</property>
</widget>
</item>
<item row="4" column="0" colspan="3">
<layout class="QHBoxLayout" name="horizontalLayout_22">
<item>
<widget class="QLabel" name="mMultiLineAlignLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Multiline alignment</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="mMultiLineAlignComboBox"/>
</item>
</layout>
</item>
<item row="1" column="1" colspan="2">
<widget class="QComboBox" name="mFontStyleCmbBx">
<property name="toolTip">
Expand Down

0 comments on commit 396eb92

Please sign in to comment.