diff -r b7ebfc2e47d4 -r 59579e8aff98 src/eric7/Graphics/UMLDialog.py --- a/src/eric7/Graphics/UMLDialog.py Mon Feb 19 19:17:04 2024 +0100 +++ b/src/eric7/Graphics/UMLDialog.py Wed Feb 21 10:56:24 2024 +0100 @@ -247,11 +247,7 @@ self, self.tr("Save Diagram"), "", - self.tr( - "Eric Graphics File (*.egj);;" - "Eric Text Graphics File (*.e5g);;" - "All Files (*)" - ), + self.tr("Eric Graphics File (*.egj);;All Files (*)"), "", EricFileDialog.DontConfirmOverwrite, ) @@ -297,148 +293,33 @@ self, self.tr("Load Diagram"), "", - self.tr( - "Eric Graphics File (*.egj);;" - "Eric Text Graphics File (*.e5g);;" - "All Files (*)" - ), + self.tr("Eric Graphics File (*.egj);;All Files (*)"), ) if not filename: # Canceled by user return False - return ( - self.__readLineBasedGraphicsFile(filename) - if filename.endswith(".e5g") - else - # JSON format is the default - self.__readJsonGraphicsFile(filename) - ) + return self.__readJsonGraphicsFile(filename) ####################################################################### - ## Methods to read and write eric graphics files of the old line - ## based file format. + ## Methods to read and write eric graphics files of the JSON based + ## file format. ####################################################################### - def __readLineBasedGraphicsFile(self, filename): - """ - Private method to read an eric graphics file using the old line - based file format. - - @param filename name of the file to be read - @type str - @return flag indicating success - @rtype bool - """ - try: - with open(filename, "r", encoding="utf-8") as f: - data = f.read() - except OSError as err: - EricMessageBox.critical( - self, - self.tr("Load Diagram"), - self.tr( - """<p>The file <b>{0}</b> could not be read.</p>""" - """<p>Reason: {1}</p>""" - ).format(filename, str(err)), - ) - return False - - lines = data.splitlines() - if len(lines) < 3: - self.__showInvalidDataMessage(filename) - return False - - try: - # step 1: check version - linenum = 0 - key, value = lines[linenum].split(": ", 1) - if key.strip() != "version" or value.strip() not in UMLDialog.FileVersions: - self.__showInvalidDataMessage(filename, linenum) - return False - else: - version = value - - # step 2: extract diagram type - linenum += 1 - key, value = lines[linenum].split(": ", 1) - if key.strip() != "diagram_type": - self.__showInvalidDataMessage(filename, linenum) - return False - try: - diagramType = value.strip().split(None, 1)[0] - self.__diagramType = UMLDialogType(int(diagramType)) - except ValueError: - self.__showInvalidDataMessage(filename, linenum) - return False - self.scene.clear() - self.builder = self.__diagramBuilder(self.__diagramType, "") - - # step 3: extract scene size - linenum += 1 - key, value = lines[linenum].split(": ", 1) - if key.strip() != "scene_size": - self.__showInvalidDataMessage(filename, linenum) - return False - try: - width, height = [float(v.strip()) for v in value.split(";")] - except ValueError: - self.__showInvalidDataMessage(filename, linenum) - return False - self.umlView.setSceneSize(width, height) - - # step 4: extract builder data if available - linenum += 1 - key, value = lines[linenum].split(": ", 1) - if key.strip() == "builder_data": - ok = self.builder.parsePersistenceData(version, value) - if not ok: - self.__showInvalidDataMessage(filename, linenum) - return False - linenum += 1 - - # step 5: extract the graphics items - ok, vlinenum = self.umlView.parsePersistenceData(version, lines[linenum:]) - if not ok: - self.__showInvalidDataMessage(filename, linenum + vlinenum) - return False - - except IndexError: - self.__showInvalidDataMessage(filename) - return False - - # everything worked fine, so remember the file name and set the - # window title - self.setWindowTitle(self.__getDiagramTitel(self.__diagramType)) - self.__fileName = filename - - return True - - def __showInvalidDataMessage(self, filename, linenum=-1): + def __showInvalidDataMessage(self, filename): """ Private slot to show a message dialog indicating an invalid data file. @param filename name of the file containing the invalid data @type str - @param linenum number of the invalid line - @type int """ - msg = ( + EricMessageBox.critical( + self, + self.tr("Load Diagram"), self.tr( """<p>The file <b>{0}</b> does not contain valid data.</p>""" - ).format(filename) - if linenum < 0 - else self.tr( - """<p>The file <b>{0}</b> does not contain""" - """ valid data.</p><p>Invalid line: {1}</p>""" - ).format(filename, linenum + 1) + ).format(filename), ) - EricMessageBox.critical(self, self.tr("Load Diagram"), msg) - - ####################################################################### - ## Methods to read and write eric graphics files of the JSON based - ## file format. - ####################################################################### def __writeJsonGraphicsFile(self, filename): """