2025-12-01
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# SPDX-FileCopyrightText: 2025 Blender Studio Tools Authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
import bpy
|
||||
from . import utils
|
||||
|
||||
class LOR_filter_string(bpy.types.PropertyGroup):
|
||||
string: bpy.props.StringProperty(default='')
|
||||
|
||||
class LOR_subsetting(bpy.types.PropertyGroup):
|
||||
name: bpy.props.StringProperty(default='setting', update=utils.mark_dirty)
|
||||
VALUE: bpy.props.FloatProperty('', update=utils.mark_dirty)
|
||||
FACTOR: bpy.props.FloatProperty(subtype='FACTOR', soft_min=0, soft_max=1, update=utils.mark_dirty)
|
||||
INTEGER: bpy.props.IntProperty('', update=utils.mark_dirty)
|
||||
BOOL: bpy.props.BoolProperty('', update=utils.mark_dirty)
|
||||
VECTOR: bpy.props.FloatVectorProperty('', update=utils.mark_dirty)
|
||||
COLOR: bpy.props.FloatVectorProperty(size=4, subtype='COLOR', default=(.5,.5,.5,1), soft_min=0, soft_max=1, update=utils.mark_dirty)
|
||||
STRING: bpy.props.StringProperty('', update=utils.mark_dirty)
|
||||
type: bpy.props.EnumProperty(items=[('VALUE', 'Value', '', '', 0),
|
||||
('FACTOR', 'Factor', '', '', 1),
|
||||
('INTEGER', 'Integer', '', '', 2),
|
||||
('BOOL', 'Boolean', '', '', 3),
|
||||
('VECTOR', 'Vector', '', '', 4),
|
||||
('COLOR', 'Color', '', '', 5),
|
||||
('STRING', 'String', '', '', 6),]
|
||||
, update=utils.mark_dirty)
|
||||
|
||||
class LOR_setting(bpy.types.PropertyGroup):
|
||||
specifier: bpy.props.StringProperty('', update=utils.mark_dirty)
|
||||
subsettings: bpy.props.CollectionProperty(type=LOR_subsetting)
|
||||
setting_expanded: bpy.props.BoolProperty(default=True)
|
||||
|
||||
class LOR_UL_settings_list(bpy.types.UIList):
|
||||
|
||||
filter_strings: bpy.props.CollectionProperty(type=LOR_filter_string)
|
||||
|
||||
def filter_items(self, context, data, propname):
|
||||
|
||||
settings = getattr(data, propname)
|
||||
helper_funcs = bpy.types.UI_UL_list
|
||||
|
||||
flt_flags = []
|
||||
flt_neworder = []
|
||||
|
||||
while not len(self.filter_strings) == len(settings):
|
||||
if len(self.filter_strings) < len(settings):
|
||||
self.filter_strings.add()
|
||||
else:
|
||||
self.filter_strings.remove(0)
|
||||
|
||||
if self.filter_name:
|
||||
for i, set in enumerate(settings):
|
||||
self.filter_strings[i].string = ' '.join([subset.name for subset in set.subsettings]).lower()
|
||||
self.filter_strings[i].string = ' '.join([set.specifier, self.filter_strings[i].string])
|
||||
flt_flags = helper_funcs.filter_items_by_name(self.filter_name.lower(), self.bitflag_filter_item, self.filter_strings, "string",
|
||||
reverse=self.use_filter_invert)
|
||||
|
||||
return flt_flags, flt_neworder
|
||||
|
||||
|
||||
classes = (
|
||||
LOR_subsetting,
|
||||
LOR_setting,
|
||||
LOR_filter_string,
|
||||
LOR_UL_settings_list,
|
||||
)
|
||||
|
||||
def register():
|
||||
for c in classes:
|
||||
bpy.utils.register_class(c)
|
||||
|
||||
def unregister():
|
||||
for c in classes:
|
||||
bpy.utils.unregister_class(c)
|
||||
Reference in New Issue
Block a user