diff --git a/leenkx/blender/lnx/props_traits.py b/leenkx/blender/lnx/props_traits.py index b28d8e1..b7bf79c 100644 --- a/leenkx/blender/lnx/props_traits.py +++ b/leenkx/blender/lnx/props_traits.py @@ -13,13 +13,6 @@ import lnx.make as make from lnx.props_traits_props import * import lnx.ui_icons as ui_icons -def compatible_prop(property_func, **kwargs): - """Create properties compatible with different Blender versions.""" - if bpy.app.version < (2, 90, 0): - # Remove override parameter for Blender 2.83 - kwargs.pop('override', None) - return property_func(**kwargs) - import lnx.utils import lnx.write_data as write_data @@ -99,21 +92,32 @@ class LnxTraitListItem(bpy.types.PropertyGroup): def poll_node_trees(self, tree: NodeTree): """Ensure that only logic node trees show up as node traits""" return tree.bl_idname == 'LnxLogicTreeType' + + if bpy.app.version < (2, 90, 0): + name: StringProperty(name="Name", description="The name of the trait", default="") + enabled_prop: BoolProperty(name="", description="Whether this trait is enabled", default=True, update=trigger_recompile) + fake_user: BoolProperty(name="Fake User", description="Export this trait even if it is deactivated", default=False) + class_name_prop: StringProperty(name="Class", description="A name for this item", default="", update=update_trait_group) + canvas_name_prop: StringProperty(name="Canvas", description="A name for this item", default="", update=update_trait_group) + webassembly_prop: StringProperty(name="Module", description="A name for this item", default="", update=update_trait_group) + node_tree_prop: PointerProperty(type=NodeTree, update=update_trait_group, poll=poll_node_trees) + lnx_traitpropslist_index: IntProperty(name="Index for my_list", default=0, options={"LIBRARY_EDITABLE"}) + else: + name: StringProperty(name="Name", description="The name of the trait", default="", override={"LIBRARY_OVERRIDABLE"}) + enabled_prop: BoolProperty(name="", description="Whether this trait is enabled", default=True, update=trigger_recompile, override={"LIBRARY_OVERRIDABLE"}) + fake_user: BoolProperty(name="Fake User", description="Export this trait even if it is deactivated", default=False, override={"LIBRARY_OVERRIDABLE"}) + class_name_prop: StringProperty(name="Class", description="A name for this item", default="", update=update_trait_group, override={"LIBRARY_OVERRIDABLE"}) + canvas_name_prop: StringProperty(name="Canvas", description="A name for this item", default="", update=update_trait_group, override={"LIBRARY_OVERRIDABLE"}) + webassembly_prop: StringProperty(name="Module", description="A name for this item", default="", update=update_trait_group, override={"LIBRARY_OVERRIDABLE"}) + node_tree_prop: PointerProperty(type=NodeTree, update=update_trait_group, override={"LIBRARY_OVERRIDABLE"}, poll=poll_node_trees) + lnx_traitpropslist_index: IntProperty(name="Index for my_list", default=0, options={"LIBRARY_EDITABLE"}, override={"LIBRARY_OVERRIDABLE"}) - name = compatible_prop(StringProperty, name="Name", description="The name of the trait", default="", override={"LIBRARY_OVERRIDABLE"}) - enabled_prop = compatible_prop(BoolProperty, name="", description="Whether this trait is enabled", default=True, update=trigger_recompile, override={"LIBRARY_OVERRIDABLE"}) - is_object = BoolProperty(name="", default=True) - fake_user = compatible_prop(BoolProperty, name="Fake User", description="Export this trait even if it is deactivated", default=False, override={"LIBRARY_OVERRIDABLE"}) - type_prop = EnumProperty(name="Type", items=PROP_TYPES_ENUM) + is_object: BoolProperty(name="", default=True) + type_prop: EnumProperty(name="Type", items=PROP_TYPES_ENUM) - class_name_prop = compatible_prop(StringProperty, name="Class", description="A name for this item", default="", update=update_trait_group, override={"LIBRARY_OVERRIDABLE"}) - canvas_name_prop = compatible_prop(StringProperty, name="Canvas", description="A name for this item", default="", update=update_trait_group, override={"LIBRARY_OVERRIDABLE"}) - webassembly_prop = compatible_prop(StringProperty, name="Module", description="A name for this item", default="", update=update_trait_group, override={"LIBRARY_OVERRIDABLE"}) - node_tree_prop = compatible_prop(PointerProperty, type=NodeTree, update=update_trait_group, override={"LIBRARY_OVERRIDABLE"}, poll=poll_node_trees) - lnx_traitpropslist = CollectionProperty(type=LnxTraitPropListItem) - lnx_traitpropslist_index = compatible_prop(IntProperty, name="Index for my_list", default=0, options={"LIBRARY_EDITABLE"}, override={"LIBRARY_OVERRIDABLE"}) - lnx_traitpropswarnings = CollectionProperty(type=LnxTraitPropWarning) + lnx_traitpropslist: CollectionProperty(type=LnxTraitPropListItem) + lnx_traitpropswarnings: CollectionProperty(type=LnxTraitPropWarning) class LNX_UL_TraitList(bpy.types.UIList): """List of traits.""" @@ -1077,7 +1081,14 @@ __reg_classes, unregister = bpy.utils.register_classes_factory(__REG_CLASSES) def register(): __reg_classes() - bpy.types.Object.lnx_traitlist = compatible_prop(CollectionProperty, type=LnxTraitListItem) - bpy.types.Object.lnx_traitlist_index = compatible_prop(IntProperty, name="Index for lnx_traitlist", default=0) - bpy.types.Scene.lnx_traitlist = compatible_prop(CollectionProperty, type=LnxTraitListItem) - bpy.types.Scene.lnx_traitlist_index = compatible_prop(IntProperty, name="Index for lnx_traitlist", default=0) + if bpy.app.version < (2, 90, 0): + bpy.types.Object.lnx_traitlist = CollectionProperty(type=LnxTraitListItem) + bpy.types.Object.lnx_traitlist_index = IntProperty(name="Index for lnx_traitlist", default=0, options={"LIBRARY_EDITABLE"}) + bpy.types.Scene.lnx_traitlist = CollectionProperty(type=LnxTraitListItem) + bpy.types.Scene.lnx_traitlist_index = IntProperty(name="Index for lnx_traitlist", default=0, options={"LIBRARY_EDITABLE"}) + else: + bpy.types.Object.lnx_traitlist = CollectionProperty(type=LnxTraitListItem, override={"LIBRARY_OVERRIDABLE", "USE_INSERTION"}) + bpy.types.Object.lnx_traitlist_index = IntProperty(name="Index for lnx_traitlist", default=0, options={"LIBRARY_EDITABLE"}, override={"LIBRARY_OVERRIDABLE"}) + bpy.types.Scene.lnx_traitlist = CollectionProperty(type=LnxTraitListItem, override={"LIBRARY_OVERRIDABLE", "USE_INSERTION"}) + bpy.types.Scene.lnx_traitlist_index = IntProperty(name="Index for lnx_traitlist", default=0, options={"LIBRARY_EDITABLE"}, override={"LIBRARY_OVERRIDABLE"}) + \ No newline at end of file