mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-15 00:02:52 -04:00
Add method to change capitalization of QgsTextDocument
This commit is contained in:
parent
772181bc16
commit
620948f809
@ -62,6 +62,13 @@ Returns ``True`` if the block is empty.
|
|||||||
int size() const;
|
int size() const;
|
||||||
%Docstring
|
%Docstring
|
||||||
Returns the number of fragments in the block.
|
Returns the number of fragments in the block.
|
||||||
|
%End
|
||||||
|
|
||||||
|
void applyCapitalization( QgsStringUtils::Capitalization capitalization );
|
||||||
|
%Docstring
|
||||||
|
Applies a ``capitalization`` style to the block's text.
|
||||||
|
|
||||||
|
.. versionadded:: 3.16
|
||||||
%End
|
%End
|
||||||
|
|
||||||
int __len__() const;
|
int __len__() const;
|
||||||
|
@ -113,6 +113,13 @@ argument controls whether the lines should be wrapped to an ideal maximum of ``a
|
|||||||
if ``False`` then the lines are wrapped to an ideal minimum length of ``autoWrapLength`` characters.
|
if ``False`` then the lines are wrapped to an ideal minimum length of ``autoWrapLength`` characters.
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
void applyCapitalization( QgsStringUtils::Capitalization capitalization );
|
||||||
|
%Docstring
|
||||||
|
Applies a ``capitalization`` style to the document's text.
|
||||||
|
|
||||||
|
.. versionadded:: 3.16
|
||||||
|
%End
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -76,6 +76,13 @@ The optional ``scaleFactor`` parameter can specify a font size scaling factor. I
|
|||||||
QgsTextRenderer.FONT_WORKAROUND_SCALE and then manually calculations
|
QgsTextRenderer.FONT_WORKAROUND_SCALE and then manually calculations
|
||||||
based on the resultant font metrics. Failure to do so will result in poor quality text rendering
|
based on the resultant font metrics. Failure to do so will result in poor quality text rendering
|
||||||
at small font sizes.
|
at small font sizes.
|
||||||
|
%End
|
||||||
|
|
||||||
|
void applyCapitalization( QgsStringUtils::Capitalization capitalization );
|
||||||
|
%Docstring
|
||||||
|
Applies a ``capitalization`` style to the fragment's text.
|
||||||
|
|
||||||
|
.. versionadded:: 3.16
|
||||||
%End
|
%End
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -56,6 +56,14 @@ int QgsTextBlock::size() const
|
|||||||
return mFragments.size();
|
return mFragments.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsTextBlock::applyCapitalization( QgsStringUtils::Capitalization capitalization )
|
||||||
|
{
|
||||||
|
for ( QgsTextFragment &fragment : mFragments )
|
||||||
|
{
|
||||||
|
fragment.applyCapitalization( capitalization );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const QgsTextFragment &QgsTextBlock::at( int index ) const
|
const QgsTextFragment &QgsTextBlock::at( int index ) const
|
||||||
{
|
{
|
||||||
return mFragments.at( index );
|
return mFragments.at( index );
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "qgis_sip.h"
|
#include "qgis_sip.h"
|
||||||
#include "qgis_core.h"
|
#include "qgis_core.h"
|
||||||
#include "qgstextfragment.h"
|
#include "qgstextfragment.h"
|
||||||
|
#include "qgsstringutils.h"
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,6 +79,13 @@ class CORE_EXPORT QgsTextBlock
|
|||||||
*/
|
*/
|
||||||
int size() const;
|
int size() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies a \a capitalization style to the block's text.
|
||||||
|
*
|
||||||
|
* \since QGIS 3.16
|
||||||
|
*/
|
||||||
|
void applyCapitalization( QgsStringUtils::Capitalization capitalization );
|
||||||
|
|
||||||
#ifdef SIP_RUN
|
#ifdef SIP_RUN
|
||||||
int __len__() const;
|
int __len__() const;
|
||||||
% MethodCode
|
% MethodCode
|
||||||
|
@ -187,6 +187,14 @@ void QgsTextDocument::splitLines( const QString &wrapCharacter, int autoWrapLeng
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsTextDocument::applyCapitalization( QgsStringUtils::Capitalization capitalization )
|
||||||
|
{
|
||||||
|
for ( QgsTextBlock &block : mBlocks )
|
||||||
|
{
|
||||||
|
block.applyCapitalization( capitalization );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
///@cond PRIVATE
|
///@cond PRIVATE
|
||||||
QVector< QgsTextBlock >::const_iterator QgsTextDocument::begin() const
|
QVector< QgsTextBlock >::const_iterator QgsTextDocument::begin() const
|
||||||
{
|
{
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "qgis_sip.h"
|
#include "qgis_sip.h"
|
||||||
#include "qgis_core.h"
|
#include "qgis_core.h"
|
||||||
|
#include "qgsstringutils.h"
|
||||||
|
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
@ -137,6 +138,13 @@ class CORE_EXPORT QgsTextDocument
|
|||||||
*/
|
*/
|
||||||
void splitLines( const QString &wrapCharacter, int autoWrapLength = 0, bool useMaxLineLengthWhenAutoWrapping = true );
|
void splitLines( const QString &wrapCharacter, int autoWrapLength = 0, bool useMaxLineLengthWhenAutoWrapping = true );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies a \a capitalization style to the document's text.
|
||||||
|
*
|
||||||
|
* \since QGIS 3.16
|
||||||
|
*/
|
||||||
|
void applyCapitalization( QgsStringUtils::Capitalization capitalization );
|
||||||
|
|
||||||
#ifndef SIP_RUN
|
#ifndef SIP_RUN
|
||||||
///@cond PRIVATE
|
///@cond PRIVATE
|
||||||
QVector< QgsTextBlock >::const_iterator begin() const;
|
QVector< QgsTextBlock >::const_iterator begin() const;
|
||||||
|
@ -68,3 +68,8 @@ double QgsTextFragment::horizontalAdvance( const QFont &font, bool fontHasBeenUp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsTextFragment::applyCapitalization( QgsStringUtils::Capitalization capitalization )
|
||||||
|
{
|
||||||
|
mText = QgsStringUtils::capitalize( mText, capitalization );
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "qgis_sip.h"
|
#include "qgis_sip.h"
|
||||||
#include "qgis_core.h"
|
#include "qgis_core.h"
|
||||||
#include "qgstextcharacterformat.h"
|
#include "qgstextcharacterformat.h"
|
||||||
|
#include "qgsstringutils.h"
|
||||||
|
|
||||||
class QTextFragment;
|
class QTextFragment;
|
||||||
|
|
||||||
@ -87,6 +88,13 @@ class CORE_EXPORT QgsTextFragment
|
|||||||
*/
|
*/
|
||||||
double horizontalAdvance( const QFont &font, bool fontHasBeenUpdatedForFragment = false, double scaleFactor = 1.0 ) const;
|
double horizontalAdvance( const QFont &font, bool fontHasBeenUpdatedForFragment = false, double scaleFactor = 1.0 ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies a \a capitalization style to the fragment's text.
|
||||||
|
*
|
||||||
|
* \since QGIS 3.16
|
||||||
|
*/
|
||||||
|
void applyCapitalization( QgsStringUtils::Capitalization capitalization );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
QString mText;
|
QString mText;
|
||||||
|
@ -16,7 +16,8 @@ import qgis # NOQA
|
|||||||
|
|
||||||
from qgis.core import (
|
from qgis.core import (
|
||||||
QgsTextBlock,
|
QgsTextBlock,
|
||||||
QgsTextFragment
|
QgsTextFragment,
|
||||||
|
QgsStringUtils
|
||||||
)
|
)
|
||||||
from qgis.testing import start_app, unittest
|
from qgis.testing import start_app, unittest
|
||||||
|
|
||||||
@ -85,6 +86,13 @@ class TestQgsTextBlock(unittest.TestCase):
|
|||||||
self.assertEqual(len(block), 0)
|
self.assertEqual(len(block), 0)
|
||||||
self.assertTrue(block.empty())
|
self.assertTrue(block.empty())
|
||||||
|
|
||||||
|
def testCapitalize(self):
|
||||||
|
fragment = QgsTextFragment('ludicrous gibs!')
|
||||||
|
block = QgsTextBlock(fragment)
|
||||||
|
block.append(QgsTextFragment('another part'))
|
||||||
|
block.applyCapitalization(QgsStringUtils.TitleCase)
|
||||||
|
self.assertEqual(block.toPlainText(), 'Ludicrous Gibs!Another Part')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
@ -18,7 +18,8 @@ from qgis.core import (
|
|||||||
QgsTextDocument,
|
QgsTextDocument,
|
||||||
QgsTextBlock,
|
QgsTextBlock,
|
||||||
QgsTextFragment,
|
QgsTextFragment,
|
||||||
QgsTextCharacterFormat
|
QgsTextCharacterFormat,
|
||||||
|
QgsStringUtils
|
||||||
)
|
)
|
||||||
from qgis.testing import start_app, unittest
|
from qgis.testing import start_app, unittest
|
||||||
|
|
||||||
@ -160,6 +161,11 @@ class TestQgsTextDocument(unittest.TestCase):
|
|||||||
self.assertEqual(len(doc[2]), 1)
|
self.assertEqual(len(doc[2]), 1)
|
||||||
self.assertEqual(doc[2][0].text(), 'red')
|
self.assertEqual(doc[2][0].text(), 'red')
|
||||||
|
|
||||||
|
def testCapitalize(self):
|
||||||
|
doc = QgsTextDocument.fromPlainText(['abc def ghi', 'more text', 'another block'])
|
||||||
|
doc.applyCapitalization(QgsStringUtils.TitleCase)
|
||||||
|
self.assertEqual(doc.toPlainText(), ['Abc Def Ghi', 'More Text', 'Another Block'])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
@ -16,7 +16,8 @@ import qgis # NOQA
|
|||||||
|
|
||||||
from qgis.core import (
|
from qgis.core import (
|
||||||
QgsTextFragment,
|
QgsTextFragment,
|
||||||
QgsTextCharacterFormat
|
QgsTextCharacterFormat,
|
||||||
|
QgsStringUtils
|
||||||
)
|
)
|
||||||
from qgis.PyQt.QtGui import QColor
|
from qgis.PyQt.QtGui import QColor
|
||||||
from qgis.testing import start_app, unittest
|
from qgis.testing import start_app, unittest
|
||||||
@ -49,6 +50,11 @@ class TestQgsTextFragment(unittest.TestCase):
|
|||||||
self.assertTrue(fragment.characterFormat().textColor().isValid())
|
self.assertTrue(fragment.characterFormat().textColor().isValid())
|
||||||
self.assertEqual(fragment.characterFormat().textColor().name(), '#ff0000')
|
self.assertEqual(fragment.characterFormat().textColor().name(), '#ff0000')
|
||||||
|
|
||||||
|
def testCapitalize(self):
|
||||||
|
fragment = QgsTextFragment('ludicrous gibs!')
|
||||||
|
fragment.applyCapitalization(QgsStringUtils.TitleCase)
|
||||||
|
self.assertEqual(fragment.text(), 'Ludicrous Gibs!')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user