# -*- coding: utf-8 -*- from PyQt5.QtCore import ( QCoreApplication, ) from PyQt5.QtWidgets import ( QApplication, QMessageBox, ) _translate = QCoreApplication.translate #################################### # 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 _translate("Exception", "Generic error message") def short_message(self): return _translate("Exception", "Undefined error message") def message(self): return _translate("Exception", "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 NotImplementedMethodeError(ExeceptionWithMessageBox): def __init__(self, obj, func): super(NotImplementedMethodeError, self).__init__( title = _translate("Exception", "Method not implemented") ) self.obj = obj self.func = func self.alert() def __str__(self): return ( _translate("Exception", "Method") + f" '{self.func.__name__}' " + _translate("Exception", "not implemented") + _translate("Exception", "for class") + f" '{self.obj.__class__}'" ) def header(self): return _translate("Exception", "Not implemented method") def short_message(self): return _translate("Exception", "Not implemented method") def message(self): return ( _translate("Exception", "Method") + f" '{self.func.__name__}' " + _translate("Exception", "not implemented") + _translate("Exception", "for class") + f" '{self.obj.__class__}'" ) class FileFormatError(ExeceptionWithMessageBox): def __init__(self, filename, reason): super(FileFormatError, self).__init__( title = _translate("Exception", "FileFormatError") ) self.reason = reason self.filename = filename def __str__(self): return ( _translate("Exception", "Invalid file format:") + f" '{self.filename}'\n{self.message()}" ) def header(self): return _translate("Exception", "File format error") def short_message(self): return _translate("Exception", "Invalid file format") def message(self): return ( _translate("Exception", "Invalid file") + f" '{self.filename}' " + _translate("Exception", "format because of") + f" '{self.reason}'" )