def file_dialog(dir='', for_open=True, fmt='', is_folder=False): """Dialog z eksploratorem Windows. Otwieranie/tworzenie folderów i plików.""" options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog options |= QFileDialog.DontUseCustomDirectoryIcons dialog = QFileDialog() dialog.setOptions(options) dialog.setFilter(dialog.filter() | QDir.Hidden) if is_folder: # Otwieranie folderu dialog.setFileMode(QFileDialog.DirectoryOnly) else: # Otwieranie pliku dialog.setFileMode(QFileDialog.AnyFile) # Otwieranie / zapisywanie: dialog.setAcceptMode( QFileDialog.AcceptOpen) if for_open else dialog.setAcceptMode( QFileDialog.AcceptSave) # Ustawienie filtrowania rozszerzeń plików: if fmt != '' and not is_folder: dialog.setDefaultSuffix(fmt) dialog.setNameFilters([f'{fmt} (*.{fmt})']) # Ścieżka startowa: if dir != '': dialog.setDirectory(str(dir)) else: dialog.setDirectory(str(os.environ["HOMEPATH"])) # Przekazanie ścieżki folderu/pliku: if dialog.exec_() == QDialog.Accepted: path = dialog.selectedFiles()[0] return path else: return ''
def FileDialog(directory='', forOpen=True, fmt='', isFolder=False): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog options |= QFileDialog.DontUseCustomDirectoryIcons dialog = QFileDialog() dialog.setOptions(options) dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) # ARE WE TALKING ABOUT FILES OR FOLDERS if isFolder: dialog.setFileMode(QFileDialog.DirectoryOnly) else: dialog.setFileMode(QFileDialog.AnyFile) # OPENING OR SAVING dialog.setAcceptMode(QFileDialog.AcceptOpen) if forOpen else dialog.setAcceptMode(QFileDialog.AcceptSave) # SET FORMAT, IF SPECIFIED if fmt != '' and isFolder is False: dialog.setDefaultSuffix(fmt) dialog.setNameFilters([f'{fmt} (*.{fmt})']) # SET THE STARTING DIRECTORY if directory != '': dialog.setDirectory(str(directory)) else: dialog.setDirectory(str(ROOT_DIR)) if dialog.exec_() == QDialog.Accepted: path = dialog.selectedFiles()[0] # returns a list return path else: return ''
def file_dlg(self, text): msg_box = QMessageBox() msg_box.setIcon(QMessageBox.Question) try: msg_box.setWindowIcon( QtGui.QIcon(os.path.join("misc", "archerrank2.svg"))) except FileNotFoundError: msg_box.setWindowIcon( QtGui.QIcon( os.path.abspath( os.path.join(os.path.dirname(sys.argv[0]), "misc", "archerrank2.svg")))) msg_box.setText(self.tr("Question")) msg_box.setInformativeText(text) msg_box.addButton(self.tr('Load'), QMessageBox.AcceptRole) msg_box.addButton(self.tr('New'), QMessageBox.AcceptRole) msg_box.addButton(self.tr('Exit'), QMessageBox.NoRole) reply = msg_box.exec_() if reply == 0: fileName, _ = QFileDialog.getOpenFileName( None, "QFileDialog.getOpenFileName()", "", "Acherrang2 Files (*.sqlite)") return fileName elif reply == 1: filedialog = QFileDialog(msg_box) filedialog.setFilter(filedialog.filter() | QtCore.QDir.Hidden) filedialog.setDefaultSuffix('sqlite') filedialog.setAcceptMode(QFileDialog.AcceptSave) filedialog.setNameFilters(["Acherrang2 Files (*.sqlite)"]) if filedialog.exec_() == QFileDialog.Accepted: return filedialog.selectedFiles()[0] return else: return "exit"
def file_chooser(self): dialog = QFileDialog() dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) dialog.setDefaultSuffix("mp4") dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.setNameFilters(["H.264 (*.mp4)", "MKV (*.mkv)"]) if dialog.exec_() == QDialog.Accepted: self.a6c1.setText(dialog.selectedFiles()[0])
def action_select_output_files_path(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog options |= QFileDialog.DontUseCustomDirectoryIcons dialog = QFileDialog() dialog.setOptions(options) dialog.setFilter(dialog.filter() | QDir.Hidden) path = dialog.getExistingDirectory(self, 'Select directory', options=options) if path: self.lineedit_output_files_path.setText(path)
def getOpenFileName(parent, *args, **kwargs): """ Workaround to give control about hidden files """ dlg = QFileDialog(parent, *args, **kwargs) dlg.setOption(dlg.DontUseNativeDialog, True) dlg.setOption(dlg.HideNameFilterDetails, True) dlg.setFileMode(dlg.ExistingFile) if hiddenFiles(parent): dlg.setFilter(dlg.filter() | QDir.Hidden) if dlg.exec_() == QDialog.Accepted: return dlg.selectedFiles()[0] return str()
def FileDialogExport(): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog options |= QFileDialog.DontUseCustomDirectoryIcons dialog = QFileDialog() dialog.setOptions(options) dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) dialog.setFileMode(QFileDialog.AnyFile) dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.setDefaultSuffix("ktmf") dialog.setNameFilters([f'{"Kayto Timeline File"} (*.{"ktmf"})']) if dialog.exec_() == QDialog.Accepted: return dialog.selectedFiles()[0]
def showOutputDirDialog(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog options |= QFileDialog.DontUseCustomDirectoryIcons dialog = QFileDialog() dialog.setOptions(options) dialog.setFileMode(QFileDialog.DirectoryOnly) dialog.setFilter(dialog.filter() | QDir.Hidden) if dialog.exec_() == QDialog.Accepted: temp = dialog.selectedFiles()[0] if temp: global output_dir output_dir = temp + "/" self.output_dir_label.setText(output_dir)
def save_preset_cb(self): """ Save user settings to file """ dialog = QFileDialog() dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) dialog.setDefaultSuffix("json") dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.setNameFilters(["JSON (*.json)"]) if dialog.exec_() == QDialog.Accepted: preset_path = dialog.selectedFiles()[0] save_json(self.path_hotkey_dict, preset_path) QtWidgets.QMessageBox.information( self, "Saved", f"Saved hotkey preset: {preset_path}" ) else: print("Cancelled")
def showDialogSecond(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog options |= QFileDialog.DontUseCustomDirectoryIcons dialog = QFileDialog() dialog.setOptions(options) dialog.setNameFilters(["Zip archives (*.zip)"]) dialog.setFilter(dialog.filter() | QDir.Hidden) if dialog.exec_() == QDialog.Accepted: temp = dialog.selectedFiles()[0] if temp: global second_tf_path second_tf_path = temp filename = Path(second_tf_path).name self.second_tf_label.setText(filename)
def LoadFile(Title="Load ...", Filters=['All files (*.*)'], Suffix=None, currentDirectory=None, currentFile=None): from PyQt5.QtWidgets import QDialog, QFileDialog import PyQt5.QtCore as QtCore dialog = QFileDialog() dialog.setWindowTitle(Title) if currentDirectory is not None: if len(currentDirectory): dialog.setDirectory(currentDirectory) if currentFile is not None: dialog.selectFile(currentFile) if Suffix is not None: dialog.setDefaultSuffix(Suffix) dialog.setOption(QFileDialog.DontUseNativeDialog) dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) dialog.setNameFilters(Filters) dialog.setAcceptMode(QFileDialog.AcceptOpen) if dialog.exec_() == QDialog.Accepted: return dialog.selectedFiles()[0] return []
def filedialog(kind="", directory=os.path.dirname(__file__), for_open=True, fmt="", is_folder=False): """general dialog function.""" label = "select the folder for " + kind options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog options |= QFileDialog.DontUseCustomDirectoryIcons dialog = QFileDialog(caption=label) dialog.setOptions(options) dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) # ARE WE TALKING ABOUT FILES OR FOLDERS if is_folder: dialog.setFileMode(QFileDialog.DirectoryOnly) else: dialog.setFileMode(QFileDialog.AnyFile) # OPENING OR SAVING dialog.setAcceptMode( QFileDialog.AcceptOpen) if for_open else dialog.setAcceptMode( QFileDialog.AcceptSave) # SET FORMAT, IF SPECIFIED if fmt != "" and is_folder is False: dialog.setDefaultSuffix(fmt) dialog.setNameFilters([f"{fmt} (*.{fmt})"]) # SET THE STARTING DIRECTORY if directory != "": dialog.setDirectory(str(directory)) else: dialog.setDirectory(os.getcwd()) if dialog.exec_() == QDialog.Accepted: path = dialog.selectedFiles()[0] # returns a list else: path = "" return path
def getExistingDirectories(parent, *args, **kwargs): """ Workaround for selecting multiple directories adopted from http://www.qtcentre.org/threads/34226-QFileDialog-select-multiple-directories?p=158482#post158482 This also give control about hidden folders """ dlg = QFileDialog(parent, *args, **kwargs) dlg.setOption(dlg.DontUseNativeDialog, True) dlg.setOption(dlg.HideNameFilterDetails, True) dlg.setFileMode(dlg.Directory) dlg.setOption(dlg.ShowDirsOnly, True) if hiddenFiles(parent): dlg.setFilter(dlg.filter() | QDir.Hidden) dlg.findChildren(QListView)[0].setSelectionMode( QAbstractItemView.ExtendedSelection) dlg.findChildren(QTreeView)[0].setSelectionMode( QAbstractItemView.ExtendedSelection) if dlg.exec_() == QDialog.Accepted: return dlg.selectedFiles() return [ str(), ]
def load_preset_cb(self): """ Load user settings from file """ dialog = QFileDialog() dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) dialog.setDefaultSuffix("json") dialog.setAcceptMode(QFileDialog.AcceptOpen) dialog.setNameFilters(["JSON (*.json)"]) if dialog.exec_() == QDialog.Accepted: preset_path = dialog.selectedFiles()[0] self.path_hotkey_dict = load_json(preset_path) self.path_hotkey_dict = { k: v for k, v in self.path_hotkey_dict.items() if v is not None } print("loaded dict: ", self.path_hotkey_dict) self.hotkey_path_dict = { value: key for key, value in self.path_hotkey_dict.items() } self.restore_table_from_dict() else: print("Cancelled")