Setting Panel Added, Debuging Added.
Added the Armature Validation modes now, we have Stritct, Basic and None, it will give a warning to the user in the panel if there have it set to basic or none. Settings panel added, langauge change has been added back. Did some work on it to slightl improve the system. Added dubug area, basically everything but autoload will use logging now, you be able to turn it on/off in debug settings. Did other bits and bobs.
This commit is contained in:
@@ -2,6 +2,7 @@ import bpy
|
||||
import os
|
||||
import tomllib
|
||||
import json
|
||||
from ..core.logging_setup import logger
|
||||
from bpy.types import AddonPreferences
|
||||
from typing import Any, Dict
|
||||
|
||||
@@ -12,22 +13,31 @@ PREFERENCES_FILE = os.path.join(PREFERENCES_DIR, "preferences.json")
|
||||
def get_current_version():
|
||||
main_dir = os.path.dirname(os.path.dirname(__file__))
|
||||
manifest_path = os.path.join(main_dir, "blender_manifest.toml")
|
||||
logger.debug(f"Reading version from manifest: {manifest_path}")
|
||||
with open(manifest_path, 'rb') as f:
|
||||
manifest_data = tomllib.load(f)
|
||||
return manifest_data.get('version', 'Unknown')
|
||||
version = manifest_data.get('version', 'Unknown')
|
||||
logger.info(f"Current addon version: {version}")
|
||||
return version
|
||||
|
||||
def save_preference(key: str, value: Any) -> None:
|
||||
"""Save a single preference to the JSON file."""
|
||||
logger.debug(f"Saving preference: {key} = {value}")
|
||||
prefs = load_preferences()
|
||||
prefs[key] = value
|
||||
with open(PREFERENCES_FILE, 'w') as f:
|
||||
json.dump(prefs, f, indent=4)
|
||||
logger.info(f"Preference saved: {key}")
|
||||
|
||||
def load_preferences() -> Dict[str, Any]:
|
||||
"""Load all preferences from the JSON file."""
|
||||
logger.debug(f"Loading preferences from: {PREFERENCES_FILE}")
|
||||
if os.path.exists(PREFERENCES_FILE):
|
||||
with open(PREFERENCES_FILE, 'r') as f:
|
||||
return json.load(f)
|
||||
prefs = json.load(f)
|
||||
logger.debug(f"Loaded preferences: {prefs}")
|
||||
return prefs
|
||||
logger.info("No preferences file found, using defaults")
|
||||
return {}
|
||||
|
||||
def get_preference(key: str, default: Any = None) -> Any:
|
||||
@@ -40,12 +50,13 @@ class AvatarToolkitPreferences(AddonPreferences):
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.label(text="Preferences are managed internally.")
|
||||
# You can add more UI elements here if needed
|
||||
layout.label(text=f"Version: {get_current_version()}")
|
||||
|
||||
def get_addon_preferences(context):
|
||||
return context.preferences.addons[AvatarToolkitPreferences.bl_idname].preferences
|
||||
|
||||
# Initialize preferences if the file doesn't exist
|
||||
if not os.path.exists(PREFERENCES_FILE):
|
||||
save_preference("language", 0) # Set default language to 0 (auto)
|
||||
save_preference("language", 0) # Set default language to 0 (auto)
|
||||
save_preference("validation_mode", "STRICT") # Set default validation mode
|
||||
save_preference("enable_logging", False) # Set default logging mode
|
||||
Reference in New Issue
Block a user