[Bf-blender-cvs] [8ff310861c5] temp-spreadsheet-editor-python-prototyping: cleanup

Jacques Lucke noreply at git.blender.org
Fri Mar 5 13:37:04 CET 2021


Commit: 8ff310861c5776b770020068e5a85d0a5aa1b7e4
Author: Jacques Lucke
Date:   Fri Mar 5 13:36:51 2021 +0100
Branches: temp-spreadsheet-editor-python-prototyping
https://developer.blender.org/rB8ff310861c5776b770020068e5a85d0a5aa1b7e4

cleanup

===================================================================

M	release/scripts/modules/bpy_spreadsheet.py
M	source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc

===================================================================

diff --git a/release/scripts/modules/bpy_spreadsheet.py b/release/scripts/modules/bpy_spreadsheet.py
index 63786aa139b..7635223cf5f 100644
--- a/release/scripts/modules/bpy_spreadsheet.py
+++ b/release/scripts/modules/bpy_spreadsheet.py
@@ -19,28 +19,42 @@
 import bpy
 
 class SpreadsheetDrawer:
-    def __init__(self):
-        self.objects = list(bpy.context.selected_objects)
+    def get_row_amount(self):
+        return 0
+
+    def get_column_amount(self):
+        return 0
+
+    def get_top_row_cell(self, column_index):
+        return None
+
+    def get_left_column_cell(self, row_index):
+        return None
+
+    def get_content_cell(self, row_index, column_index):
+        return None
+
+class ObjectPropertiesSpreadsheet(SpreadsheetDrawer):
+    def __init__(self, objects, property_names):
+        self.objects = objects
+        self.property_names = property_names
 
     def get_row_amount(self):
         return len(self.objects)
 
     def get_column_amount(self):
-        return 2
+        return len(self.property_names)
 
     def get_top_row_cell(self, column_index):
-        return ("Name", "Pass Index")[column_index]
+        return self.property_names[column_index]
 
     def get_left_column_cell(self, row_index):
         return row_index
 
     def get_content_cell(self, row_index, column_index):
         ob = self.objects[row_index]
-        if column_index == 0:
-            return (ob, "name")
-        elif column_index == 1:
-            return (ob, "pass_index")
+        return (ob, self.property_names[column_index])
 
 
 def get_spreadsheet_drawer(spreadsheet_space: bpy.types.SpaceSpreadsheet):
-    return SpreadsheetDrawer()
+    return ObjectPropertiesSpreadsheet(list(bpy.context.selected_objects), ["name", "location.x", "location.y", "location.z"])
diff --git a/source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc b/source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc
index 01703bbaacb..2de9e9e3d34 100644
--- a/source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc
+++ b/source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc
@@ -138,21 +138,25 @@ class PythonSpreadsheetDrawer : public SpreadsheetDrawer {
     }
     if (PyTuple_Check(py_cell_content)) {
       PyObject *py_rna_ptr = PyTuple_GetItem(py_cell_content, 0);
-      PyObject *py_name = PyTuple_GetItem(py_cell_content, 1);
-      const char *prop_name = PyUnicode_AsUTF8(py_name);
+      PyObject *py_prop_path = PyTuple_GetItem(py_cell_content, 1);
+      const char *prop_path = PyUnicode_AsUTF8(py_prop_path);
       BPy_StructRNA *py_struct_rna = (BPy_StructRNA *)py_rna_ptr;
-      PointerRNA ptr = py_struct_rna->ptr;
-      PropertyRNA *prop = RNA_struct_find_property(&ptr, prop_name);
-      uiDefAutoButR(params.block,
-                    &ptr,
-                    prop,
-                    -1,
-                    "",
-                    ICON_NONE,
-                    params.xmin,
-                    params.ymin,
-                    params.width,
-                    params.height);
+      PointerRNA ptr;
+      PropertyRNA *prop = nullptr;
+      int index;
+      RNA_path_resolve_full(&py_struct_rna->ptr, prop_path, &ptr, &prop, &index);
+      if (prop != nullptr) {
+        uiDefAutoButR(params.block,
+                      &ptr,
+                      prop,
+                      index,
+                      "",
+                      ICON_NONE,
+                      params.xmin,
+                      params.ymin,
+                      params.width,
+                      params.height);
+      }
     }
   }
 };



More information about the Bf-blender-cvs mailing list