Geometry: Handle exception for meshing tool.

setup.py
Pierre-Antoine Rouby 2024-01-19 11:51:48 +01:00
parent b6f0c6f49a
commit 6319ac9310
3 changed files with 57 additions and 5 deletions

View File

@ -179,3 +179,38 @@ class ClipboardFormatError(ExeceptionWithMessageBox):
def message(self): def message(self):
return self.msg 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

View File

@ -23,7 +23,7 @@ import pathlib
import logging import logging
from copy import deepcopy from copy import deepcopy
from tools import timer, trace from tools import timer, trace, logger_exception
from PyQt5 import QtWidgets from PyQt5 import QtWidgets
from PyQt5.QtGui import ( from PyQt5.QtGui import (
@ -40,6 +40,8 @@ from PyQt5.QtWidgets import (
QLabel, QAbstractItemView, QLabel, QAbstractItemView,
) )
from Model.Except import ExternFileMissingError
from View.Tools.PamhyrWindow import PamhyrWindow from View.Tools.PamhyrWindow import PamhyrWindow
from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar from View.Tools.Plot.PamhyrToolbar import PamhyrPlotToolbar
from View.Tools.Plot.PamhyrCanvas import MplCanvas from View.Tools.Plot.PamhyrCanvas import MplCanvas
@ -255,8 +257,23 @@ class GeometryWindow(PamhyrWindow):
self.tableView.model().blockSignals(False) self.tableView.model().blockSignals(False)
def edit_meshing(self): def edit_meshing(self):
try:
self._edit_meshing()
except Exception:
return
def _edit_meshing(self):
try:
mesher = MeshingWithMage() mesher = MeshingWithMage()
self._table.meshing(mesher, -1) 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) pyqtSlot(bool)

View File

@ -69,10 +69,10 @@ def logger_color_reset():
def logger_exception(exception): def logger_exception(exception):
logger.error( logger.error(
f"[{logger_color_red()}ERROR{logger_color_reset()}] " + 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( 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()}" f"{logger_color_red()}{traceback.format_exc()}{logger_color_reset()}"
) )