From ee5d80541a6bf5048fd2a78cddc737e0650ea046 Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Thu, 26 Jan 2023 20:24:18 +0100 Subject: [PATCH] Re-implementation of QFileDialog.getSaveFileName that allows to set defaultSuffix --- grum/h5filedlg.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/grum/h5filedlg.py b/grum/h5filedlg.py index 654345a..4aa37d2 100644 --- a/grum/h5filedlg.py +++ b/grum/h5filedlg.py @@ -1,6 +1,8 @@ from PyQt5.QtWidgets import QFileDialog +DEFAULT_SUFFIX = "h5" + FILETYPE_FILTERS = [ "HDF5 files (*.h5)", "All files (*)" @@ -10,7 +12,7 @@ FILETYPE_FILTERS = ";;".join(FILETYPE_FILTERS) def save_h5_file_dialog(parent): - fn, _chosen_filter = QFileDialog.getSaveFileName(parent, filter=FILETYPE_FILTERS) + fn, _chosen_filter = getSaveFileName(parent, filter=FILETYPE_FILTERS, defaultSuffix=DEFAULT_SUFFIX) return fn @@ -19,4 +21,50 @@ def open_h5_files_dialog(parent): return fns +def getSaveFileName( + parent=None, + caption="", + dir="", + filter="", + + selectedFilter=None, + defaultSuffix=None, + options=None +): + """ + Re-implementation of QFileDialog.getSaveFileName that allows to set defaultSuffix + """ + + dlg = QFileDialog( + parent=parent, + caption=caption, + directory=dir, + filter=filter + ) + + if selectedFilter: + dlg.selectNameFilter(selectedFilter) + + if defaultSuffix: + dlg.setDefaultSuffix(defaultSuffix) + + if options: + dlg.setOptions(options) + + dlg.setAcceptMode(QFileDialog.AcceptSave); + dlg.setFileMode(QFileDialog.AnyFile); + + res = dlg.exec() + if res == QFileDialog.Rejected: + return "", "" + + fns = dlg.selectedFiles() + assert len(fns) == 1 + fn = fns[0] + + selectedFilter = dlg.selectedNameFilter() + + return fn, selectedFilter + +