From 077db7a4a432c78490ae34ead3f1d5338175b81c Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 12 Jun 2019 10:32:21 +0200 Subject: Examples: Use QSaveFile QSaveFile should preferably used for writing out files from editor applications to ensure files are properly written and existing files are not overwritten should writing fail. Change-Id: I5d9b98c168649d23f5ee31171b1729fd230dc8de Reviewed-by: Christian Tismer --- .../widgets/mainwindows/application/application.py | 23 ++++++++++++--------- examples/widgets/mainwindows/mdi/mdi.py | 24 +++++++++++++--------- 2 files changed, 27 insertions(+), 20 deletions(-) (limited to 'examples/widgets/mainwindows') diff --git a/examples/widgets/mainwindows/application/application.py b/examples/widgets/mainwindows/application/application.py index e0a46bdad..624fb47d5 100644 --- a/examples/widgets/mainwindows/application/application.py +++ b/examples/widgets/mainwindows/application/application.py @@ -229,19 +229,22 @@ class MainWindow(QtWidgets.QMainWindow): self.statusBar().showMessage("File loaded", 2000) def saveFile(self, fileName): - file = QtCore.QFile(fileName) - if not file.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text): - QtWidgets.QMessageBox.warning(self, "Application", - "Cannot write file %s:\n%s." % (fileName, file.errorString())) - return False - - outf = QtCore.QTextStream(file) + error = None QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) - - # FIXME: Once file is out of scope, the file is empty, instead of having text. - outf << self.textEdit.toPlainText() + file = QtCore.QSaveFile(fileName) + if file.open(QtCore.QFile.WriteOnly | QtCore.QFile.Text): + outf = QtCore.QTextStream(file) + outf << self.textEdit.toPlainText() + if not file.commit(): + error = "Cannot write file %s:\n%s." % (fileName, file.errorString()) + else: + error = "Cannot open file %s:\n%s." % (fileName, file.errorString()) QtWidgets.QApplication.restoreOverrideCursor() + if error: + QtWidgets.QMessageBox.warning(self, "Application", error) + return False + self.setCurrentFile(fileName) self.statusBar().showMessage("File saved", 2000) return True diff --git a/examples/widgets/mainwindows/mdi/mdi.py b/examples/widgets/mainwindows/mdi/mdi.py index b3c1c1eb9..9daca826d 100644 --- a/examples/widgets/mainwindows/mdi/mdi.py +++ b/examples/widgets/mainwindows/mdi/mdi.py @@ -43,7 +43,7 @@ """PySide2 port of the widgets/draganddrop/draggabletext example from Qt v5.x, originating from PyQt""" from PySide2.QtCore import (QFile, QFileInfo, QPoint, QSettings, QSignalMapper, - QSize, QTextStream, Qt) + QSaveFile, QSize, QTextStream, Qt) from PySide2.QtGui import QIcon, QKeySequence from PySide2.QtWidgets import (QAction, QApplication, QFileDialog, QMainWindow, QMdiArea, QMessageBox, QTextEdit, QWidget) @@ -100,18 +100,22 @@ class MdiChild(QTextEdit): return self.saveFile(fileName) def saveFile(self, fileName): - file = QFile(fileName) - - if not file.open(QFile.WriteOnly | QFile.Text): - QMessageBox.warning(self, "MDI", - "Cannot write file %s:\n%s." % (fileName, file.errorString())) - return False - - outstr = QTextStream(file) + error = None QApplication.setOverrideCursor(Qt.WaitCursor) - outstr << self.toPlainText() + file = QSaveFile(fileName) + if file.open(QFile.WriteOnly | QFile.Text): + outstr = QTextStream(file) + outstr << self.toPlainText() + if not file.commit(): + error = "Cannot write file %s:\n%s." % (fileName, file.errorString()) + else: + error = "Cannot open file %s:\n%s." % (fileName, file.errorString()) QApplication.restoreOverrideCursor() + if error: + QMessageBox.warning(self, "MDI", error) + return False + self.setCurrentFile(fileName) return True -- cgit v1.2.3