[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59621] trunk/blender/source/blender/ editors/curve/editcurve.c: edits to curve operator

Campbell Barton ideasman42 at gmail.com
Thu Aug 29 05:14:40 CEST 2013


Revision: 59621
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59621
Author:   campbellbarton
Date:     2013-08-29 03:14:36 +0000 (Thu, 29 Aug 2013)
Log Message:
-----------
edits to curve operator
- remove delete-all option (users can just select all and delete as with all other modes).
- remove CALLOC_STRUCT_N macro.
- CURVE_OT_delete define a dynamic enum rather then a custom invoke menu function.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/curve/editcurve.c

Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c	2013-08-29 03:00:04 UTC (rev 59620)
+++ trunk/blender/source/blender/editors/curve/editcurve.c	2013-08-29 03:14:36 UTC (rev 59621)
@@ -126,9 +126,6 @@
 static void adduplicateflagNurb(Object *obedit, ListBase *newnurb, const short flag, const bool split);
 static int curve_delete_selected(Object *obedit, const eCurveElem_Types type, const bool split);
 
-/* still need to eradicate a few :( */
-#define CALLOC_STRUCT_N(x, y, name) (x *)MEM_callocN((y) * sizeof(x), name)
-
 static float nurbcircle[8][2] = {
 	{0.0, -1.0}, {-1.0, -1.0}, {-1.0, 0.0}, {-1.0,  1.0},
 	{0.0,  1.0}, { 1.0,  1.0}, { 1.0, 0.0}, { 1.0, -1.0}
@@ -6222,16 +6219,14 @@
 		BKE_nurbList_free(nubase);
 		BLI_movelisttolist(nubase, &newnurb);
 	}
-	else if (type == 2) {
-		cu->actnu = -1;
-		keyIndex_delNurbList(editnurb, nubase);
-		BKE_nurbList_free(nubase);
+	else {
+		BLI_assert(0);
 	}
 
 	return OPERATOR_FINISHED;
 }
 
-static int delete_exec(bContext *C, wmOperator *op)
+static int curve_delete_exec(bContext *C, wmOperator *op)
 {
 	Object *obedit = CTX_data_edit_object(C);
 	eCurveElem_Types type = RNA_enum_get(op->ptr, "type");
@@ -6249,37 +6244,41 @@
 	return retval;
 }
 
-static int delete_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
+static EnumPropertyItem curve_delete_type_items[] = {
+	{CURVE_VERTEX, "VERTICES", 0, "Vertices", ""},
+	{CURVE_SEGMENT, "SEGMENT", 0, "Segments", ""},
+	{0, NULL, 0, NULL, NULL}
+};
+
+static EnumPropertyItem *rna_curve_delete_type_itemf(bContext *C, PointerRNA *UNUSED(ptr),
+                                                            PropertyRNA *UNUSED(prop), int *free)
 {
-	Object *obedit = CTX_data_edit_object(C);
-	uiPopupMenu *pup;
-	uiLayout *layout;
+	Object *obedit;
+	EnumPropertyItem *item = NULL;
+	int totitem = 0;
 
+
+	if (!C) /* needed for docs and i18n tools */
+		return curve_delete_type_items;
+
+	obedit = CTX_data_edit_object(C);
 	if (obedit->type == OB_SURF) {
-		pup = uiPupMenuBegin(C, IFACE_("Delete"), ICON_NONE);
-		layout = uiPupMenuLayout(pup);
-		uiItemEnumO_ptr(layout, op->type, NULL, 0, "type", 0);
-		uiItemEnumO_ptr(layout, op->type, NULL, 0, "type", 2);
-		uiPupMenuEnd(C, pup);
+		RNA_enum_items_add_value(&item, &totitem, curve_delete_type_items, CURVE_VERTEX);
 	}
 	else {
-		pup = uiPupMenuBegin(C, IFACE_("Delete"), ICON_NONE);
-		layout = uiPupMenuLayout(pup);
-		uiItemsEnumO(layout, op->type->idname, "type");
-		uiPupMenuEnd(C, pup);
+		RNA_enum_items_add_value(&item, &totitem, curve_delete_type_items, CURVE_VERTEX);
+		RNA_enum_items_add_value(&item, &totitem, curve_delete_type_items, CURVE_SEGMENT);
 	}
 
-	return OPERATOR_CANCELLED;
+	RNA_enum_item_end(&item, &totitem);
+	*free = true;
+
+	return item;
 }
 
 void CURVE_OT_delete(wmOperatorType *ot)
 {
-	static EnumPropertyItem type_items[] = {
-		{CURVE_VERTEX, "VERTICES", 0, "Vertices", ""},
-		{CURVE_SEGMENT, "SEGMENT", 0, "Segments", ""},
-		{2, "ALL", 0, "All", ""},
-		{0, NULL, 0, NULL, NULL}
-	};
+	PropertyRNA *prop;
 
 	/* identifiers */
 	ot->name = "Delete";
@@ -6287,15 +6286,18 @@
 	ot->idname = "CURVE_OT_delete";
 	
 	/* api callbacks */
-	ot->exec = delete_exec;
-	ot->invoke = delete_invoke;
+	ot->exec = curve_delete_exec;
+	ot->invoke = WM_menu_invoke;
 	ot->poll = ED_operator_editsurfcurve;
 	
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 
 	/* properties */
-	RNA_def_enum(ot->srna, "type", type_items, 0, "Type", "Which elements to delete");
+	prop = RNA_def_enum(ot->srna, "type", curve_delete_type_items, 0, "Type", "Which elements to delete");
+	RNA_def_enum_funcs(prop, rna_curve_delete_type_itemf);
+
+	ot->prop = prop;
 }
 
 /********************** shade smooth/flat operator *********************/
