From f4dd46cd1a99765c18eae01dcb7540a7a75070cf Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Tue, 4 Apr 2023 10:35:44 +0200 Subject: [PATCH] Model: Add missing custom execption file. --- src/Model/Except.py | 66 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/Model/Except.py diff --git a/src/Model/Except.py b/src/Model/Except.py new file mode 100644 index 00000000..b88eccd2 --- /dev/null +++ b/src/Model/Except.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- + +from PyQt5.QtWidgets import ( + QApplication, QMessageBox, +) + +#################################### +# Message Box for python exception # +#################################### + +def exception_message_box(exception): + msg = QMessageBox() + msg.setIcon(QMessageBox.Critical) + + msg.setText("Exception :") + msg.setInformativeText(f"{exception}") + msg.setWindowTitle("Exception") + + msg.exec_() + +################ +# Custom error # +################ + +class ExeceptionWithMessageBox(Exception): + def __init__(self, title = "Exeception"): + self.title = title + + def header(self): + return "Generic error message" + + def short_message(self): + return "Undefined error message" + + def message(self): + return "Undefined error message" + + def alert(self): + msg = QMessageBox() + msg.setIcon(QMessageBox.Critical) + + msg.setText(f"{self.header()} : {self.short_message()}") + msg.setInformativeText(f"{self.message()}") + msg.setWindowTitle(f"{self.title}") + + msg.exec_() + + +class FileFormatError(ExeceptionWithMessageBox): + def __init__(self, filename, reason): + super(FileFormatError, self).__init__(title = "FileFormatError") + + self.reason = reason + self.filename = filename + + def __str__(self): + return f"Invalid file format: '{self.filename}'\n{self.message()}" + + def header(self): + return "File format error" + + def short_message(self): + return "Invalid file format" + + def message(self): + return f"Invalid file '{self.filename}' format because of '{self.reason}'" -- GitLab