Skip to content

Commit cddca2f

Browse files
committedDec 7, 2017
[file widget] add a save file mode to allow file creation
1 parent bac80aa commit cddca2f

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed
 

‎src/gui/qgsfilewidget.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,17 @@ void QgsFileWidget::openFileDialog()
262262
title = !mDialogTitle.isEmpty() ? mDialogTitle : tr( "Select a directory" );
263263
fileName = QFileDialog::getExistingDirectory( this, title, QFileInfo( oldPath ).absoluteFilePath(), QFileDialog::ShowDirsOnly );
264264
break;
265+
case SaveFile:
266+
title = !mDialogTitle.isEmpty() ? mDialogTitle : tr( "Create or select a file" );
267+
if ( !confirmOverwrite() )
268+
{
269+
fileName = QFileDialog::getSaveFileName( this, title, QFileInfo( oldPath ).absoluteFilePath(), mFilter, nullptr, QFileDialog::DontConfirmOverwrite );
270+
}
271+
else
272+
{
273+
fileName = QFileDialog::getSaveFileName( this, title, QFileInfo( oldPath ).absoluteFilePath(), mFilter );
274+
}
275+
break;
265276
}
266277

267278
if ( fileName.isEmpty() && fileNames.isEmpty( ) )
@@ -283,6 +294,7 @@ void QgsFileWidget::openFileDialog()
283294
switch ( mStorageMode )
284295
{
285296
case GetFile:
297+
case SaveFile:
286298
settings.setValue( QStringLiteral( "UI/lastFileNameWidgetDir" ), QFileInfo( fileName ).absolutePath() );
287299
break;
288300
case GetDirectory:

‎src/gui/qgsfilewidget.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class GUI_EXPORT QgsFileWidget : public QWidget
6565
GetFile, //! Select a single file
6666
GetDirectory, //! Select a directory
6767
GetMultipleFiles, //! Select multiple files
68+
SaveFile, //! Select a single new or pre-existing file
6869
};
6970

7071
/**
@@ -120,6 +121,17 @@ class GUI_EXPORT QgsFileWidget : public QWidget
120121
*/
121122
void setFilter( const QString &filter );
122123

124+
/**
125+
* Sets whether a confirmation to overwrite an existing file will appear
126+
* \param confirmOverwrite If set to true, an overwrite confirmation will be shown
127+
*/
128+
void setConfirmOverwrite( bool confirmOverwrite ) { mConfirmOverwrite = confirmOverwrite; }
129+
130+
/**
131+
* Returns whether a confirmation will be shown when overwriting an existing file
132+
*/
133+
bool confirmOverwrite() const { return mConfirmOverwrite; }
134+
123135
//! determines if the tool button is shown
124136
bool fileWidgetButtonVisible() const;
125137
//! determines if the tool button is shown
@@ -173,6 +185,7 @@ class GUI_EXPORT QgsFileWidget : public QWidget
173185
QString mDialogTitle;
174186
QString mFilter;
175187
QString mDefaultRoot;
188+
bool mConfirmOverwrite = true;
176189
StorageMode mStorageMode = GetFile;
177190
RelativeStorage mRelativeStorage = Absolute;
178191

0 commit comments

Comments
 (0)
Please sign in to comment.