Source code for modules.GUI.filenameDialog

from PyQt5.QtCore import QDir
from PyQt5.QtWidgets import QFileDialog, QDialog
from utils.utils import DESKTOP


[docs]def getFilenameDialog(customDialog=True, title="Open", hiddenItems=False, multipleItems=False, isFolder=False, forOpen=True, directory='', filter_format=''): """ Build custom dialog to select multiple files :param customDialog: if False, use native system dialog, otherwise use custom dialog :param title: dialog title :param hiddenItems: display hidden items :param multipleItems: allow selection of multiple items :param isFolder: allow selection of folders :param forOpen: select files for opening or saving :param directory: start directory :param filter_format: filter to select only certain file types (for example \*.csv) :return: path of selected file (list of paths if multiple files are selected) """ options = QFileDialog.Options() if customDialog: options |= QFileDialog.DontUseNativeDialog options |= QFileDialog.DontUseCustomDirectoryIcons dialog = QFileDialog() dialog.setOptions(options) dialog.setWindowTitle(title) if hiddenItems: dialog.setFilter(dialog.filter() | QDir.Hidden) # Files or folders if isFolder: dialog.setFileMode(QFileDialog.DirectoryOnly) elif multipleItems: dialog.setFileMode(QFileDialog.ExistingFiles) else: dialog.setFileMode(QFileDialog.AnyFile) # Opening or saving if forOpen: dialog.setAcceptMode(QFileDialog.AcceptOpen) else: dialog.setAcceptMode(QFileDialog.AcceptSave) # Set format if filter_format != '' and isFolder is False: # ["Text files (*.txt)", "Images (*.png *.jpg)"] # dialog.setDefaultSuffix(filter_format) dialog.setNameFilters([filter_format]) # starting directory if directory != '': dialog.setDirectory(str(directory)) else: dialog.setDirectory(DESKTOP) if dialog.exec_() == QDialog.Accepted: path = dialog.selectedFiles() # returns a list return path else: return []