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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r--source/blender/makesrna/RNA_access.h1
-rw-r--r--source/blender/makesrna/intern/rna_wm_gizmo.c34
-rw-r--r--source/blender/makesrna/intern/rna_workspace_api.c27
3 files changed, 62 insertions, 0 deletions
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 1278f27af75..ccce54227fe 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -372,6 +372,7 @@ extern StructRNA RNA_LockedTrackConstraint;
extern StructRNA RNA_Macro;
extern StructRNA RNA_MagicTexture;
extern StructRNA RNA_Gizmo;
+extern StructRNA RNA_GizmoGroupProperties;
extern StructRNA RNA_GizmoProperties;
extern StructRNA RNA_MarbleTexture;
extern StructRNA RNA_MaskModifier;
diff --git a/source/blender/makesrna/intern/rna_wm_gizmo.c b/source/blender/makesrna/intern/rna_wm_gizmo.c
index 494c988a467..41e3929e8ae 100644
--- a/source/blender/makesrna/intern/rna_wm_gizmo.c
+++ b/source/blender/makesrna/intern/rna_wm_gizmo.c
@@ -548,6 +548,34 @@ static StructRNA *rna_Gizmo_refine(PointerRNA *mnp_ptr)
/** \name Gizmo Group API
* \{ */
+static wmGizmoGroupType *rna_GizmoGroupProperties_find_gizmo_group_type(PointerRNA *ptr)
+{
+ IDProperty *properties = (IDProperty *)ptr->data;
+ wmGizmoGroupType *gzgt = WM_gizmogrouptype_find(properties->name, false);
+ return gzgt;
+}
+
+static StructRNA *rna_GizmoGroupProperties_refine(PointerRNA *ptr)
+{
+ wmGizmoGroupType *gzgt = rna_GizmoGroupProperties_find_gizmo_group_type(ptr);
+
+ if (gzgt)
+ return gzgt->srna;
+ else
+ return ptr->type;
+}
+
+static IDProperty *rna_GizmoGroupProperties_idprops(PointerRNA *ptr, bool create)
+{
+ if (create && !ptr->data) {
+ IDPropertyTemplate val = {0};
+ ptr->data = IDP_New(IDP_GROUP, &val, "RNA_GizmoGroupProperties group");
+ }
+
+ return ptr->data;
+}
+
+
static wmGizmo *rna_GizmoGroup_gizmo_new(
wmGizmoGroup *gzgroup, ReportList *reports, const char *idname)
{
@@ -1364,6 +1392,12 @@ static void rna_def_gizmogroup(BlenderRNA *brna)
RNA_define_verify_sdna(1); /* not in sdna */
RNA_api_gizmogroup(srna);
+
+ srna = RNA_def_struct(brna, "GizmoGroupProperties", NULL);
+ RNA_def_struct_ui_text(srna, "Gizmo Group Properties", "Input properties of a Gizmo Group");
+ RNA_def_struct_refine_func(srna, "rna_GizmoGroupProperties_refine");
+ RNA_def_struct_idprops_func(srna, "rna_GizmoGroupProperties_idprops");
+ RNA_def_struct_flag(srna, STRUCT_NO_DATABLOCK_IDPROPERTIES);
}
void RNA_def_wm_gizmo(BlenderRNA *brna)
diff --git a/source/blender/makesrna/intern/rna_workspace_api.c b/source/blender/makesrna/intern/rna_workspace_api.c
index 331a8e77637..898dc296299 100644
--- a/source/blender/makesrna/intern/rna_workspace_api.c
+++ b/source/blender/makesrna/intern/rna_workspace_api.c
@@ -133,6 +133,23 @@ static PointerRNA rna_WorkspaceTool_operator_properties(
return PointerRNA_NULL;
}
+static PointerRNA rna_WorkspaceTool_gizmo_group_properties(
+ bToolRef *tref,
+ ReportList *reports,
+ const char *idname)
+{
+ wmGizmoGroupType *gzgt = WM_gizmogrouptype_find(idname, false);
+ if (gzgt != NULL) {
+ PointerRNA ptr;
+ WM_toolsystem_ref_properties_ensure_from_gizmo_group(tref, gzgt, &ptr);
+ return ptr;
+ }
+ else {
+ BKE_reportf(reports, RPT_ERROR, "Gizmo group '%s' not found!", idname);
+ }
+ return PointerRNA_NULL;
+}
+
#else
void RNA_api_workspace(StructRNA *srna)
@@ -176,6 +193,16 @@ void RNA_api_workspace_tool(StructRNA *srna)
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_RNAPTR);
RNA_def_function_return(func, parm);
+ /* Access gizmo-group options (optionally create). */
+ func = RNA_def_function(srna, "gizmo_group_properties", "rna_WorkspaceTool_gizmo_group_properties");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ parm = RNA_def_string(func, "group", NULL, 0, "", "");
+ RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+ /* return */
+ parm = RNA_def_pointer(func, "result", "GizmoGroupProperties", "", "");
+ RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_RNAPTR);
+ RNA_def_function_return(func, parm);
+
func = RNA_def_function(srna, "refresh_from_context", "rna_WorkspaceTool_refresh_from_context");
RNA_def_function_flag(func, FUNC_USE_SELF_ID | FUNC_USE_MAIN);
}