c65bed3ff4
- Added Highlight Bone System in the 3D View, can be turned off in settings. - Added more bones to the acceptable bone lists. - Fixed issue with properties registrations and unregistration, the system is more rebust now. - Added a validate t-pose system - Added a detect bone scales system. - Fixed some translation strings - Armature validation now uses logger system.
46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
import logging
|
|
import traceback
|
|
from typing import Optional, Any
|
|
from bpy.types import Context
|
|
|
|
logger = logging.getLogger('avatar_toolkit')
|
|
_original_error = logger.error
|
|
|
|
def configure_logging(enabled: bool = False) -> None:
|
|
"""Configure logging for Avatar Toolkit"""
|
|
logger.setLevel(logging.DEBUG if enabled else logging.WARNING)
|
|
|
|
# Remove existing handlers
|
|
for handler in logger.handlers[:]:
|
|
logger.removeHandler(handler)
|
|
|
|
if enabled:
|
|
handler = logging.StreamHandler()
|
|
handler.setLevel(logging.DEBUG)
|
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
|
handler.setFormatter(formatter)
|
|
logger.addHandler(handler)
|
|
|
|
def error_with_traceback(msg, *args, **kwargs):
|
|
if kwargs.get('exc_info', False) or isinstance(msg, Exception):
|
|
full_msg = f"{msg}\n{traceback.format_exc()}"
|
|
_original_error(full_msg, *args, **{**kwargs, 'exc_info': False})
|
|
else:
|
|
_original_error(msg, *args, **kwargs)
|
|
|
|
logger.error = error_with_traceback
|
|
|
|
def update_logging_state(self: Any, context: Context) -> None:
|
|
"""Update logging state based on user preference"""
|
|
from .addon_preferences import save_preference
|
|
enabled = self.enable_logging
|
|
save_preference("enable_logging", enabled)
|
|
configure_logging(enabled)
|
|
|
|
def highlight_problem_bones(self: Any, context: Context) -> None:
|
|
"""Log when problem bones are highlighted"""
|
|
from .addon_preferences import save_preference
|
|
enabled = self.highlight_problem_bones
|
|
save_preference("highlight_problem_bones", enabled)
|
|
logger.debug(f"Problem bone highlighting {'enabled' if enabled else 'disabled'}")
|