Skip to content

Commit ae3b39b

Browse files
committedJun 4, 2019
Redirect default layout template button to configured folder
The "Default templates" button in the layout manager now 1. checks if there is a composer_templates folder in the app dir 2. if not, redirects to the first configured composer templates folder 3. if no composer templates folder is configured, it's deactivated Fix #30064
1 parent 898c6a1 commit ae3b39b

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed
 

‎src/app/layout/qgslayoutmanagerdialog.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ QgsLayoutManagerDialog::QgsLayoutManagerDialog( QWidget *parent, Qt::WindowFlags
101101
addTemplates( defaultTemplateMap );
102102
addTemplates( otherTemplates() );
103103

104+
mTemplatesDefaultDirBtn->setToolTip( tr( "Use <i>Settings --> Options --> Layouts --> Layout Paths</i> to configure the folders in which QGIS will search for print layout templates." ) );
105+
104106
toggleButtons();
105107
}
106108

@@ -148,6 +150,7 @@ void QgsLayoutManagerDialog::addTemplates( const QMap<QString, QString> &templat
148150

149151
void QgsLayoutManagerDialog::activate()
150152
{
153+
updateTemplateButtonEnabledState();
151154
raise();
152155
setWindowState( windowState() & ~Qt::WindowMinimized );
153156
activateWindow();
@@ -163,9 +166,8 @@ QMap<QString, QString> QgsLayoutManagerDialog::defaultTemplates( bool fromUser )
163166
QMap<QString, QString> QgsLayoutManagerDialog::otherTemplates() const
164167
{
165168
QMap<QString, QString> templateMap;
166-
QStringList paths = QgsApplication::layoutTemplatePaths();
167-
const auto constPaths = paths;
168-
for ( const QString &path : constPaths )
169+
const QStringList paths = QgsApplication::layoutTemplatePaths();
170+
for ( const QString &path : paths )
169171
{
170172
QMap<QString, QString> templates = templatesFromPath( path );
171173
QMap<QString, QString>::const_iterator templateIt = templates.constBegin();
@@ -285,7 +287,14 @@ void QgsLayoutManagerDialog::mTemplate_currentIndexChanged( int indx )
285287

286288
void QgsLayoutManagerDialog::mTemplatesDefaultDirBtn_pressed()
287289
{
288-
openLocalDirectory( mDefaultTemplatesDir );
290+
if ( QDir( mDefaultTemplatesDir ).exists() )
291+
openLocalDirectory( mDefaultTemplatesDir );
292+
else
293+
{
294+
const QStringList paths = QgsApplication::layoutTemplatePaths();
295+
if ( !paths.empty() )
296+
openLocalDirectory( paths.at( 0 ) );
297+
}
289298
}
290299

291300
void QgsLayoutManagerDialog::mTemplatesUserDirBtn_pressed()
@@ -331,6 +340,11 @@ void QgsLayoutManagerDialog::openLocalDirectory( const QString &localDirPath )
331340
}
332341
}
333342

343+
void QgsLayoutManagerDialog::updateTemplateButtonEnabledState()
344+
{
345+
mTemplatesDefaultDirBtn->setEnabled( QDir( mDefaultTemplatesDir ).exists() || !QgsApplication::layoutTemplatePaths().empty() );
346+
}
347+
334348
#ifdef Q_OS_MAC
335349
void QgsLayoutManagerDialog::showEvent( QShowEvent *event )
336350
{

‎src/app/layout/qgslayoutmanagerdialog.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,20 @@ class QgsLayoutManagerDialog: public QDialog, private Ui::QgsLayoutManagerBase
4848

4949
/**
5050
* Returns the default templates (key: template name, value: absolute path to template file)
51-
* \param fromUser whether to return user templates from ~/.qgis/composer_templates
51+
* \param fromUser whether to return user templates from [profile folder]/composer_templates
5252
*/
5353
QMap<QString, QString> defaultTemplates( bool fromUser = false ) const;
5454
QMap<QString, QString> otherTemplates() const;
5555

5656
QMap<QString, QString> templatesFromPath( const QString &path ) const;
5757

5858
/**
59-
* Open local directory with user's system, creating it if not present
59+
* Opens local directory with user's system and tries to create it if not present
6060
*/
6161
void openLocalDirectory( const QString &localDirPath );
6262

63+
void updateTemplateButtonEnabledState();
64+
6365
QString mDefaultTemplatesDir;
6466
QString mUserTemplatesDir;
6567
QPushButton *mCreateReportButton = nullptr;

0 commit comments

Comments
 (0)
Please sign in to comment.