Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'curve_tools/properties.py')
-rw-r--r--curve_tools/properties.py104
1 files changed, 104 insertions, 0 deletions
diff --git a/curve_tools/properties.py b/curve_tools/properties.py
new file mode 100644
index 00000000..d6fe9e0f
--- /dev/null
+++ b/curve_tools/properties.py
@@ -0,0 +1,104 @@
+import time
+
+import bpy
+from bpy.props import *
+
+
+
+class curvetoolsSelectedObjectHeader(bpy.types.Header):
+ bl_label = "Selection"
+ bl_space_type = "VIEW_3D"
+
+ def __init__(self):
+ self.update()
+
+
+ def update(self):
+ blenderSelectedObjects = bpy.context.selected_objects
+ selectedObjects = bpy.context.scene.curvetools.SelectedObjects
+
+ selectedObjectsToRemove = []
+ for selectedObject in selectedObjects:
+ if not selectedObject.IsElementOf(blenderSelectedObjects): selectedObjectsToRemove.append(selectedObject)
+ for selectedObject in selectedObjectsToRemove: selectedObjects.remove(selectedObject)
+
+ blenderObjectsToAdd = []
+ for blenderObject in blenderSelectedObjects:
+ if not curvetoolsSelectedObject.ListContains(selectedObjects, blenderObject): blenderObjectsToAdd.append(blenderObject)
+ for blenderObject in blenderObjectsToAdd:
+ newSelectedObject = curvetoolsSelectedObject(blenderObject)
+ selectedObjects.append(newSelectedObject)
+
+
+ def draw(self, context):
+ selectedObjects = bpy.context.scene.curvetools.SelectedObjects
+ nrSelectedObjects = len(selectedObjects)
+
+ layout = self.layout
+ row = layout.row()
+ row.label(text="Sel: " + str(nrSelectedObjects))
+
+
+class curvetoolsSelectedObject(bpy.types.PropertyGroup):
+ name: StringProperty(name = "name", default = "??")
+
+
+ @staticmethod
+ def UpdateThreadTarget(lock, sleepTime, selectedObjectNames, selectedBlenderObjectNames):
+ time.sleep(sleepTime)
+
+ newSelectedObjectNames = []
+
+ for name in selectedObjectNames:
+ if name in selectedBlenderObjectNames: newSelectedObjectNames.append(name)
+
+ for name in selectedBlenderObjectNames:
+ if not (name in selectedObjectNames): newSelectedObjectNames.append(name)
+
+ # sometimes it still complains about the context
+ try:
+ nrNewSelectedObjects = len(newSelectedObjectNames)
+ bpy.context.scene.curvetools.NrSelectedObjects = nrNewSelectedObjects
+
+ selectedObjects = bpy.context.scene.curvetools.SelectedObjects
+ selectedObjects.clear()
+ for i in range(nrNewSelectedObjects): selectedObjects.add()
+ for i, newSelectedObjectName in enumerate(newSelectedObjectNames):
+ selectedObjects[i].name = newSelectedObjectName
+ except: pass
+
+
+ @staticmethod
+ def GetSelectedObjectNames():
+ selectedObjects = bpy.context.scene.curvetools.SelectedObjects
+
+ rvNames = []
+ selectedObjectValues = selectedObjects.values()
+ for selectedObject in selectedObjectValues: rvNames.append(selectedObject.name)
+
+ return rvNames
+
+
+ @staticmethod
+ def GetSelectedBlenderObjectNames():
+ blenderSelectedObjects = bpy.context.selected_objects
+
+ rvNames = []
+ for blObject in blenderSelectedObjects: rvNames.append(blObject.name)
+
+ return rvNames
+
+def register():
+ for cls in classes:
+ bpy.utils.register_class(operators)
+
+def unregister():
+ for cls in classes:
+ bpy.utils.unregister_class(operators)
+
+if __name__ == "__main__":
+ register()
+
+operators = [
+ curvetoolsSelectedObject,
+ ]