From 6319ac9310ac51b269ac28ae592f544530113655 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr> Date: Fri, 19 Jan 2024 11:51:48 +0100 Subject: [PATCH] Geometry: Handle exception for meshing tool. --- src/Model/Except.py | 35 +++++++++++++++++++++++++++++++++++ src/View/Geometry/Window.py | 23 ++++++++++++++++++++--- src/tools.py | 4 ++-- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/Model/Except.py b/src/Model/Except.py index ef45ffd0..ce741bf8 100644 --- a/src/Model/Except.py +++ b/src/Model/Except.py @@ -179,3 +179,38 @@ class ClipboardFormatError(ExeceptionWithMessageBox): def message(self): return self.msg + + +class ExternFileMissingError(ExeceptionWithMessageBox): + def __init__(self, module="mage", filename="libbief", path="??/libbief.so", + src_except=None): + super(ExternFileMissingError, self).__init__( + title=_translate( + "Exception", "External file dependence is missing" + ) + ) + + self.msg = _translate( + "Exception", + "'@file' is missing for module @module:\n'@path'" + ) + self.msg = self.msg.replace("@file", filename) + self.msg = self.msg.replace("@module", module) + self.msg = self.msg.replace("@path", path) + + if src_except is not None: + self.msg = self.msg + "\n\n" + f"Exception: {src_except}" + + self.alert() + + def __str__(self): + return self.msg + + def header(self): + return _translate("Exception", "External file dependence is missing") + + def short_message(self): + return _translate("Exception", "External file dependence is missing") + + def message(self): + return self.msg diff --git a/src/View/Geometry/Window.py b/src/View/Geometry/Window.py index c079687b..38db6db9 100644 --- a/src/View/Geometry/Window.py +++ b/src/View/Geometry/Window.py @@ -23,7 +23,7 @@ import pathlib import logging from copy import deepcopy -from tools import timer, trace +from tools import timer, trace, logger_exception from PyQt5 import QtWidgets from PyQt5.QtGui import ( @@ -40,6 +40,8 @@ from PyQt5.QtWidgets import ( QLabel, QAbstractItemView, ) +from Model.Except import ExternFileMissingError + from View.Tools.PamhyrWindow import PamhyrWindow from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar from View.Tools.Plot.PamhyrCanvas import MplCanvas @@ -255,8 +257,23 @@ class GeometryWindow(PamhyrWindow): self.tableView.model().blockSignals(False) def edit_meshing(self): - mesher = MeshingWithMage() - self._table.meshing(mesher, -1) + try: + self._edit_meshing() + except Exception: + return + + def _edit_meshing(self): + try: + mesher = MeshingWithMage() + self._table.meshing(mesher, -1) + except Exception as e: + logger_exception(e) + raise ExternFileMissingError( + module="mage", + filename="libbief", + path=MeshingWithMage._lib_path(), + src_except=e + ) pyqtSlot(bool) diff --git a/src/tools.py b/src/tools.py index e1ade009..baf130e4 100644 --- a/src/tools.py +++ b/src/tools.py @@ -69,10 +69,10 @@ def logger_color_reset(): def logger_exception(exception): logger.error( f"[{logger_color_red()}ERROR{logger_color_reset()}] " + - f"{logger_color_red()}{e}{logger_color_reset()}" + f"{logger_color_red()}{exception}{logger_color_reset()}" ) logger.debug( - f"{logger_color_blue()}{e}{logger_color_reset()}\n" + + f"{logger_color_blue()}{exception}{logger_color_reset()}\n" + f"{logger_color_red()}{traceback.format_exc()}{logger_color_reset()}" ) -- GitLab