Source code for pyleecan.GUI
# -*- coding: utf-8 -*-
import sys
from logging import ERROR, INFO, basicConfig, getLogger
from matplotlib import use
from ..Classes.GUIOption import GUIOption
from ..definitions import config_dict
from os.path import abspath, dirname, join, normpath
# Set Matplotlib backend
use("Qt5Agg") # Use PySide2 backend
[docs]class StreamToLogger(object):
"""Fake file-like stream object that redirects writes to a logger instance."""
def __init__(self, logger, log_level=INFO):
self.logger = logger
self.log_level = log_level
self.linebuf = ""
[docs] def write(self, buf):
"""
Parameters
----------
buf :
Returns
-------
"""
for line in buf.rstrip().splitlines():
self.logger.log(self.log_level, line.rstrip())
[docs] def flush(self):
""" """
pass
gui_option = GUIOption()
gui_option.unit.unit_m = config_dict["GUI"]["UNIT_M"] # Use mm
gui_option.unit.unit_m2 = config_dict["GUI"]["UNIT_M2"] # Use mm²
# Default config for all logger
basicConfig(
level=INFO,
# Format log like: "2013-03-08 11:37:31,311 : INFO : Hello"
format="%(asctime)s : %(levelname)s : %(message)s",
datefmt="%m-%d %H:%M",
filename="pyleecan_gui.log",
filemode="a",
)
# Setup logger
GUI_logger = getLogger("GUI_logger")
# stdout_logger = getLogger("STDOUT")
# sl = StreamToLogger(stdout_logger, INFO)
# sys.stdout = sl
# stderr_logger = getLogger("STDERR")
# sl = StreamToLogger(stderr_logger, ERROR)
# sys.stderr = sl
[docs]def my_excepthook(type, value, tback):
"""When an exception occurs: Log the error and continue (doesn't kill the
GUI)
Parameters
----------
type :
value :
tback :
Returns
-------
"""
# log the exception here (Not needed with stderr redirect)
# then call the default handler
sys.__excepthook__(type, value, tback)
sys.excepthook = my_excepthook