mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-15 00:02:52 -04:00
Better way to mark styles as read only
This commit is contained in:
parent
8615123178
commit
1251b115f4
@ -114,6 +114,34 @@ Sets the ``name`` of the style.
|
||||
|
||||
.. seealso:: :py:func:`name`
|
||||
|
||||
.. versionadded:: 3.26
|
||||
%End
|
||||
|
||||
bool isReadOnly() const;
|
||||
%Docstring
|
||||
Returns ``True`` if the style is considered a read-only library.
|
||||
|
||||
.. note::
|
||||
|
||||
This flag is used to control GUI operations, and does not prevent calling functions
|
||||
which mutate the style directly via the API.
|
||||
|
||||
.. seealso:: :py:func:`setReadOnly`
|
||||
|
||||
.. versionadded:: 3.26
|
||||
%End
|
||||
|
||||
void setReadOnly( bool readOnly );
|
||||
%Docstring
|
||||
Sets whether the style is considered a read-only library.
|
||||
|
||||
.. note::
|
||||
|
||||
This flag is used to control GUI operations, and does not prevent calling functions
|
||||
which mutate the style directly via the API.
|
||||
|
||||
.. seealso:: :py:func:`isReadOnly`
|
||||
|
||||
.. versionadded:: 3.26
|
||||
%End
|
||||
|
||||
|
@ -312,6 +312,7 @@ void QgsProjectStyleSettings::loadStyleAtPath( const QString &path )
|
||||
style->createMemoryDatabase();
|
||||
style->importXml( path );
|
||||
style->setFileName( path );
|
||||
style->setReadOnly( true );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -519,11 +520,9 @@ bool QgsProjectStyleDatabaseProxyModel::filterAcceptsRow( int sourceRow, const Q
|
||||
{
|
||||
if ( mFilters & Filter::FilterHideReadOnly )
|
||||
{
|
||||
const QString path = sourceModel()->data( sourceModel()->index( sourceRow, 0, sourceParent ), QgsProjectStyleDatabaseModel::Role::PathRole ).toString();
|
||||
if ( !path.isEmpty() )
|
||||
if ( const QgsStyle *style = qobject_cast< QgsStyle * >( sourceModel()->data( sourceModel()->index( sourceRow, 0, sourceParent ), QgsProjectStyleDatabaseModel::Role::StyleRole ).value< QObject * >() ) )
|
||||
{
|
||||
const QFileInfo fi( path );
|
||||
if ( fi.suffix().compare( QLatin1String( "xml" ), Qt::CaseInsensitive ) == 0 )
|
||||
if ( style->isReadOnly() )
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -3043,6 +3043,16 @@ bool QgsStyle::isXmlStyleFile( const QString &path )
|
||||
return line == QLatin1String( "<!DOCTYPE qgis_style>" );
|
||||
}
|
||||
|
||||
bool QgsStyle::isReadOnly() const
|
||||
{
|
||||
return mReadOnly;
|
||||
}
|
||||
|
||||
void QgsStyle::setReadOnly( bool readOnly )
|
||||
{
|
||||
mReadOnly = readOnly;
|
||||
}
|
||||
|
||||
bool QgsStyle::updateSymbol( StyleEntity type, const QString &name )
|
||||
{
|
||||
QDomDocument doc( QStringLiteral( "dummy" ) );
|
||||
|
@ -203,6 +203,28 @@ class CORE_EXPORT QgsStyle : public QObject
|
||||
*/
|
||||
void setName( const QString &name );
|
||||
|
||||
/**
|
||||
* Returns TRUE if the style is considered a read-only library.
|
||||
*
|
||||
* \note This flag is used to control GUI operations, and does not prevent calling functions
|
||||
* which mutate the style directly via the API.
|
||||
*
|
||||
* \see setReadOnly()
|
||||
* \since QGIS 3.26
|
||||
*/
|
||||
bool isReadOnly() const;
|
||||
|
||||
/**
|
||||
* Sets whether the style is considered a read-only library.
|
||||
*
|
||||
* \note This flag is used to control GUI operations, and does not prevent calling functions
|
||||
* which mutate the style directly via the API.
|
||||
*
|
||||
* \see isReadOnly()
|
||||
* \since QGIS 3.26
|
||||
*/
|
||||
void setReadOnly( bool readOnly );
|
||||
|
||||
/**
|
||||
* Adds an \a entity to the style, with the specified \a name. Ownership is not transferred.
|
||||
*
|
||||
@ -1147,6 +1169,7 @@ class CORE_EXPORT QgsStyle : public QObject
|
||||
private:
|
||||
|
||||
QString mName;
|
||||
bool mReadOnly = false;
|
||||
|
||||
QgsSymbolMap mSymbols;
|
||||
QgsVectorColorRampMap mColorRamps;
|
||||
|
@ -204,6 +204,10 @@ void TestStyle::testProperties()
|
||||
|
||||
s.setFileName( QStringLiteral( "file name" ) );
|
||||
QCOMPARE( s.fileName(), QStringLiteral( "file name" ) );
|
||||
|
||||
QVERIFY( !s.isReadOnly() );
|
||||
s.setReadOnly( true );
|
||||
QVERIFY( s.isReadOnly() );
|
||||
}
|
||||
|
||||
void TestStyle::testCreateSymbols()
|
||||
|
Loading…
x
Reference in New Issue
Block a user