Fix io_anim_camera error exporting cameras with quotes in their name
[blender-addons.git] / curve_tools / properties.py
blobd984f67b3237fb61d80c9bd52e595a42dbca899f
1 # SPDX-License-Identifier: GPL-2.0-or-later
3 import time
5 import bpy
6 from bpy.props import *
10 class curvetoolsSelectedObjectHeader(bpy.types.Header):
11 bl_label = "Selection"
12 bl_space_type = "VIEW_3D"
14 def __init__(self):
15 self.update()
18 def update(self):
19 blenderSelectedObjects = bpy.context.selected_objects
20 selectedObjects = bpy.context.scene.curvetools.SelectedObjects
22 selectedObjectsToRemove = []
23 for selectedObject in selectedObjects:
24 if not selectedObject.IsElementOf(blenderSelectedObjects): selectedObjectsToRemove.append(selectedObject)
25 for selectedObject in selectedObjectsToRemove: selectedObjects.remove(selectedObject)
27 blenderObjectsToAdd = []
28 for blenderObject in blenderSelectedObjects:
29 if not curvetoolsSelectedObject.ListContains(selectedObjects, blenderObject): blenderObjectsToAdd.append(blenderObject)
30 for blenderObject in blenderObjectsToAdd:
31 newSelectedObject = curvetoolsSelectedObject(blenderObject)
32 selectedObjects.append(newSelectedObject)
35 def draw(self, context):
36 selectedObjects = bpy.context.scene.curvetools.SelectedObjects
37 nrSelectedObjects = len(selectedObjects)
39 layout = self.layout
40 row = layout.row()
41 row.label(text="Sel: " + str(nrSelectedObjects))
44 class curvetoolsSelectedObject(bpy.types.PropertyGroup):
45 name: StringProperty(name = "name", default = "??")
48 @staticmethod
49 def UpdateThreadTarget(lock, sleepTime, selectedObjectNames, selectedBlenderObjectNames):
50 time.sleep(sleepTime)
52 newSelectedObjectNames = []
54 for name in selectedObjectNames:
55 if name in selectedBlenderObjectNames: newSelectedObjectNames.append(name)
57 for name in selectedBlenderObjectNames:
58 if not (name in selectedObjectNames): newSelectedObjectNames.append(name)
60 # sometimes it still complains about the context
61 try:
62 nrNewSelectedObjects = len(newSelectedObjectNames)
63 bpy.context.scene.curvetools.NrSelectedObjects = nrNewSelectedObjects
65 selectedObjects = bpy.context.scene.curvetools.SelectedObjects
66 selectedObjects.clear()
67 for i in range(nrNewSelectedObjects): selectedObjects.add()
68 for i, newSelectedObjectName in enumerate(newSelectedObjectNames):
69 selectedObjects[i].name = newSelectedObjectName
70 except: pass
73 @staticmethod
74 def GetSelectedObjectNames():
75 selectedObjects = bpy.context.scene.curvetools.SelectedObjects
77 rvNames = []
78 selectedObjectValues = selectedObjects.values()
79 for selectedObject in selectedObjectValues: rvNames.append(selectedObject.name)
81 return rvNames
84 @staticmethod
85 def GetSelectedBlenderObjectNames():
86 blenderSelectedObjects = bpy.context.selected_objects
88 rvNames = []
89 for blObject in blenderSelectedObjects: rvNames.append(blObject.name)
91 return rvNames
93 def register():
94 for cls in classes:
95 bpy.utils.register_class(operators)
97 def unregister():
98 for cls in classes:
99 bpy.utils.unregister_class(operators)
101 if __name__ == "__main__":
102 register()
104 operators = [
105 curvetoolsSelectedObject,