mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
Use rich text editor for annotation text item widgets
Makes it easier for users to style annotation items with rich formatting, instead of forcing use of raw HTML
This commit is contained in:
parent
c0ff7dc49a
commit
c2529994aa
@ -69,6 +69,13 @@ Returns the widget's content as a plain text string.
|
|||||||
Returns the widget's content as a HTML string.
|
Returns the widget's content as a HTML string.
|
||||||
|
|
||||||
.. seealso:: :py:func:`toPlainText`
|
.. seealso:: :py:func:`toPlainText`
|
||||||
|
%End
|
||||||
|
|
||||||
|
QTextEdit *textEdit();
|
||||||
|
%Docstring
|
||||||
|
Returns the widget's QTextEditor control.
|
||||||
|
|
||||||
|
.. versionadded:: 3.40
|
||||||
%End
|
%End
|
||||||
|
|
||||||
QTextDocument *document();
|
QTextDocument *document();
|
||||||
|
@ -69,6 +69,13 @@ Returns the widget's content as a plain text string.
|
|||||||
Returns the widget's content as a HTML string.
|
Returns the widget's content as a HTML string.
|
||||||
|
|
||||||
.. seealso:: :py:func:`toPlainText`
|
.. seealso:: :py:func:`toPlainText`
|
||||||
|
%End
|
||||||
|
|
||||||
|
QTextEdit *textEdit();
|
||||||
|
%Docstring
|
||||||
|
Returns the widget's QTextEditor control.
|
||||||
|
|
||||||
|
.. versionadded:: 3.40
|
||||||
%End
|
%End
|
||||||
|
|
||||||
QTextDocument *document();
|
QTextDocument *document();
|
||||||
|
@ -324,6 +324,7 @@ QgsAnnotationPointTextItemWidget::QgsAnnotationPointTextItemWidget( QWidget *par
|
|||||||
vLayout->addWidget( mTextFormatWidget );
|
vLayout->addWidget( mTextFormatWidget );
|
||||||
mTextFormatWidgetContainer->setLayout( vLayout );
|
mTextFormatWidgetContainer->setLayout( vLayout );
|
||||||
|
|
||||||
|
mTextEdit->setMode( QgsRichTextEditor::Mode::QgsTextRenderer );
|
||||||
mTextEdit->setMaximumHeight( mTextEdit->fontMetrics().height() * 10 );
|
mTextEdit->setMaximumHeight( mTextEdit->fontMetrics().height() * 10 );
|
||||||
|
|
||||||
mSpinTextAngle->setClearValue( 0 );
|
mSpinTextAngle->setClearValue( 0 );
|
||||||
@ -336,10 +337,14 @@ QgsAnnotationPointTextItemWidget::QgsAnnotationPointTextItemWidget( QWidget *par
|
|||||||
mTextFormatWidget->setDockMode( dockMode() );
|
mTextFormatWidget->setDockMode( dockMode() );
|
||||||
connect( mTextFormatWidget, &QgsTextFormatWidget::widgetChanged, this, [ = ]
|
connect( mTextFormatWidget, &QgsTextFormatWidget::widgetChanged, this, [ = ]
|
||||||
{
|
{
|
||||||
|
mTextEdit->setMode(
|
||||||
|
mTextFormatWidget->format().allowHtmlFormatting() ? QgsRichTextEditor::Mode::QgsTextRenderer : QgsRichTextEditor::Mode::PlainText
|
||||||
|
);
|
||||||
|
|
||||||
if ( !mBlockChangedSignal )
|
if ( !mBlockChangedSignal )
|
||||||
emit itemChanged();
|
emit itemChanged();
|
||||||
} );
|
} );
|
||||||
connect( mTextEdit, &QPlainTextEdit::textChanged, this, [ = ]
|
connect( mTextEdit, &QgsRichTextEditor::textChanged, this, [ = ]
|
||||||
{
|
{
|
||||||
if ( !mBlockChangedSignal )
|
if ( !mBlockChangedSignal )
|
||||||
emit itemChanged();
|
emit itemChanged();
|
||||||
@ -373,12 +378,7 @@ QgsAnnotationPointTextItemWidget::QgsAnnotationPointTextItemWidget( QWidget *par
|
|||||||
QgsAnnotationItem *QgsAnnotationPointTextItemWidget::createItem()
|
QgsAnnotationItem *QgsAnnotationPointTextItemWidget::createItem()
|
||||||
{
|
{
|
||||||
QgsAnnotationPointTextItem *newItem = mItem->clone();
|
QgsAnnotationPointTextItem *newItem = mItem->clone();
|
||||||
newItem->setFormat( mTextFormatWidget->format() );
|
updateItem( newItem );
|
||||||
newItem->setText( mTextEdit->toPlainText() );
|
|
||||||
newItem->setAngle( mSpinTextAngle->value() );
|
|
||||||
newItem->setRotationMode( mRotationModeCombo->currentData().value< Qgis::SymbolRotationMode >() );
|
|
||||||
newItem->setAlignment( mAlignmentComboBox->currentAlignment() );
|
|
||||||
mPropertiesWidget->updateItem( newItem );
|
|
||||||
return newItem;
|
return newItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,11 +386,13 @@ void QgsAnnotationPointTextItemWidget::updateItem( QgsAnnotationItem *item )
|
|||||||
{
|
{
|
||||||
if ( QgsAnnotationPointTextItem *pointTextItem = dynamic_cast< QgsAnnotationPointTextItem * >( item ) )
|
if ( QgsAnnotationPointTextItem *pointTextItem = dynamic_cast< QgsAnnotationPointTextItem * >( item ) )
|
||||||
{
|
{
|
||||||
|
mBlockChangedSignal = true;
|
||||||
pointTextItem->setFormat( mTextFormatWidget->format() );
|
pointTextItem->setFormat( mTextFormatWidget->format() );
|
||||||
pointTextItem->setText( mTextEdit->toPlainText() );
|
pointTextItem->setText( mTextFormatWidget->format().allowHtmlFormatting() ? mTextEdit->toHtml() : mTextEdit->toPlainText() );
|
||||||
pointTextItem->setAngle( mSpinTextAngle->value() );
|
pointTextItem->setAngle( mSpinTextAngle->value() );
|
||||||
pointTextItem->setRotationMode( mRotationModeCombo->currentData().value< Qgis::SymbolRotationMode >() );
|
pointTextItem->setRotationMode( mRotationModeCombo->currentData().value< Qgis::SymbolRotationMode >() );
|
||||||
pointTextItem->setAlignment( mAlignmentComboBox->currentAlignment() );
|
pointTextItem->setAlignment( mAlignmentComboBox->currentAlignment() );
|
||||||
|
mBlockChangedSignal = false;
|
||||||
mPropertiesWidget->updateItem( pointTextItem );
|
mPropertiesWidget->updateItem( pointTextItem );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -412,7 +414,7 @@ void QgsAnnotationPointTextItemWidget::setContext( const QgsSymbolWidgetContext
|
|||||||
|
|
||||||
void QgsAnnotationPointTextItemWidget::focusDefaultWidget()
|
void QgsAnnotationPointTextItemWidget::focusDefaultWidget()
|
||||||
{
|
{
|
||||||
mTextEdit->selectAll();
|
mTextEdit->textEdit()->selectAll();
|
||||||
mTextEdit->setFocus();
|
mTextEdit->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -428,7 +430,8 @@ bool QgsAnnotationPointTextItemWidget::setNewItem( QgsAnnotationItem *item )
|
|||||||
|
|
||||||
mBlockChangedSignal = true;
|
mBlockChangedSignal = true;
|
||||||
mTextFormatWidget->setFormat( mItem->format() );
|
mTextFormatWidget->setFormat( mItem->format() );
|
||||||
mTextEdit->setPlainText( mItem->text() );
|
mTextEdit->setMode( mItem->format().allowHtmlFormatting() ? QgsRichTextEditor::Mode::QgsTextRenderer : QgsRichTextEditor::Mode::PlainText );
|
||||||
|
mTextEdit->setText( mItem->text() );
|
||||||
mSpinTextAngle->setValue( mItem->angle() );
|
mSpinTextAngle->setValue( mItem->angle() );
|
||||||
mRotationModeCombo->setCurrentIndex( mRotationModeCombo->findData( QVariant::fromValue( mItem->rotationMode() ) ) );
|
mRotationModeCombo->setCurrentIndex( mRotationModeCombo->findData( QVariant::fromValue( mItem->rotationMode() ) ) );
|
||||||
mAlignmentComboBox->setCurrentAlignment( mItem->alignment() & Qt::AlignHorizontal_Mask );
|
mAlignmentComboBox->setCurrentAlignment( mItem->alignment() & Qt::AlignHorizontal_Mask );
|
||||||
@ -440,7 +443,7 @@ bool QgsAnnotationPointTextItemWidget::setNewItem( QgsAnnotationItem *item )
|
|||||||
|
|
||||||
void QgsAnnotationPointTextItemWidget::mInsertExpressionButton_clicked()
|
void QgsAnnotationPointTextItemWidget::mInsertExpressionButton_clicked()
|
||||||
{
|
{
|
||||||
QString expression = QgsExpressionFinder::findAndSelectActiveExpression( mTextEdit );
|
QString expression = QgsExpressionFinder::findAndSelectActiveExpression( mTextEdit->textEdit() );
|
||||||
|
|
||||||
QgsExpressionContext expressionContext;
|
QgsExpressionContext expressionContext;
|
||||||
if ( context().expressionContext() )
|
if ( context().expressionContext() )
|
||||||
@ -456,7 +459,7 @@ void QgsAnnotationPointTextItemWidget::mInsertExpressionButton_clicked()
|
|||||||
expression = exprDlg.expressionText().trimmed();
|
expression = exprDlg.expressionText().trimmed();
|
||||||
if ( !expression.isEmpty() )
|
if ( !expression.isEmpty() )
|
||||||
{
|
{
|
||||||
mTextEdit->insertPlainText( "[%" + expression + "%]" );
|
mTextEdit->textEdit()->insertPlainText( "[%" + expression + "%]" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -477,15 +480,20 @@ QgsAnnotationLineTextItemWidget::QgsAnnotationLineTextItemWidget( QWidget *paren
|
|||||||
vLayout->addWidget( mTextFormatWidget );
|
vLayout->addWidget( mTextFormatWidget );
|
||||||
mTextFormatWidgetContainer->setLayout( vLayout );
|
mTextFormatWidgetContainer->setLayout( vLayout );
|
||||||
|
|
||||||
|
mTextEdit->setMode( QgsRichTextEditor::Mode::QgsTextRenderer );
|
||||||
mTextEdit->setMaximumHeight( mTextEdit->fontMetrics().height() * 10 );
|
mTextEdit->setMaximumHeight( mTextEdit->fontMetrics().height() * 10 );
|
||||||
|
|
||||||
mTextFormatWidget->setDockMode( dockMode() );
|
mTextFormatWidget->setDockMode( dockMode() );
|
||||||
connect( mTextFormatWidget, &QgsTextFormatWidget::widgetChanged, this, [ = ]
|
connect( mTextFormatWidget, &QgsTextFormatWidget::widgetChanged, this, [ = ]
|
||||||
{
|
{
|
||||||
|
mTextEdit->setMode(
|
||||||
|
mTextFormatWidget->format().allowHtmlFormatting() ? QgsRichTextEditor::Mode::QgsTextRenderer : QgsRichTextEditor::Mode::PlainText
|
||||||
|
);
|
||||||
|
|
||||||
if ( !mBlockChangedSignal )
|
if ( !mBlockChangedSignal )
|
||||||
emit itemChanged();
|
emit itemChanged();
|
||||||
} );
|
} );
|
||||||
connect( mTextEdit, &QPlainTextEdit::textChanged, this, [ = ]
|
connect( mTextEdit, &QgsRichTextEditor::textChanged, this, [ = ]
|
||||||
{
|
{
|
||||||
if ( !mBlockChangedSignal )
|
if ( !mBlockChangedSignal )
|
||||||
emit itemChanged();
|
emit itemChanged();
|
||||||
@ -518,14 +526,7 @@ QgsAnnotationLineTextItemWidget::~QgsAnnotationLineTextItemWidget() = default;
|
|||||||
QgsAnnotationItem *QgsAnnotationLineTextItemWidget::createItem()
|
QgsAnnotationItem *QgsAnnotationLineTextItemWidget::createItem()
|
||||||
{
|
{
|
||||||
QgsAnnotationLineTextItem *newItem = mItem->clone();
|
QgsAnnotationLineTextItem *newItem = mItem->clone();
|
||||||
newItem->setFormat( mTextFormatWidget->format() );
|
updateItem( newItem );
|
||||||
newItem->setText( mTextEdit->toPlainText() );
|
|
||||||
|
|
||||||
newItem->setOffsetFromLine( mSpinOffset->value() );
|
|
||||||
newItem->setOffsetFromLineUnit( mOffsetUnitWidget->unit() );
|
|
||||||
newItem->setOffsetFromLineMapUnitScale( mOffsetUnitWidget->getMapUnitScale() );
|
|
||||||
|
|
||||||
mPropertiesWidget->updateItem( newItem );
|
|
||||||
return newItem;
|
return newItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -533,13 +534,15 @@ void QgsAnnotationLineTextItemWidget::updateItem( QgsAnnotationItem *item )
|
|||||||
{
|
{
|
||||||
if ( QgsAnnotationLineTextItem *lineTextItem = dynamic_cast< QgsAnnotationLineTextItem * >( item ) )
|
if ( QgsAnnotationLineTextItem *lineTextItem = dynamic_cast< QgsAnnotationLineTextItem * >( item ) )
|
||||||
{
|
{
|
||||||
|
mBlockChangedSignal = true;
|
||||||
lineTextItem->setFormat( mTextFormatWidget->format() );
|
lineTextItem->setFormat( mTextFormatWidget->format() );
|
||||||
lineTextItem->setText( mTextEdit->toPlainText() );
|
lineTextItem->setText( mTextFormatWidget->format().allowHtmlFormatting() ? mTextEdit->toHtml() : mTextEdit->toPlainText() );
|
||||||
|
|
||||||
lineTextItem->setOffsetFromLine( mSpinOffset->value() );
|
lineTextItem->setOffsetFromLine( mSpinOffset->value() );
|
||||||
lineTextItem->setOffsetFromLineUnit( mOffsetUnitWidget->unit() );
|
lineTextItem->setOffsetFromLineUnit( mOffsetUnitWidget->unit() );
|
||||||
lineTextItem->setOffsetFromLineMapUnitScale( mOffsetUnitWidget->getMapUnitScale() );
|
lineTextItem->setOffsetFromLineMapUnitScale( mOffsetUnitWidget->getMapUnitScale() );
|
||||||
|
|
||||||
|
mBlockChangedSignal = false;
|
||||||
mPropertiesWidget->updateItem( lineTextItem );
|
mPropertiesWidget->updateItem( lineTextItem );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -561,7 +564,7 @@ void QgsAnnotationLineTextItemWidget::setContext( const QgsSymbolWidgetContext &
|
|||||||
|
|
||||||
void QgsAnnotationLineTextItemWidget::focusDefaultWidget()
|
void QgsAnnotationLineTextItemWidget::focusDefaultWidget()
|
||||||
{
|
{
|
||||||
mTextEdit->selectAll();
|
mTextEdit->textEdit()->selectAll();
|
||||||
mTextEdit->setFocus();
|
mTextEdit->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,7 +578,8 @@ bool QgsAnnotationLineTextItemWidget::setNewItem( QgsAnnotationItem *item )
|
|||||||
|
|
||||||
mBlockChangedSignal = true;
|
mBlockChangedSignal = true;
|
||||||
mTextFormatWidget->setFormat( mItem->format() );
|
mTextFormatWidget->setFormat( mItem->format() );
|
||||||
mTextEdit->setPlainText( mItem->text() );
|
mTextEdit->setMode( mItem->format().allowHtmlFormatting() ? QgsRichTextEditor::Mode::QgsTextRenderer : QgsRichTextEditor::Mode::PlainText );
|
||||||
|
mTextEdit->setText( mItem->text() );
|
||||||
mPropertiesWidget->setItem( mItem.get() );
|
mPropertiesWidget->setItem( mItem.get() );
|
||||||
|
|
||||||
mSpinOffset->setValue( mItem->offsetFromLine() );
|
mSpinOffset->setValue( mItem->offsetFromLine() );
|
||||||
@ -589,7 +593,7 @@ bool QgsAnnotationLineTextItemWidget::setNewItem( QgsAnnotationItem *item )
|
|||||||
|
|
||||||
void QgsAnnotationLineTextItemWidget::mInsertExpressionButton_clicked()
|
void QgsAnnotationLineTextItemWidget::mInsertExpressionButton_clicked()
|
||||||
{
|
{
|
||||||
QString expression = QgsExpressionFinder::findAndSelectActiveExpression( mTextEdit );
|
QString expression = QgsExpressionFinder::findAndSelectActiveExpression( mTextEdit->textEdit() );
|
||||||
|
|
||||||
QgsExpressionContext expressionContext;
|
QgsExpressionContext expressionContext;
|
||||||
if ( context().expressionContext() )
|
if ( context().expressionContext() )
|
||||||
@ -605,7 +609,7 @@ void QgsAnnotationLineTextItemWidget::mInsertExpressionButton_clicked()
|
|||||||
expression = exprDlg.expressionText().trimmed();
|
expression = exprDlg.expressionText().trimmed();
|
||||||
if ( !expression.isEmpty() )
|
if ( !expression.isEmpty() )
|
||||||
{
|
{
|
||||||
mTextEdit->insertPlainText( "[%" + expression + "%]" );
|
mTextEdit->textEdit()->insertPlainText( "[%" + expression + "%]" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -641,14 +645,22 @@ QgsAnnotationRectangleTextItemWidget::QgsAnnotationRectangleTextItemWidget( QWid
|
|||||||
vLayout->addWidget( mTextFormatWidget );
|
vLayout->addWidget( mTextFormatWidget );
|
||||||
mTextFormatWidgetContainer->setLayout( vLayout );
|
mTextFormatWidgetContainer->setLayout( vLayout );
|
||||||
|
|
||||||
|
mTextEdit->setMode( QgsRichTextEditor::Mode::QgsTextRenderer );
|
||||||
mTextEdit->setMaximumHeight( mTextEdit->fontMetrics().height() * 10 );
|
mTextEdit->setMaximumHeight( mTextEdit->fontMetrics().height() * 10 );
|
||||||
|
|
||||||
mAlignmentComboBox->setAvailableAlignments( Qt::AlignLeft | Qt::AlignHCenter | Qt::AlignRight | Qt::AlignJustify );
|
mAlignmentComboBox->setAvailableAlignments( Qt::AlignLeft | Qt::AlignHCenter | Qt::AlignRight | Qt::AlignJustify );
|
||||||
mVerticalAlignmentComboBox->setAvailableAlignments( Qt::AlignTop | Qt::AlignVCenter | Qt::AlignBottom );
|
mVerticalAlignmentComboBox->setAvailableAlignments( Qt::AlignTop | Qt::AlignVCenter | Qt::AlignBottom );
|
||||||
|
|
||||||
mTextFormatWidget->setDockMode( dockMode() );
|
mTextFormatWidget->setDockMode( dockMode() );
|
||||||
connect( mTextFormatWidget, &QgsTextFormatWidget::widgetChanged, this, &QgsAnnotationRectangleTextItemWidget::onWidgetChanged );
|
connect( mTextFormatWidget, &QgsTextFormatWidget::widgetChanged, this, [this]
|
||||||
connect( mTextEdit, &QPlainTextEdit::textChanged, this, &QgsAnnotationRectangleTextItemWidget::onWidgetChanged );
|
{
|
||||||
|
mTextEdit->setMode(
|
||||||
|
mTextFormatWidget->format().allowHtmlFormatting() ? QgsRichTextEditor::Mode::QgsTextRenderer : QgsRichTextEditor::Mode::PlainText
|
||||||
|
);
|
||||||
|
|
||||||
|
onWidgetChanged();
|
||||||
|
} );
|
||||||
|
connect( mTextEdit, &QgsRichTextEditor::textChanged, this, &QgsAnnotationRectangleTextItemWidget::onWidgetChanged );
|
||||||
connect( mInsertExpressionButton, &QPushButton::clicked, this, &QgsAnnotationRectangleTextItemWidget::mInsertExpressionButton_clicked );
|
connect( mInsertExpressionButton, &QPushButton::clicked, this, &QgsAnnotationRectangleTextItemWidget::mInsertExpressionButton_clicked );
|
||||||
connect( mPropertiesWidget, &QgsAnnotationItemCommonPropertiesWidget::itemChanged, this, &QgsAnnotationRectangleTextItemWidget::onWidgetChanged );
|
connect( mPropertiesWidget, &QgsAnnotationItemCommonPropertiesWidget::itemChanged, this, &QgsAnnotationRectangleTextItemWidget::onWidgetChanged );
|
||||||
connect( mAlignmentComboBox, &QgsAlignmentComboBox::changed, this, &QgsAnnotationRectangleTextItemWidget::onWidgetChanged );
|
connect( mAlignmentComboBox, &QgsAlignmentComboBox::changed, this, &QgsAnnotationRectangleTextItemWidget::onWidgetChanged );
|
||||||
@ -675,8 +687,9 @@ void QgsAnnotationRectangleTextItemWidget::updateItem( QgsAnnotationItem *item )
|
|||||||
{
|
{
|
||||||
if ( QgsAnnotationRectangleTextItem *rectTextItem = dynamic_cast< QgsAnnotationRectangleTextItem * >( item ) )
|
if ( QgsAnnotationRectangleTextItem *rectTextItem = dynamic_cast< QgsAnnotationRectangleTextItem * >( item ) )
|
||||||
{
|
{
|
||||||
|
mBlockChangedSignal = true;
|
||||||
rectTextItem->setFormat( mTextFormatWidget->format() );
|
rectTextItem->setFormat( mTextFormatWidget->format() );
|
||||||
rectTextItem->setText( mTextEdit->toPlainText() );
|
rectTextItem->setText( mTextFormatWidget->format().allowHtmlFormatting() ? mTextEdit->toHtml() : mTextEdit->toPlainText() );
|
||||||
rectTextItem->setAlignment( mAlignmentComboBox->currentAlignment() | mVerticalAlignmentComboBox->currentAlignment() );
|
rectTextItem->setAlignment( mAlignmentComboBox->currentAlignment() | mVerticalAlignmentComboBox->currentAlignment() );
|
||||||
|
|
||||||
rectTextItem->setBackgroundEnabled( mBackgroundCheckbox->isChecked() );
|
rectTextItem->setBackgroundEnabled( mBackgroundCheckbox->isChecked() );
|
||||||
@ -689,6 +702,7 @@ void QgsAnnotationRectangleTextItemWidget::updateItem( QgsAnnotationItem *item )
|
|||||||
mSpinRightMargin->value(),
|
mSpinRightMargin->value(),
|
||||||
mSpinBottomMargin->value() ) );
|
mSpinBottomMargin->value() ) );
|
||||||
rectTextItem->setMarginsUnit( mMarginUnitWidget->unit() );
|
rectTextItem->setMarginsUnit( mMarginUnitWidget->unit() );
|
||||||
|
mBlockChangedSignal = false;
|
||||||
|
|
||||||
mPropertiesWidget->updateItem( rectTextItem );
|
mPropertiesWidget->updateItem( rectTextItem );
|
||||||
}
|
}
|
||||||
@ -725,7 +739,7 @@ QgsExpressionContext QgsAnnotationRectangleTextItemWidget::createExpressionConte
|
|||||||
|
|
||||||
void QgsAnnotationRectangleTextItemWidget::focusDefaultWidget()
|
void QgsAnnotationRectangleTextItemWidget::focusDefaultWidget()
|
||||||
{
|
{
|
||||||
mTextEdit->selectAll();
|
mTextEdit->textEdit()->selectAll();
|
||||||
mTextEdit->setFocus();
|
mTextEdit->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -741,7 +755,8 @@ bool QgsAnnotationRectangleTextItemWidget::setNewItem( QgsAnnotationItem *item )
|
|||||||
|
|
||||||
mBlockChangedSignal = true;
|
mBlockChangedSignal = true;
|
||||||
mTextFormatWidget->setFormat( mItem->format() );
|
mTextFormatWidget->setFormat( mItem->format() );
|
||||||
mTextEdit->setPlainText( mItem->text() );
|
mTextEdit->setMode( mItem->format().allowHtmlFormatting() ? QgsRichTextEditor::Mode::QgsTextRenderer : QgsRichTextEditor::Mode::PlainText );
|
||||||
|
mTextEdit->setText( mItem->text() );
|
||||||
mAlignmentComboBox->setCurrentAlignment( mItem->alignment() & Qt::AlignHorizontal_Mask );
|
mAlignmentComboBox->setCurrentAlignment( mItem->alignment() & Qt::AlignHorizontal_Mask );
|
||||||
mVerticalAlignmentComboBox->setCurrentAlignment( mItem->alignment() & Qt::AlignVertical_Mask );
|
mVerticalAlignmentComboBox->setCurrentAlignment( mItem->alignment() & Qt::AlignVertical_Mask );
|
||||||
mPropertiesWidget->setItem( mItem.get() );
|
mPropertiesWidget->setItem( mItem.get() );
|
||||||
@ -773,7 +788,7 @@ void QgsAnnotationRectangleTextItemWidget::onWidgetChanged()
|
|||||||
|
|
||||||
void QgsAnnotationRectangleTextItemWidget::mInsertExpressionButton_clicked()
|
void QgsAnnotationRectangleTextItemWidget::mInsertExpressionButton_clicked()
|
||||||
{
|
{
|
||||||
QString expression = QgsExpressionFinder::findAndSelectActiveExpression( mTextEdit );
|
QString expression = QgsExpressionFinder::findAndSelectActiveExpression( mTextEdit->textEdit() );
|
||||||
|
|
||||||
QgsExpressionBuilderDialog exprDlg( nullptr, expression, this, QStringLiteral( "generic" ), createExpressionContext() );
|
QgsExpressionBuilderDialog exprDlg( nullptr, expression, this, QStringLiteral( "generic" ), createExpressionContext() );
|
||||||
|
|
||||||
@ -783,7 +798,7 @@ void QgsAnnotationRectangleTextItemWidget::mInsertExpressionButton_clicked()
|
|||||||
expression = exprDlg.expressionText().trimmed();
|
expression = exprDlg.expressionText().trimmed();
|
||||||
if ( !expression.isEmpty() )
|
if ( !expression.isEmpty() )
|
||||||
{
|
{
|
||||||
mTextEdit->insertPlainText( "[%" + expression + "%]" );
|
mTextEdit->textEdit()->insertPlainText( "[%" + expression + "%]" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,7 +175,6 @@ void QgsRichTextEditor::setMode( Mode mode )
|
|||||||
mToolBar->addAction( mActionCut );
|
mToolBar->addAction( mActionCut );
|
||||||
mToolBar->addAction( mActionCopy );
|
mToolBar->addAction( mActionCopy );
|
||||||
mToolBar->addAction( mActionPaste );
|
mToolBar->addAction( mActionPaste );
|
||||||
mToolBar->addSeparator();
|
|
||||||
|
|
||||||
// font size
|
// font size
|
||||||
mFontSizeCombo = new QComboBox();
|
mFontSizeCombo = new QComboBox();
|
||||||
@ -190,6 +189,7 @@ void QgsRichTextEditor::setMode( Mode mode )
|
|||||||
|
|
||||||
if ( mode != Mode::PlainText )
|
if ( mode != Mode::PlainText )
|
||||||
{
|
{
|
||||||
|
mToolBar->addSeparator();
|
||||||
mToolBar->addWidget( mFontSizeCombo );
|
mToolBar->addWidget( mFontSizeCombo );
|
||||||
mToolBar->addAction( mActionBold );
|
mToolBar->addAction( mActionBold );
|
||||||
mToolBar->addAction( mActionItalic );
|
mToolBar->addAction( mActionItalic );
|
||||||
|
@ -110,6 +110,13 @@ class GUI_EXPORT QgsRichTextEditor : public QWidget, protected Ui::QgsRichTextEd
|
|||||||
*/
|
*/
|
||||||
QString toHtml() const;
|
QString toHtml() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the widget's QTextEditor control.
|
||||||
|
*
|
||||||
|
* \since QGIS 3.40
|
||||||
|
*/
|
||||||
|
QTextEdit *textEdit() { return mTextEdit; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a reference to the QTextDocument shown in the widget.
|
* Returns a reference to the QTextDocument shown in the widget.
|
||||||
*/
|
*/
|
||||||
|
@ -38,18 +38,18 @@
|
|||||||
<string>Insert/Edit Expression…</string>
|
<string>Insert/Edit Expression…</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="popupMode">
|
<property name="popupMode">
|
||||||
<enum>QToolButton::MenuButtonPopup</enum>
|
<enum>QToolButton::ToolButtonPopupMode::MenuButtonPopup</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolButtonStyle">
|
<property name="toolButtonStyle">
|
||||||
<enum>Qt::ToolButtonTextOnly</enum>
|
<enum>Qt::ToolButtonStyle::ToolButtonTextOnly</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="arrowType">
|
<property name="arrowType">
|
||||||
<enum>Qt::DownArrow</enum>
|
<enum>Qt::ArrowType::DownArrow</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QPlainTextEdit" name="mTextEdit">
|
<widget class="QgsRichTextEditor" name="mTextEdit" native="true">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>0</width>
|
<width>0</width>
|
||||||
@ -100,7 +100,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="focusPolicy">
|
<property name="focusPolicy">
|
||||||
<enum>Qt::StrongFocus</enum>
|
<enum>Qt::FocusPolicy::StrongFocus</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -136,6 +136,12 @@
|
|||||||
<extends>QDoubleSpinBox</extends>
|
<extends>QDoubleSpinBox</extends>
|
||||||
<header>qgsdoublespinbox.h</header>
|
<header>qgsdoublespinbox.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>QgsRichTextEditor</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>qgsrichtexteditor.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>QgsUnitSelectionWidget</class>
|
<class>QgsUnitSelectionWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
<widget class="QWidget" name="mTextFormatWidgetContainer" native="true"/>
|
<widget class="QWidget" name="mTextFormatWidgetContainer" native="true"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
<widget class="QPlainTextEdit" name="mTextEdit">
|
<widget class="QgsRichTextEditor" name="mTextEdit" native="true">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>0</width>
|
<width>0</width>
|
||||||
@ -95,13 +95,13 @@
|
|||||||
<string>Insert/Edit Expression…</string>
|
<string>Insert/Edit Expression…</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="popupMode">
|
<property name="popupMode">
|
||||||
<enum>QToolButton::MenuButtonPopup</enum>
|
<enum>QToolButton::ToolButtonPopupMode::MenuButtonPopup</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolButtonStyle">
|
<property name="toolButtonStyle">
|
||||||
<enum>Qt::ToolButtonTextOnly</enum>
|
<enum>Qt::ToolButtonStyle::ToolButtonTextOnly</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="arrowType">
|
<property name="arrowType">
|
||||||
<enum>Qt::DownArrow</enum>
|
<enum>Qt::ArrowType::DownArrow</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -134,6 +134,12 @@
|
|||||||
<extends>QComboBox</extends>
|
<extends>QComboBox</extends>
|
||||||
<header>qgsalignmentcombobox.h</header>
|
<header>qgsalignmentcombobox.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>QgsRichTextEditor</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>qgsrichtexteditor.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
@ -129,18 +129,18 @@
|
|||||||
<string>Insert/Edit Expression…</string>
|
<string>Insert/Edit Expression…</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="popupMode">
|
<property name="popupMode">
|
||||||
<enum>QToolButton::MenuButtonPopup</enum>
|
<enum>QToolButton::ToolButtonPopupMode::MenuButtonPopup</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolButtonStyle">
|
<property name="toolButtonStyle">
|
||||||
<enum>Qt::ToolButtonTextOnly</enum>
|
<enum>Qt::ToolButtonStyle::ToolButtonTextOnly</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="arrowType">
|
<property name="arrowType">
|
||||||
<enum>Qt::DownArrow</enum>
|
<enum>Qt::ArrowType::DownArrow</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="0" colspan="2">
|
<item row="0" column="0" colspan="2">
|
||||||
<widget class="QPlainTextEdit" name="mTextEdit">
|
<widget class="QgsRichTextEditor" name="mTextEdit" native="true">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>0</width>
|
<width>0</width>
|
||||||
@ -314,7 +314,7 @@
|
|||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="focusPolicy">
|
<property name="focusPolicy">
|
||||||
<enum>Qt::StrongFocus</enum>
|
<enum>Qt::FocusPolicy::StrongFocus</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -333,16 +333,27 @@
|
|||||||
<header>qgsannotationitemcommonpropertieswidget.h</header>
|
<header>qgsannotationitemcommonpropertieswidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
|
||||||
<class>QgsSymbolButton</class>
|
|
||||||
<extends>QToolButton</extends>
|
|
||||||
<header>qgssymbolbutton.h</header>
|
|
||||||
</customwidget>
|
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>QgsDoubleSpinBox</class>
|
<class>QgsDoubleSpinBox</class>
|
||||||
<extends>QDoubleSpinBox</extends>
|
<extends>QDoubleSpinBox</extends>
|
||||||
<header>qgsdoublespinbox.h</header>
|
<header>qgsdoublespinbox.h</header>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>QgsAlignmentComboBox</class>
|
||||||
|
<extends>QComboBox</extends>
|
||||||
|
<header>qgsalignmentcombobox.h</header>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>QgsRichTextEditor</class>
|
||||||
|
<extends>QWidget</extends>
|
||||||
|
<header>qgsrichtexteditor.h</header>
|
||||||
|
<container>1</container>
|
||||||
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>QgsSymbolButton</class>
|
||||||
|
<extends>QToolButton</extends>
|
||||||
|
<header>qgssymbolbutton.h</header>
|
||||||
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>QgsUnitSelectionWidget</class>
|
<class>QgsUnitSelectionWidget</class>
|
||||||
<extends>QWidget</extends>
|
<extends>QWidget</extends>
|
||||||
@ -355,11 +366,6 @@
|
|||||||
<header>qgscollapsiblegroupbox.h</header>
|
<header>qgscollapsiblegroupbox.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
<customwidget>
|
|
||||||
<class>QgsAlignmentComboBox</class>
|
|
||||||
<extends>QComboBox</extends>
|
|
||||||
<header>qgsalignmentcombobox.h</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user