@@ -6566,7 +6568,7 @@
 				nu->pntsu = 4;
 				nu->pntsv = 1;
 				nu->orderu = 4;
-				nu->bp = CALLOC_STRUCT_N(BPoint, 4, "addNurbprim3");
+				nu->bp = (BPoint *)MEM_callocN(sizeof(BPoint) * 4, "addNurbprim3");
 
 				bp = nu->bp;
 				for (a = 0; a < 4; a++, bp++) {
@@ -6602,7 +6604,7 @@
 			nu->orderu = 5;
 			nu->flagu = CU_NURB_ENDPOINT; /* endpoint */
 			nu->resolu = cu->resolu;
-			nu->bp = CALLOC_STRUCT_N(BPoint, 5, "addNurbprim3");
+			nu->bp = (BPoint *)MEM_callocN(sizeof(BPoint) * 5, "addNurbprim3");
 
 			bp = nu->bp;
 			for (a = 0; a < 5; a++, bp++) {
@@ -6635,7 +6637,7 @@
 			if (cutype == CU_BEZIER) {
 				if (!force_3d) nu->flag |= CU_2D;
 				nu->pntsu = 4;
-				nu->bezt = CALLOC_STRUCT_N(BezTriple, 4, "addNurbprim1");
+				nu->bezt = (BezTriple *)MEM_callocN(sizeof(BezTriple) * 4, "addNurbprim1");
 				nu->flagu = CU_NURB_CYCLIC;
 				bezt = nu->bezt;
 
@@ -6672,7 +6674,7 @@
 				nu->pntsu = 8;
 				nu->pntsv = 1;
 				nu->orderu = 4;
-				nu->bp = CALLOC_STRUCT_N(BPoint, 8, "addNurbprim6");
+				nu->bp = (BPoint *)MEM_callocN(sizeof(BPoint) * 8, "addNurbprim6");
 				nu->flagu = CU_NURB_CYCLIC;
 				bp = nu->bp;
 
@@ -6705,7 +6707,7 @@
 				nu->orderu = 4;
 				nu->orderv = 4;
 				nu->flag = CU_SMOOTH;
-				nu->bp = CALLOC_STRUCT_N(BPoint, 4 * 4, "addNurbprim6");
+				nu->bp = (BPoint *)MEM_callocN(sizeof(BPoint) * (4 * 4), "addNurbprim6");
 				nu->flagu = 0;
 				nu->flagv = 0;
 				bp = nu->bp;
@@ -6767,7 +6769,7 @@
 				nu->resolu = cu->resolu;
 				nu->resolv = cu->resolv;
 				nu->flag = CU_SMOOTH;
-				nu->bp = CALLOC_STRUCT_N(BPoint, 5, "addNurbprim6");
+				nu->bp = (BPoint *)MEM_callocN(sizeof(BPoint) * 5, "addNurbprim6");
 				nu->flagu = 0;
 				bp = nu->bp;
 




More information about the Bf-blender-cvs mailing list