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/python/intern/bpy_gizmo_wrap.c')
-rw-r--r--source/blender/python/intern/bpy_gizmo_wrap.c266
1 files changed, 129 insertions, 137 deletions
diff --git a/source/blender/python/intern/bpy_gizmo_wrap.c b/source/blender/python/intern/bpy_gizmo_wrap.c
index f1281344bcf..41ff630753f 100644
--- a/source/blender/python/intern/bpy_gizmo_wrap.c
+++ b/source/blender/python/intern/bpy_gizmo_wrap.c
@@ -39,7 +39,7 @@
#include "bpy_rna.h"
#include "bpy_intern_string.h"
-#include "bpy_gizmo_wrap.h" /* own include */
+#include "bpy_gizmo_wrap.h" /* own include */
/* we may want to add, but not now */
@@ -47,176 +47,168 @@
/** \name Gizmo
* \{ */
-
-static bool bpy_gizmotype_target_property_def(
- wmGizmoType *gzt, PyObject *item)
+static bool bpy_gizmotype_target_property_def(wmGizmoType *gzt, PyObject *item)
{
- /* Note: names based on 'rna_rna.c' */
- PyObject *empty_tuple = PyTuple_New(0);
-
- struct {
- char *id;
- char *type_id; int type;
- int array_length;
- } params = {
- .id = NULL, /* not optional */
- .type = PROP_FLOAT,
- .type_id = NULL,
- .array_length = 1,
- };
-
- static const char * const _keywords[] = {"id", "type", "array_length", NULL};
- static _PyArg_Parser _parser = {"|$ssi:register_class", _keywords, 0};
- if (!_PyArg_ParseTupleAndKeywordsFast(
- empty_tuple, item,
- &_parser,
- &params.id,
- &params.type_id,
- &params.array_length))
- {
- goto fail;
- }
-
- if (params.id == NULL) {
- PyErr_SetString(PyExc_ValueError, "'id' argument not given");
- goto fail;
- }
-
- if ((params.type_id != NULL) &&
- pyrna_enum_value_from_id(
- rna_enum_property_type_items, params.type_id, &params.type, "'type' enum value") == -1)
- {
- goto fail;
- }
- else {
- params.type = rna_enum_property_type_items[params.type].value;
- }
-
- if ((params.array_length < 1 || params.array_length > RNA_MAX_ARRAY_LENGTH)) {
- PyErr_SetString(PyExc_ValueError, "'array_length' out of range");
- goto fail;
- }
-
- WM_gizmotype_target_property_def(gzt, params.id, params.type, params.array_length);
- Py_DECREF(empty_tuple);
- return true;
+ /* Note: names based on 'rna_rna.c' */
+ PyObject *empty_tuple = PyTuple_New(0);
+
+ struct {
+ char *id;
+ char *type_id;
+ int type;
+ int array_length;
+ } params = {
+ .id = NULL, /* not optional */
+ .type = PROP_FLOAT,
+ .type_id = NULL,
+ .array_length = 1,
+ };
+
+ static const char *const _keywords[] = {"id", "type", "array_length", NULL};
+ static _PyArg_Parser _parser = {"|$ssi:register_class", _keywords, 0};
+ if (!_PyArg_ParseTupleAndKeywordsFast(
+ empty_tuple, item, &_parser, &params.id, &params.type_id, &params.array_length)) {
+ goto fail;
+ }
+
+ if (params.id == NULL) {
+ PyErr_SetString(PyExc_ValueError, "'id' argument not given");
+ goto fail;
+ }
+
+ if ((params.type_id != NULL) &&
+ pyrna_enum_value_from_id(
+ rna_enum_property_type_items, params.type_id, &params.type, "'type' enum value") == -1) {
+ goto fail;
+ }
+ else {
+ params.type = rna_enum_property_type_items[params.type].value;
+ }
+
+ if ((params.array_length < 1 || params.array_length > RNA_MAX_ARRAY_LENGTH)) {
+ PyErr_SetString(PyExc_ValueError, "'array_length' out of range");
+ goto fail;
+ }
+
+ WM_gizmotype_target_property_def(gzt, params.id, params.type, params.array_length);
+ Py_DECREF(empty_tuple);
+ return true;
fail:
- Py_DECREF(empty_tuple);
- return false;
+ Py_DECREF(empty_tuple);
+ return false;
}
static void gizmo_properties_init(wmGizmoType *gzt)
{
- PyTypeObject *py_class = gzt->ext.data;
- RNA_struct_blender_type_set(gzt->ext.srna, gzt);
-
- /* only call this so pyrna_deferred_register_class gives a useful error
- * WM_operatortype_append_ptr will call RNA_def_struct_identifier
- * later */
- RNA_def_struct_identifier_no_struct_map(gzt->srna, gzt->idname);
-
- if (pyrna_deferred_register_class(gzt->srna, py_class) != 0) {
- PyErr_Print(); /* failed to register operator props */
- PyErr_Clear();
- }
-
- /* Extract target property definitions from 'bl_target_properties' */
- {
- /* picky developers will notice that 'bl_targets' won't work with inheritance
- * get direct from the dict to avoid raising a load of attribute errors (yes this isnt ideal) - campbell */
- PyObject *py_class_dict = py_class->tp_dict;
- PyObject *bl_target_properties = PyDict_GetItem(py_class_dict, bpy_intern_str_bl_target_properties);
-
- /* Some widgets may only exist to activate operators. */
- if (bl_target_properties != NULL) {
- PyObject *bl_target_properties_fast;
- if (!(bl_target_properties_fast = PySequence_Fast(
- bl_target_properties, "bl_target_properties sequence")))
- {
- /* PySequence_Fast sets the error */
- PyErr_Print();
- PyErr_Clear();
- return;
- }
-
- const uint items_len = PySequence_Fast_GET_SIZE(bl_target_properties_fast);
- PyObject **items = PySequence_Fast_ITEMS(bl_target_properties_fast);
-
- for (uint i = 0; i < items_len; i++) {
- if (!bpy_gizmotype_target_property_def(gzt, items[i])) {
- PyErr_Print();
- PyErr_Clear();
- break;
- }
- }
-
- Py_DECREF(bl_target_properties_fast);
- }
- }
+ PyTypeObject *py_class = gzt->ext.data;
+ RNA_struct_blender_type_set(gzt->ext.srna, gzt);
+
+ /* only call this so pyrna_deferred_register_class gives a useful error
+ * WM_operatortype_append_ptr will call RNA_def_struct_identifier
+ * later */
+ RNA_def_struct_identifier_no_struct_map(gzt->srna, gzt->idname);
+
+ if (pyrna_deferred_register_class(gzt->srna, py_class) != 0) {
+ PyErr_Print(); /* failed to register operator props */
+ PyErr_Clear();
+ }
+
+ /* Extract target property definitions from 'bl_target_properties' */
+ {
+ /* picky developers will notice that 'bl_targets' won't work with inheritance
+ * get direct from the dict to avoid raising a load of attribute errors (yes this isnt ideal) - campbell */
+ PyObject *py_class_dict = py_class->tp_dict;
+ PyObject *bl_target_properties = PyDict_GetItem(py_class_dict,
+ bpy_intern_str_bl_target_properties);
+
+ /* Some widgets may only exist to activate operators. */
+ if (bl_target_properties != NULL) {
+ PyObject *bl_target_properties_fast;
+ if (!(bl_target_properties_fast = PySequence_Fast(bl_target_properties,
+ "bl_target_properties sequence"))) {
+ /* PySequence_Fast sets the error */
+ PyErr_Print();
+ PyErr_Clear();
+ return;
+ }
+
+ const uint items_len = PySequence_Fast_GET_SIZE(bl_target_properties_fast);
+ PyObject **items = PySequence_Fast_ITEMS(bl_target_properties_fast);
+
+ for (uint i = 0; i < items_len; i++) {
+ if (!bpy_gizmotype_target_property_def(gzt, items[i])) {
+ PyErr_Print();
+ PyErr_Clear();
+ break;
+ }
+ }
+
+ Py_DECREF(bl_target_properties_fast);
+ }
+ }
}
void BPY_RNA_gizmo_wrapper(wmGizmoType *gzt, void *userdata)
{
- /* take care not to overwrite anything set in
- * WM_gizmomaptype_group_link_ptr before opfunc() is called */
- StructRNA *srna = gzt->srna;
- *gzt = *((wmGizmoType *)userdata);
- gzt->srna = srna; /* restore */
+ /* take care not to overwrite anything set in
+ * WM_gizmomaptype_group_link_ptr before opfunc() is called */
+ StructRNA *srna = gzt->srna;
+ *gzt = *((wmGizmoType *)userdata);
+ gzt->srna = srna; /* restore */
- /* don't do translations here yet */
+ /* don't do translations here yet */
#if 0
- /* Use i18n context from ext.srna if possible (py gizmogroups). */
- if (gt->ext.srna) {
- RNA_def_struct_translation_context(gt->srna, RNA_struct_translation_context(gt->ext.srna));
- }
+ /* Use i18n context from ext.srna if possible (py gizmogroups). */
+ if (gt->ext.srna) {
+ RNA_def_struct_translation_context(gt->srna, RNA_struct_translation_context(gt->ext.srna));
+ }
#endif
- gzt->struct_size = sizeof(wmGizmo);
+ gzt->struct_size = sizeof(wmGizmo);
- gizmo_properties_init(gzt);
+ gizmo_properties_init(gzt);
}
/** \} */
-
/* -------------------------------------------------------------------- */
/** \name Gizmo Group
* \{ */
static void gizmogroup_properties_init(wmGizmoGroupType *gzgt)
{
- PyTypeObject *py_class = gzgt->ext.data;
- RNA_struct_blender_type_set(gzgt->ext.srna, gzgt);
-
- /* only call this so pyrna_deferred_register_class gives a useful error
- * WM_operatortype_append_ptr will call RNA_def_struct_identifier
- * later */
- RNA_def_struct_identifier_no_struct_map(gzgt->srna, gzgt->idname);
-
- if (pyrna_deferred_register_class(gzgt->srna, py_class) != 0) {
- PyErr_Print(); /* failed to register operator props */
- PyErr_Clear();
- }
+ PyTypeObject *py_class = gzgt->ext.data;
+ RNA_struct_blender_type_set(gzgt->ext.srna, gzgt);
+
+ /* only call this so pyrna_deferred_register_class gives a useful error
+ * WM_operatortype_append_ptr will call RNA_def_struct_identifier
+ * later */
+ RNA_def_struct_identifier_no_struct_map(gzgt->srna, gzgt->idname);
+
+ if (pyrna_deferred_register_class(gzgt->srna, py_class) != 0) {
+ PyErr_Print(); /* failed to register operator props */
+ PyErr_Clear();
+ }
}
void BPY_RNA_gizmogroup_wrapper(wmGizmoGroupType *gzgt, void *userdata)
{
- /* take care not to overwrite anything set in
- * WM_gizmomaptype_group_link_ptr before opfunc() is called */
- StructRNA *srna = gzgt->srna;
- *gzgt = *((wmGizmoGroupType *)userdata);
- gzgt->srna = srna; /* restore */
+ /* take care not to overwrite anything set in
+ * WM_gizmomaptype_group_link_ptr before opfunc() is called */
+ StructRNA *srna = gzgt->srna;
+ *gzgt = *((wmGizmoGroupType *)userdata);
+ gzgt->srna = srna; /* restore */
- /* don't do translations here yet */
+ /* don't do translations here yet */
#if 0
- /* Use i18n context from ext.srna if possible (py gizmogroups). */
- if (gzgt->ext.srna) {
- RNA_def_struct_translation_context(gzgt->srna, RNA_struct_translation_context(gzgt->ext.srna));
- }
+ /* Use i18n context from ext.srna if possible (py gizmogroups). */
+ if (gzgt->ext.srna) {
+ RNA_def_struct_translation_context(gzgt->srna, RNA_struct_translation_context(gzgt->ext.srna));
+ }
#endif
- gizmogroup_properties_init(gzgt);
+ gizmogroup_properties_init(gzgt);
}
/** \} */