Skip to content

Commit e5e37fc

Browse files
committed
[needs-docs] Use a QgsFileWidget for template file selector
Rename "Add" button to "Create"
1 parent a30dd8a commit e5e37fc

File tree

6 files changed

+38
-46
lines changed

6 files changed

+38
-46
lines changed

python/gui/qgsfilewidget.sip

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ returns if the relative path is with respect to the project path or the default
157157
determines if the relative path is with respect to the project path or the default path
158158
%End
159159

160-
QLineEdit *lineEdit();
160+
QgsFilterLineEdit *lineEdit();
161161
%Docstring
162162
Returns a pointer to the widget's line edit, which can be used to customize
163163
the appearance and behavior of the line edit portion of the widget.
164164
.. versionadded:: 3.0
165-
:rtype: QLineEdit
165+
:rtype: QgsFilterLineEdit
166166
%End
167167

168168
signals:

src/app/layout/qgslayoutmanagerdialog.cpp

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,25 @@ QgsLayoutManagerDialog::QgsLayoutManagerDialog( QWidget *parent, Qt::WindowFlags
4141
setupUi( this );
4242
connect( mAddButton, &QPushButton::clicked, this, &QgsLayoutManagerDialog::mAddButton_clicked );
4343
connect( mTemplate, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsLayoutManagerDialog::mTemplate_currentIndexChanged );
44-
connect( mTemplatePathBtn, &QPushButton::pressed, this, &QgsLayoutManagerDialog::mTemplatePathBtn_pressed );
4544
connect( mTemplatesDefaultDirBtn, &QPushButton::pressed, this, &QgsLayoutManagerDialog::mTemplatesDefaultDirBtn_pressed );
4645
connect( mTemplatesUserDirBtn, &QPushButton::pressed, this, &QgsLayoutManagerDialog::mTemplatesUserDirBtn_pressed );
4746

4847
QgsGui::instance()->enableAutoGeometryRestore( this );
48+
mTemplateFileWidget->setStorageMode( QgsFileWidget::GetFile );
49+
mTemplateFileWidget->setFilter( tr( "Layout templates" ) + QStringLiteral( " (*.qpt *.QPT)" ) );
50+
mTemplateFileWidget->setDialogTitle( tr( "Select a Template" ) );
51+
mTemplateFileWidget->lineEdit()->setShowClearButton( false );
52+
QgsSettings settings;
53+
mTemplateFileWidget->setDefaultRoot( settings.value( QStringLiteral( "UI/lastComposerTemplateDir" ), QString() ).toString() );
54+
mTemplateFileWidget->setFilePath( settings.value( QStringLiteral( "UI/ComposerManager/templatePath" ), QString() ).toString() );
55+
56+
connect( mTemplateFileWidget, &QgsFileWidget::fileChanged, this, [ = ]
57+
{
58+
QgsSettings settings;
59+
settings.setValue( QStringLiteral( "UI/ComposerManager/templatePath" ), mTemplateFileWidget->filePath() );
60+
QFileInfo tmplFileInfo( mTemplateFileWidget->filePath() );
61+
settings.setValue( QStringLiteral( "UI/lastComposerTemplateDir" ), tmplFileInfo.absolutePath() );
62+
} );
4963

5064
mModel = new QgsLayoutManagerModel( QgsProject::instance()->layoutManager(),
5165
this );
@@ -85,9 +99,6 @@ QgsLayoutManagerDialog::QgsLayoutManagerDialog( QWidget *parent, Qt::WindowFlags
8599
this->addTemplates( defaultTemplateMap );
86100
this->addTemplates( this->otherTemplates() );
87101

88-
QgsSettings settings;
89-
mTemplatePathLineEdit->setText( settings.value( QStringLiteral( "UI/ComposerManager/templatePath" ), QString() ).toString() );
90-
91102
toggleButtons();
92103
}
93104

@@ -193,7 +204,7 @@ void QgsLayoutManagerDialog::mAddButton_clicked()
193204
{
194205
if ( mTemplate->currentIndex() == 1 )
195206
{
196-
templateFile.setFileName( mTemplatePathLineEdit->text() );
207+
templateFile.setFileName( mTemplateFileWidget->filePath() );
197208
}
198209
else
199210
{
@@ -254,25 +265,7 @@ void QgsLayoutManagerDialog::mAddButton_clicked()
254265
void QgsLayoutManagerDialog::mTemplate_currentIndexChanged( int indx )
255266
{
256267
bool specific = ( indx == 1 ); // comes just after empty template
257-
mTemplatePathLineEdit->setEnabled( specific );
258-
mTemplatePathBtn->setEnabled( specific );
259-
}
260-
261-
void QgsLayoutManagerDialog::mTemplatePathBtn_pressed()
262-
{
263-
QgsSettings settings;
264-
QString lastTmplDir = settings.value( QStringLiteral( "UI/lastComposerTemplateDir" ), QDir::homePath() ).toString();
265-
QString tmplPath = QFileDialog::getOpenFileName( this,
266-
tr( "Choose template" ),
267-
lastTmplDir,
268-
tr( "Layout templates" ) + QStringLiteral( " (*.qpt *.QPT)" ) );
269-
if ( !tmplPath.isEmpty() )
270-
{
271-
mTemplatePathLineEdit->setText( tmplPath );
272-
settings.setValue( QStringLiteral( "UI/ComposerManager/templatePath" ), tmplPath );
273-
QFileInfo tmplFileInfo( tmplPath );
274-
settings.setValue( QStringLiteral( "UI/lastComposerTemplateDir" ), tmplFileInfo.absolutePath() );
275-
}
268+
mTemplateFileWidget->setEnabled( specific );
276269
}
277270

278271
void QgsLayoutManagerDialog::mTemplatesDefaultDirBtn_pressed()

src/app/layout/qgslayoutmanagerdialog.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,6 @@ class QgsLayoutManagerDialog: public QDialog, private Ui::QgsLayoutManagerBase
107107
void mAddButton_clicked();
108108
//! Slot to track combobox to use specific template path
109109
void mTemplate_currentIndexChanged( int indx );
110-
//! Slot to choose path to template
111-
void mTemplatePathBtn_pressed();
112110
//! Slot to open default templates dir with user's system
113111
void mTemplatesDefaultDirBtn_pressed();
114112
//! Slot to open user templates dir with user's system

src/gui/qgsfilewidget.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ void QgsFileWidget::setRelativeStorage( QgsFileWidget::RelativeStorage relativeS
210210
mRelativeStorage = relativeStorage;
211211
}
212212

213-
QLineEdit *QgsFileWidget::lineEdit()
213+
QgsFilterLineEdit *QgsFileWidget::lineEdit()
214214
{
215215
return mLineEdit;
216216
}

src/gui/qgsfilewidget.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ class GUI_EXPORT QgsFileWidget : public QWidget
155155
* the appearance and behavior of the line edit portion of the widget.
156156
* \since QGIS 3.0
157157
*/
158-
QLineEdit *lineEdit();
158+
QgsFilterLineEdit *lineEdit();
159159

160160
signals:
161161
//! emitted as soon as the current file or directory is changed

src/ui/layout/qgslayoutmanagerbase.ui

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,14 @@
5757
</sizepolicy>
5858
</property>
5959
<property name="text">
60-
<string>Add</string>
60+
<string>Create</string>
6161
</property>
6262
</widget>
6363
</item>
64-
<item row="0" column="0" colspan="2">
65-
<widget class="QComboBox" name="mTemplate"/>
66-
</item>
67-
<item row="1" column="0">
68-
<widget class="QLineEdit" name="mTemplatePathLineEdit"/>
69-
</item>
70-
<item row="1" column="1">
71-
<widget class="QPushButton" name="mTemplatePathBtn">
72-
<property name="text">
73-
<string>…</string>
64+
<item row="1" column="0" colspan="3">
65+
<widget class="QgsFileWidget" name="mTemplateFileWidget" native="true">
66+
<property name="focusPolicy">
67+
<enum>Qt::StrongFocus</enum>
7468
</property>
7569
</widget>
7670
</item>
@@ -98,7 +92,7 @@
9892
</sizepolicy>
9993
</property>
10094
<property name="text">
101-
<string>user</string>
95+
<string>User</string>
10296
</property>
10397
</widget>
10498
</item>
@@ -111,7 +105,7 @@
111105
</sizepolicy>
112106
</property>
113107
<property name="text">
114-
<string>default</string>
108+
<string>Default</string>
115109
</property>
116110
</widget>
117111
</item>
@@ -130,6 +124,9 @@
130124
</item>
131125
</layout>
132126
</item>
127+
<item row="0" column="0" colspan="2">
128+
<widget class="QComboBox" name="mTemplate"/>
129+
</item>
133130
</layout>
134131
</widget>
135132
</item>
@@ -152,17 +149,21 @@
152149
<header>qgscollapsiblegroupbox.h</header>
153150
<container>1</container>
154151
</customwidget>
152+
<customwidget>
153+
<class>QgsFileWidget</class>
154+
<extends>QWidget</extends>
155+
<header>qgsfilewidget.h</header>
156+
<container>1</container>
157+
</customwidget>
155158
</customwidgets>
156159
<tabstops>
157160
<tabstop>mLayoutListView</tabstop>
158161
<tabstop>mTemplateGrpBox</tabstop>
159162
<tabstop>mTemplate</tabstop>
160163
<tabstop>mAddButton</tabstop>
161-
<tabstop>mTemplatePathLineEdit</tabstop>
162-
<tabstop>mTemplatePathBtn</tabstop>
164+
<tabstop>mTemplateFileWidget</tabstop>
163165
<tabstop>mTemplatesUserDirBtn</tabstop>
164166
<tabstop>mTemplatesDefaultDirBtn</tabstop>
165-
<tabstop>mButtonBox</tabstop>
166167
</tabstops>
167168
<resources/>
168169
<connections>

0 commit comments

Comments
 (0)