2022-07-11 22:22:17 +12:00
|
|
|
import logging
|
2022-07-24 10:06:35 +12:00
|
|
|
from dataclasses import dataclass
|
2022-07-11 22:22:17 +12:00
|
|
|
|
|
|
|
from PyQt5.QtWidgets import QMessageBox, QLabel
|
|
|
|
|
|
|
|
|
2022-07-16 06:06:01 +12:00
|
|
|
def get_boolean_choice(prompt, default=True):
|
|
|
|
choice = QMessageBox.question(
|
|
|
|
None, "Import DLCs?", prompt,
|
|
|
|
defaultButton=QMessageBox.Yes if default else QMessageBox.No
|
|
|
|
)
|
2022-07-11 22:22:17 +12:00
|
|
|
return True if choice == QMessageBox.StandardButton.Yes else False
|
|
|
|
|
|
|
|
|
|
|
|
def return_exit(__status):
|
|
|
|
return __status
|
|
|
|
|
|
|
|
|
|
|
|
class UILogHandler(logging.Handler):
|
|
|
|
def __init__(self, dest: QLabel):
|
|
|
|
super(UILogHandler, self).__init__()
|
|
|
|
self.widget = dest
|
|
|
|
|
|
|
|
def emit(self, record: logging.LogRecord) -> None:
|
2022-07-16 06:06:01 +12:00
|
|
|
self.widget.setText(record.getMessage())
|
2022-07-21 08:33:44 +12:00
|
|
|
|
|
|
|
|
2022-07-24 10:06:35 +12:00
|
|
|
@dataclass
|
|
|
|
class LgndrIndirectStatus:
|
|
|
|
success: bool = False
|
|
|
|
message: str = ""
|
|
|
|
|
|
|
|
def __len__(self):
|
|
|
|
if self.message:
|
|
|
|
return 2
|
|
|
|
else:
|
|
|
|
return 0
|
|
|
|
|
|
|
|
def __bool__(self):
|
|
|
|
return self.success
|
|
|
|
|
|
|
|
def __getitem__(self, item):
|
|
|
|
if item == 0:
|
|
|
|
return self.success
|
|
|
|
elif item == 1:
|
|
|
|
return self.message
|
|
|
|
else:
|
|
|
|
raise IndexError
|
|
|
|
|
|
|
|
def __iter__(self):
|
|
|
|
return iter((self.success, self.message))
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.message
|
|
|
|
|
|
|
|
|
|
|
|
class LgndrIndirectLogger:
|
|
|
|
def __init__(self, status: LgndrIndirectStatus, logger: logging.Logger = None, level: int = logging.ERROR):
|
|
|
|
self.logger = logger
|
|
|
|
self.level = level
|
|
|
|
self.status = status
|
|
|
|
|
|
|
|
def set_logger(self, logger: logging.Logger):
|
2022-07-21 08:33:44 +12:00
|
|
|
self.logger = logger
|
2022-07-24 10:06:35 +12:00
|
|
|
|
|
|
|
def set_level(self, level: int):
|
2022-07-21 08:33:44 +12:00
|
|
|
self.level = level
|
|
|
|
|
|
|
|
def _log(self, level: int, msg: str):
|
2022-07-24 10:06:35 +12:00
|
|
|
self.status.success = True if level < self.level else False
|
|
|
|
self.status.message = msg
|
|
|
|
if self.logger:
|
|
|
|
self.logger.log(level, msg)
|
2022-07-21 08:33:44 +12:00
|
|
|
|
|
|
|
def debug(self, msg: str):
|
|
|
|
self._log(logging.DEBUG, msg)
|
|
|
|
|
|
|
|
def info(self, msg: str):
|
|
|
|
self._log(logging.INFO, msg)
|
|
|
|
|
|
|
|
def warning(self, msg: str):
|
|
|
|
self._log(logging.WARNING, msg)
|
|
|
|
|
|
|
|
def error(self, msg: str):
|
|
|
|
self._log(logging.ERROR, msg)
|
|
|
|
|
|
|
|
def critical(self, msg: str):
|
|
|
|
self._log(logging.CRITICAL, msg)
|
|
|
|
|
|
|
|
def fatal(self, msg: str):
|
|
|
|
self.critical(msg)
|