2025-12-01
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# SPDX-FileCopyrightText: 2021 Blender Studio Tools Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import os
|
||||
from typing import Optional
|
||||
from pathlib import Path
|
||||
from .. import prefs
|
||||
from ..props import get_safely_string_prop
|
||||
import bpy
|
||||
|
||||
from . import opsdata
|
||||
|
||||
|
||||
class LOOKDEV_preferences(bpy.types.PropertyGroup):
|
||||
|
||||
"""
|
||||
Addon preferences for lookdev module.
|
||||
"""
|
||||
|
||||
def update_rd_preset_file_model(self, context: bpy.types.Context) -> None:
|
||||
opsdata.init_rd_preset_file_model(context)
|
||||
|
||||
def set_look_dev_dir(self, input):
|
||||
self['presets_dir'] = input
|
||||
return
|
||||
|
||||
def get_look_dev_dir(self) -> str:
|
||||
proj_root = prefs.project_root_dir_get(bpy.context)
|
||||
if get_safely_string_prop(self, 'presets_dir') == "" and proj_root:
|
||||
frames_dir = proj_root.joinpath("pro/assets/scripts/render_presets/")
|
||||
if frames_dir.exists():
|
||||
return frames_dir.as_posix()
|
||||
return get_safely_string_prop(self, 'presets_dir')
|
||||
|
||||
presets_dir: bpy.props.StringProperty( # type: ignore
|
||||
name="Render Presets Directory",
|
||||
description="Directory path to folder in which render settings python files are stored",
|
||||
default="",
|
||||
subtype="DIR_PATH",
|
||||
update=update_rd_preset_file_model,
|
||||
get=get_look_dev_dir,
|
||||
set=set_look_dev_dir,
|
||||
)
|
||||
|
||||
@property
|
||||
def is_presets_dir_valid(self) -> bool:
|
||||
# Check if file is saved.
|
||||
if not self.presets_dir:
|
||||
return False
|
||||
|
||||
if not bpy.data.filepath and self.presets_dir.startswith("//"):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
@property
|
||||
def presets_dir_path(self) -> Optional[Path]:
|
||||
if not self.presets_dir:
|
||||
return None
|
||||
return Path(os.path.abspath(bpy.path.abspath(self.presets_dir)))
|
||||
|
||||
def draw(
|
||||
self,
|
||||
context: bpy.types.Context,
|
||||
layout: bpy.types.UILayout,
|
||||
) -> None:
|
||||
# Render preset.
|
||||
box = layout.box()
|
||||
box.label(text="Lookdev Tools", icon="RESTRICT_RENDER_OFF")
|
||||
box.row().prop(self, "presets_dir")
|
||||
|
||||
|
||||
# ---------REGISTER ----------.
|
||||
|
||||
classes = [LOOKDEV_preferences]
|
||||
|
||||
|
||||
def register():
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
|
||||
|
||||
def unregister():
|
||||
# Unregister classes.
|
||||
for cls in reversed(classes):
|
||||
bpy.utils.unregister_class(cls)
|
||||
Reference in New Issue
Block a user