Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions quickbake/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,22 @@
from .op import RENDER_OT_bake
from .panel import RENDER_PT_main
from .properties import QuickBakeToolPropertyGroup
from .util import is_development
from .util import is_development, enable_logging
from .preferences import QuickBakeAddonPreferences


_log = logging.getLogger(__name__)
_log = logging.getLogger(__package__)

if is_development():
_log.setLevel(logging.DEBUG)
_log.addHandler(logging.StreamHandler())
enable_logging()


def register():
_log.debug("Register extension")
bpy.utils.register_class(RENDER_OT_bake)
bpy.utils.register_class(RENDER_PT_main)
bpy.utils.register_class(QuickBakeToolPropertyGroup)
bpy.utils.register_class(QuickBakeAddonPreferences)
bpy.types.Scene.QuickBakeToolPropertyGroup = bpy.props.PointerProperty( # type: ignore
type=QuickBakeToolPropertyGroup
)
Expand All @@ -30,6 +31,7 @@ def unregister():
bpy.utils.unregister_class(RENDER_OT_bake)
bpy.utils.unregister_class(RENDER_PT_main)
bpy.utils.unregister_class(QuickBakeToolPropertyGroup)
bpy.utils.unregister_class(QuickBakeAddonPreferences)
del bpy.types.Scene.QuickBakeToolPropertyGroup # type: ignore


Expand Down
8 changes: 8 additions & 0 deletions quickbake/op.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import bpy
from bpy_extras.node_shader_utils import PrincipledBSDFWrapper

from .preferences import get_preferences
from .properties import MaterialMode, QuickBakeToolPropertyGroup
from .util import enable_logging, disable_logging, is_development

_log = logging.getLogger(__name__)

Expand Down Expand Up @@ -52,6 +54,12 @@ def poll(cls, context):
return obj is not None and obj.type == "MESH"

def execute(self, context: bpy.types.Context):
prefs = get_preferences(context)
if prefs.enable_logging or is_development():
enable_logging()
else:
disable_logging()

_log.info("Begin execution")

# Keeping type hints happy, should not be possible
Expand Down
30 changes: 30 additions & 0 deletions quickbake/preferences.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# pyright: reportInvalidTypeForm=false
import bpy
from bpy.props import BoolProperty


class QuickBakeAddonPreferences(bpy.types.AddonPreferences):
# This must match the add-on name, use `__package__`
# when defining this for add-on extensions or a sub-module of a Python package.
assert __package__ is not None, "Need __package__"
bl_idname = __package__

enable_logging: BoolProperty(
name="Enable debug logging",
default=False,
)

def draw(self, context):
layout = self.layout
layout.prop(self, "enable_logging")


def get_preferences(context: bpy.types.Context) -> QuickBakeAddonPreferences:
preferences = context.preferences
assert preferences is not None
assert __package__ is not None
addon = preferences.addons[__package__]
assert addon is not None
addon_prefs: QuickBakeAddonPreferences = addon.preferences # type: ignore
assert addon_prefs is not None
return addon_prefs
13 changes: 13 additions & 0 deletions quickbake/util.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os
import logging

import tomllib

Expand All @@ -12,3 +13,15 @@ def _get_version():

def is_development():
return _get_version() == "0.0.0"


def enable_logging():
log = logging.getLogger(__package__)
if not log.handlers:
log.setLevel(logging.DEBUG)
log.addHandler(logging.StreamHandler())


def disable_logging():
log = logging.getLogger(__package__)
log.handlers.clear()