mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
Auto generated names for reports are 'Report #'
This commit is contained in:
parent
b184c5e102
commit
3ac214170f
@ -161,9 +161,9 @@ Generates a unique title for a new composition, which does not
|
||||
clash with any already contained by the manager.
|
||||
%End
|
||||
|
||||
QString generateUniqueTitle() const;
|
||||
QString generateUniqueTitle( QgsMasterLayoutInterface::Type type = QgsMasterLayoutInterface::PrintLayout ) const;
|
||||
%Docstring
|
||||
Generates a unique title for a new layout, which does not
|
||||
Generates a unique title for a new layout of the specified ``type``, which does not
|
||||
clash with any already contained by the manager.
|
||||
%End
|
||||
|
||||
|
@ -249,7 +249,7 @@ void QgsLayoutManagerDialog::mAddButton_clicked()
|
||||
|
||||
if ( title.isEmpty() )
|
||||
{
|
||||
title = QgsProject::instance()->layoutManager()->generateUniqueTitle();
|
||||
title = QgsProject::instance()->layoutManager()->generateUniqueTitle( QgsMasterLayoutInterface::PrintLayout );
|
||||
}
|
||||
|
||||
std::unique_ptr< QgsPrintLayout > layout = qgis::make_unique< QgsPrintLayout >( QgsProject::instance() );
|
||||
@ -302,7 +302,7 @@ void QgsLayoutManagerDialog::createReport()
|
||||
|
||||
if ( title.isEmpty() )
|
||||
{
|
||||
title = QgsProject::instance()->layoutManager()->generateUniqueTitle();
|
||||
title = QgsProject::instance()->layoutManager()->generateUniqueTitle( QgsMasterLayoutInterface::Report );
|
||||
}
|
||||
|
||||
std::unique_ptr< QgsReport > report = qgis::make_unique< QgsReport >( QgsProject::instance() );
|
||||
|
@ -7392,7 +7392,7 @@ bool QgisApp::uniqueLayoutTitle( QWidget *parent, QString &title, bool acceptEmp
|
||||
else
|
||||
{
|
||||
titleValid = true;
|
||||
newTitle = QgsProject::instance()->layoutManager()->generateUniqueTitle();
|
||||
newTitle = QgsProject::instance()->layoutManager()->generateUniqueTitle( type );
|
||||
}
|
||||
}
|
||||
else if ( layoutNames.indexOf( newTitle, 1 ) >= 0 )
|
||||
@ -7461,7 +7461,7 @@ QgsLayoutDesignerDialog *QgisApp::createNewLayout( QString title )
|
||||
{
|
||||
if ( title.isEmpty() )
|
||||
{
|
||||
title = QgsProject::instance()->layoutManager()->generateUniqueTitle();
|
||||
title = QgsProject::instance()->layoutManager()->generateUniqueTitle( QgsMasterLayoutInterface::PrintLayout );
|
||||
}
|
||||
//create new layout object
|
||||
QgsPrintLayout *layout = new QgsPrintLayout( QgsProject::instance() );
|
||||
|
@ -355,7 +355,7 @@ QString QgsLayoutManager::generateUniqueComposerTitle() const
|
||||
return name;
|
||||
}
|
||||
|
||||
QString QgsLayoutManager::generateUniqueTitle() const
|
||||
QString QgsLayoutManager::generateUniqueTitle( QgsMasterLayoutInterface::Type type ) const
|
||||
{
|
||||
QStringList names;
|
||||
for ( QgsMasterLayoutInterface *l : mLayouts )
|
||||
@ -366,7 +366,15 @@ QString QgsLayoutManager::generateUniqueTitle() const
|
||||
int id = 1;
|
||||
while ( name.isEmpty() || names.contains( name ) )
|
||||
{
|
||||
name = tr( "Layout %1" ).arg( id );
|
||||
switch ( type )
|
||||
{
|
||||
case QgsMasterLayoutInterface::PrintLayout:
|
||||
name = tr( "Layout %1" ).arg( id );
|
||||
break;
|
||||
case QgsMasterLayoutInterface::Report:
|
||||
name = tr( "Report %1" ).arg( id );
|
||||
break;
|
||||
}
|
||||
id++;
|
||||
}
|
||||
return name;
|
||||
|
@ -161,10 +161,10 @@ class CORE_EXPORT QgsLayoutManager : public QObject
|
||||
QString generateUniqueComposerTitle() const;
|
||||
|
||||
/**
|
||||
* Generates a unique title for a new layout, which does not
|
||||
* Generates a unique title for a new layout of the specified \a type, which does not
|
||||
* clash with any already contained by the manager.
|
||||
*/
|
||||
QString generateUniqueTitle() const;
|
||||
QString generateUniqueTitle( QgsMasterLayoutInterface::Type type = QgsMasterLayoutInterface::PrintLayout ) const;
|
||||
|
||||
signals:
|
||||
|
||||
|
@ -19,7 +19,9 @@ from qgis.PyQt.QtXml import QDomDocument
|
||||
from qgis.core import (QgsComposition,
|
||||
QgsPrintLayout,
|
||||
QgsLayoutManager,
|
||||
QgsProject)
|
||||
QgsProject,
|
||||
QgsReport,
|
||||
QgsMasterLayoutInterface)
|
||||
|
||||
from qgis.testing import start_app, unittest
|
||||
from utilities import unitTestDataPath
|
||||
@ -375,20 +377,29 @@ class TestQgsLayoutManager(unittest.TestCase):
|
||||
def testGenerateUniqueTitle(self):
|
||||
project = QgsProject()
|
||||
manager = QgsLayoutManager(project)
|
||||
self.assertEqual(manager.generateUniqueTitle(), 'Layout 1')
|
||||
self.assertEqual(manager.generateUniqueTitle(QgsMasterLayoutInterface.PrintLayout), 'Layout 1')
|
||||
self.assertEqual(manager.generateUniqueTitle(QgsMasterLayoutInterface.Report), 'Report 1')
|
||||
|
||||
layout = QgsPrintLayout(project)
|
||||
layout.setName(manager.generateUniqueTitle())
|
||||
manager.addLayout(layout)
|
||||
|
||||
self.assertEqual(manager.generateUniqueTitle(), 'Layout 2')
|
||||
self.assertEqual(manager.generateUniqueTitle(QgsMasterLayoutInterface.Report), 'Report 1')
|
||||
layout2 = QgsPrintLayout(project)
|
||||
layout2.setName(manager.generateUniqueTitle())
|
||||
manager.addLayout(layout2)
|
||||
|
||||
self.assertEqual(manager.generateUniqueTitle(), 'Layout 3')
|
||||
|
||||
report1 = QgsReport(project)
|
||||
report1.setName(manager.generateUniqueTitle(QgsMasterLayoutInterface.Report))
|
||||
manager.addLayout(report1)
|
||||
self.assertEqual(manager.generateUniqueTitle(QgsMasterLayoutInterface.Report), 'Report 2')
|
||||
|
||||
manager.clear()
|
||||
self.assertEqual(manager.generateUniqueTitle(), 'Layout 1')
|
||||
self.assertEqual(manager.generateUniqueTitle(QgsMasterLayoutInterface.Report), 'Report 1')
|
||||
|
||||
def testRenameSignalCompositions(self):
|
||||
project = QgsProject()
|
||||
|
Loading…
x
Reference in New Issue
Block a user