Files
2026-03-17 14:58:51 -06:00

78 lines
2.3 KiB
Python

import bpy
from bpy.types import AddonPreferences
from bpy.props import BoolProperty, StringProperty
from .ui import change_ui_category
from .util import get_addon_prefs
from .operators import better_delete
class BlenLog_Prefs(AddonPreferences):
bl_idname = __package__
def update_sidebar_panel(self, context):
change_ui_category(self.sidebar_panel)
sidebar_panel: StringProperty(
name="Sidebar Panel",
description="Define which sidebar panel the Blender Log should appear in",
default="Blender Log",
update=update_sidebar_panel,
)
purge_on_save: BoolProperty(
name="Purge On Save",
description="Run a recursive purge on file save, rather than simply not saving unused datablocks, which is Blender's default behaviour. This ensures your file is never saved with any garbage orphan data",
default=False,
)
def update_deletion_pie(self, context):
if self.use_deletion_pie:
better_delete.register_hotkeys()
else:
better_delete.unregister_hotkeys()
use_deletion_pie: BoolProperty(
name="Delete Pie On X",
description="Overwrite the X hotkey in the 3D View and the Outliner for more truthful deletion behaviours",
default=False,
update=update_deletion_pie
)
display_stack_trace: BoolProperty(
name="Display Stack Trace",
description="Whether to display the Python Stack Trace of a log entry. Only useful for Python developers",
default=False,
)
def draw(self, context):
layout = self.layout
layout.use_property_split = True
layout = layout.column(align=True)
layout.label(text="Cosmetic:")
layout.prop(self, 'sidebar_panel')
layout.separator()
layout.label(text="Debug:")
layout.prop(self, 'display_stack_trace')
layout.separator()
layout.label(text="Mistake Avoidance:")
layout.prop(self, 'purge_on_save')
layout.prop(self, 'use_deletion_pie')
registry = [BlenLog_Prefs]
@bpy.app.handlers.persistent
def delayed_register(_):
prefs = get_addon_prefs(bpy.context)
prefs.sidebar_panel = prefs.sidebar_panel
def register():
bpy.app.handlers.load_post.append(delayed_register)
def unregister():
bpy.app.handlers.load_post.remove(delayed_register)