Documentation for check for unsaved changes before closing

This commit is contained in:
Lea Laux 2021-03-02 09:53:28 +01:00 committed by KDV Admin
parent 6fbfb10d64
commit b8867782cd
2 changed files with 24 additions and 2 deletions

View File

@ -555,11 +555,20 @@ class MainWindow(QMainWindow):
self.command_history_dialog.get_double_click_command.connect(self.load_empty_editor_with_command)
def closeEvent(self, a0: QtGui.QCloseEvent) -> None:
# TODO: Docu
"""
Reimplement the close event of the main window and as a consequence, the close event of the whole application.
Check for unsaved files in the editor tabs, which could affect the close process.
"""
# Check if the configuration for checking for unsaved files is not False, which means activated. Check also if
# there are open editor tabs, which are not saved. At this point, the user has been asked, if they want to stop
# the closing process and the check is True for that case.
if global_app_configurator.get_single_configuration("check_unsaved_files") is not False \
and self.mdi_area.check_for_unsaved_editor_tabs() is True:
# Ignore the close event.
a0.ignore()
return
# Accept the close event and end the application.
a0.accept()

View File

@ -306,22 +306,35 @@ class MdiArea(QMdiArea):
return None
def check_for_unsaved_editor_tabs(self):
# TODO: Docu
"""
Check for unsaved changes in the editor tabs of the mdi area.
"""
# Introduce a variable for unsaved changes. If there a unsaved changes, the variable is True, if not, False.
unsaved_changes = False
# Get the list of editor widgets in the mdi area.
editor_widget_list = [sub_window.widget() for sub_window in self.subWindowList()
if isinstance(sub_window.widget(), EditorWidget)]
# Check for every editor widget, if there are unsaved changes.
for editor_widget in editor_widget_list:
# Check in the specific editor widget for unsaved changes.
if editor_widget.check_for_unsaved_changes() is True:
# Warn the user and get the answer about closing anyway.
close_anyway = editor_widget.warn_about_unsaved_changes()
# If the user wants to close anyway, there are no unsaved changes.
if close_anyway is True:
unsaved_changes = False
# If the user does not want to close, there are unsaved changes.
else:
unsaved_changes = True
# Break the for loop, because there is now a result accepted by the user. All other potentially unsaved
# changes are checked with the previous check and user question.
break
# Return the result
return unsaved_changes