[Bf-blender-cvs] [0eaf4a2] temp_pie_max_items_fix: Minor API cleanup

Campbell Barton noreply at git.blender.org
Mon Feb 15 19:06:35 CET 2016


Commit: 0eaf4a27a69120e2af44544da34a0761d8642f0d
Author: Campbell Barton
Date:   Tue Feb 16 04:50:36 2016 +1100
Branches: temp_pie_max_items_fix
https://developer.blender.org/rB0eaf4a27a69120e2af44544da34a0761d8642f0d

Minor API cleanup

Avoid passing duplicate args

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

M	source/blender/editors/include/UI_interface.h
M	source/blender/editors/interface/interface_intern.h
M	source/blender/editors/interface/interface_layout.c
M	source/blender/editors/interface/interface_regions.c

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

diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 8c89b5d..cee4bcd 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -977,11 +977,13 @@ void uiItemEnumR(uiLayout *layout, const char *name, int icon, struct PointerRNA
 void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, const char *propname, const char *value, const char *name, int icon);
 void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, const char *propname);
 void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, const char *propname, struct PointerRNA *searchptr, const char *searchpropname, const char *name, int icon);
-void uiItemsFullEnumO(uiLayout *layout, const char *opname, const char *propname, struct IDProperty *properties, int context, int flag);
-void uiItemsFullEnumO_array(
-        uiLayout *layout, EnumPropertyItem *item_array, const int totitem,
-        struct wmOperatorType *ot, PointerRNA ptr, PropertyRNA *prop, const char *propname, IDProperty *properties,
-        const int context, const int flag);
+void uiItemsFullEnumO(
+        uiLayout *layout, const char *opname, const char *propname,
+        struct IDProperty *properties, int context, const int flag);
+void uiItemsFullEnumO_items(
+        uiLayout *layout, struct wmOperatorType *ot, PointerRNA ptr, PropertyRNA *prop,
+        IDProperty *properties, int context, const int flag,
+        const EnumPropertyItem *item_array, const int totitem);
 
 void uiItemL(uiLayout *layout, const char *name, int icon); /* label */
 void uiItemLDrag(uiLayout *layout, struct PointerRNA *ptr, const char *name, int icon); /* label icon for dragging */
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index ccf030a..66510fb 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -612,7 +612,7 @@ uiPopupBlockHandle *ui_popup_menu_create(
 
 void ui_pie_menu_level_create(
         uiBlock *block, struct wmOperatorType *ot, const char *propname, IDProperty *properties,
-        EnumPropertyItem *items, int totitem, int context, int flag);
+        const EnumPropertyItem *items, int totitem, int context, int flag);
 
 void ui_popup_block_free(struct bContext *C, uiPopupBlockHandle *handle);
 
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 076f22d..501be46 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -720,7 +720,7 @@ void UI_context_active_but_prop_get_filebrowser(
 /**
  * Update a buttons tip with an enum's description if possible.
  */
-static void ui_but_tip_from_enum_item(uiBut *but, EnumPropertyItem *item)
+static void ui_but_tip_from_enum_item(uiBut *but, const EnumPropertyItem *item)
 {
 	if (but->tip == NULL || but->tip[0] == '\0') {
 		if (item->description && item->description[0]) {
@@ -891,35 +891,22 @@ static bool ui_layout_is_radial(const uiLayout *layout)
 
 /**
  * Create ui items for enum items in \a item_array.
+ *
+ * A version of #uiItemsFullEnumO that takes pre-calculated item array.
  */
-void uiItemsFullEnumO_array(
-        uiLayout *layout, EnumPropertyItem *item_array, const int totitem,
-        wmOperatorType *ot, PointerRNA ptr, PropertyRNA *prop, const char *propname, IDProperty *properties,
-        const int context, const int flag)
+void uiItemsFullEnumO_items(
+        uiLayout *layout, wmOperatorType *ot, PointerRNA ptr, PropertyRNA *prop, IDProperty *properties,
+        const int context, const int flag,
+        const EnumPropertyItem *item_array, const int totitem)
 {
-	/* passing prop and ptr is optional, search for them if needed */
-	if (!ptr.data) {
-		WM_operator_properties_create_ptr(&ptr, ot);
-		/* so the context is passed to itemf functions (some need it) */
-		WM_operator_properties_sanitize(&ptr, false);
-	}
-	if (!prop) {
-		prop = RNA_struct_find_property(&ptr, propname);
-	}
-
-	if (!(prop && RNA_property_type(prop) == PROP_ENUM)) {
-		if (prop) {
-			RNA_warning("%s.%s, not an enum type", RNA_struct_identifier(ptr.type), propname);
-		}
-		else {
-			RNA_warning("%s.%s not found", RNA_struct_identifier(ptr.type), propname);
-		}
+	const char *propname = RNA_property_identifier(prop);
+	if (RNA_property_type(prop) != PROP_ENUM) {
+		RNA_warning("%s.%s, not an enum type", RNA_struct_identifier(ptr.type), propname);
 		return;
 	}
 
-
 	uiLayout *target, *split = NULL;
-	EnumPropertyItem *item;
+	const EnumPropertyItem *item;
 	uiBlock *block = layout->root->block;
 	const bool radial = ui_layout_is_radial(layout);
 	int i;
@@ -1000,7 +987,7 @@ void uiItemsFullEnumO_array(
 
 void uiItemsFullEnumO(
         uiLayout *layout, const char *opname, const char *propname, IDProperty *properties,
-        int context, int flag)
+        int context, const int flag)
 {
 	wmOperatorType *ot = WM_operatortype_find(opname, 0); /* print error next */
 
@@ -1035,7 +1022,9 @@ void uiItemsFullEnumO(
 		}
 
 		/* add items */
-		uiItemsFullEnumO_array(layout, item_array, totitem, ot, ptr, prop, propname, properties, context, flag);
+		uiItemsFullEnumO_items(
+		        layout, ot, ptr, prop, properties, context, flag,
+		        item_array, totitem);
 
 		if (free) {
 			MEM_freeN(item_array);
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index 742b166..e8b0cf3 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -2993,8 +2993,21 @@ static void ui_pie_menu_level_invoke(bContext *C, void *argN, void *arg2)
 
 	layout = uiLayoutRadial(layout);
 
-	uiItemsFullEnumO_array(layout, item_array, lvl->totitem, lvl->ot, PointerRNA_NULL, NULL, lvl->propname,
-	                       lvl->properties, lvl->context, lvl->flag);
+	PointerRNA ptr;
+
+	WM_operator_properties_create_ptr(&ptr, lvl->ot);
+	/* so the context is passed to itemf functions (some need it) */
+	WM_operator_properties_sanitize(&ptr, false);
+	PropertyRNA *prop = RNA_struct_find_property(&ptr, lvl->propname);
+
+	if (prop) {
+		uiItemsFullEnumO_items(
+		        layout, lvl->ot, ptr, prop, lvl->properties, lvl->context, lvl->flag,
+		        item_array, lvl->totitem);
+	}
+	else {
+		RNA_warning("%s.%s, not an enum type", RNA_struct_identifier(ptr.type), lvl->propname);
+	}
 
 	UI_pie_menu_end(C, pie);
 }
@@ -3004,7 +3017,7 @@ static void ui_pie_menu_level_invoke(bContext *C, void *argN, void *arg2)
  */
 void ui_pie_menu_level_create(
         uiBlock *block, wmOperatorType *ot, const char *propname, IDProperty *properties,
-        EnumPropertyItem *items, int totitem, int context, int flag)
+        const EnumPropertyItem *items, int totitem, int context, int flag)
 {
 	const int totitem_parent = PIE_MAX_ITEMS - 1;
 	const int totitem_remain = totitem - totitem_parent;




More information about the Bf-blender-cvs mailing list