[Bf-blender-cvs] [46194c68cf8] temp-spreadsheet-editor-python-prototyping: draw rna properties

Jacques Lucke noreply at git.blender.org
Fri Mar 5 12:55:05 CET 2021


Commit: 46194c68cf89c64e35dcdb2a4d436105fc3d8e93
Author: Jacques Lucke
Date:   Fri Mar 5 12:54:56 2021 +0100
Branches: temp-spreadsheet-editor-python-prototyping
https://developer.blender.org/rB46194c68cf89c64e35dcdb2a4d436105fc3d8e93

draw rna properties

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

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 1064f42ca26..63786aa139b 100644
--- a/release/scripts/modules/bpy_spreadsheet.py
+++ b/release/scripts/modules/bpy_spreadsheet.py
@@ -19,26 +19,28 @@
 import bpy
 
 class SpreadsheetDrawer:
+    def __init__(self):
+        self.objects = list(bpy.context.selected_objects)
+
     def get_row_amount(self):
-        return 10
+        return len(self.objects)
 
     def get_column_amount(self):
-        return 3
+        return 2
 
     def get_top_row_cell(self, column_index):
-        return "Column: " + str(column_index)
+        return ("Name", "Pass Index")[column_index]
 
     def get_left_column_cell(self, row_index):
-        return row_index + 100
+        return row_index
 
     def get_content_cell(self, row_index, column_index):
-        return row_index * column_index + 10
-
-registered_drawers = {}
+        ob = self.objects[row_index]
+        if column_index == 0:
+            return (ob, "name")
+        elif column_index == 1:
+            return (ob, "pass_index")
 
-def register_spreadsheet_drawer(spreadsheet_space: bpy.types.SpaceSpreadsheet, drawer: SpreadsheetDrawer):
-    registered_drawers[id(spreadsheet_space)] = drawer
 
 def get_spreadsheet_drawer(spreadsheet_space: bpy.types.SpaceSpreadsheet):
     return SpreadsheetDrawer()
-    # return registered_drawers.get(id(spreadsheet_space))
diff --git a/source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc b/source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc
index c0dca445e63..01703bbaacb 100644
--- a/source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc
+++ b/source/blender/editors/space_spreadsheet/spreadsheet_from_python.cc
@@ -136,6 +136,24 @@ class PythonSpreadsheetDrawer : public SpreadsheetDrawer {
                        0,
                        nullptr);
     }
+    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);
+      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);
+    }
   }
 };



More information about the Bf-blender-cvs mailing list