diff -r a081458cc57b -r 144a6b854f70 eric7/E5Gui/EricFileSaveConfirmDialog.py --- a/eric7/E5Gui/EricFileSaveConfirmDialog.py Sat May 22 19:52:34 2021 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2018 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing a dialog to enter a file system path using a file picker. -""" - -import os - -from PyQt6.QtWidgets import ( - QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QLineEdit -) - -from .EricPathPicker import EricPathPicker, EricPathPickerModes - - -class EricFileSaveConfirmDialog(QDialog): - """ - Class implementing a dialog to enter a file system path using a file - picker. - """ - def __init__(self, filename, title, message="", picker=True, parent=None): - """ - Constructor - - @param filename file name to be shown - @type str - @param title title for the dialog - @type str - @param message message to be shown - @type str - @param picker flag indicating to use a path picker - @type bool - @param parent reference to the parent widget - @type QWidget - """ - super().__init__(parent) - - self.setMinimumWidth(400) - - self.__selectedAction = "cancel" - self.__filename = filename - - self.__layout = QVBoxLayout(self) - - self.__label = QLabel(self) - self.__label.setWordWrap(True) - if message: - self.__label.setText(message) - else: - self.__label.setText(self.tr("The given file exists already.")) - - if picker: - self.__pathPicker = EricPathPicker(self) - self.__pathPicker.setMode(EricPathPickerModes.SAVE_FILE_MODE) - else: - self.__pathPicker = QLineEdit(self) - self.__pathPicker.setClearButtonEnabled(True) - - self.__buttonBox = QDialogButtonBox(self) - self.__cancelButton = self.__buttonBox.addButton( - QDialogButtonBox.StandardButton.Cancel) - self.__overwriteButton = self.__buttonBox.addButton( - self.tr("Overwrite"), QDialogButtonBox.ButtonRole.AcceptRole) - self.__renameButton = self.__buttonBox.addButton( - self.tr("Rename"), QDialogButtonBox.ButtonRole.AcceptRole) - - self.__layout.addWidget(self.__label) - self.__layout.addWidget(self.__pathPicker) - self.__layout.addWidget(self.__buttonBox) - - # set values and states - self.__pathPicker.setText(filename) - if picker: - self.__pathPicker.setDefaultDirectory(os.path.dirname(filename)) - self.__renameButton.setEnabled(False) - self.__cancelButton.setDefault(True) - - self.__buttonBox.clicked.connect(self.__buttonBoxClicked) - self.__pathPicker.textChanged.connect(self.__filenameChanged) - - def __buttonBoxClicked(self, button): - """ - Private slot to handle the user clicking a button. - - @param button reference to the clicked button - @type QAbstractButton - """ - if button == self.__cancelButton: - self.__selectedAction = "cancel" - self.reject() - elif button == self.__renameButton: - self.__selectedAction = "rename" - self.accept() - elif button == self.__overwriteButton: - self.__selectedAction = "overwrite" - self.accept() - - def __filenameChanged(self, text): - """ - Private slot to handle a change of the file name. - - @param text new file name - @type str - """ - self.__renameButton.setEnabled(text != self.__filename) - - def selectedAction(self): - """ - Public method to get the selected action and associated data. - - @return tuple containing the selected action (cancel, rename, - overwrite) and the filename (in case of 'rename' or 'overwrite') - @rtype tuple of (str, str) - """ - if self.__selectedAction == "rename": - filename = self.__pathPicker.text() - elif self.__selectedAction == "overwrite": - filename = self.__filename - else: - filename = "" - return self.__selectedAction, filename - - -def confirmOverwrite(filename, title, message="", picker=True, parent=None): - """ - Function to confirm that a file shall be overwritten. - - @param filename file name to be shown - @type str - @param title title for the dialog - @type str - @param message message to be shown - @type str - @param picker flag indicating to use a path picker - @type bool - @param parent reference to the parent widget - @type QWidget - @return tuple containing the selected action (cancel, rename, - overwrite) and the filename (in case of 'rename' or 'overwrite') - @rtype tuple of (str, str) - """ - dlg = EricFileSaveConfirmDialog(filename, title, message=message, - picker=picker, parent=parent) - dlg.exec() - return dlg.selectedAction()