[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24246] trunk/blender: - all add object operators now take view_align as an argument, and enter_editmode where its used.

Campbell Barton ideasman42 at gmail.com
Mon Nov 2 17:07:49 CET 2009


Revision: 24246
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24246
Author:   campbellbarton
Date:     2009-11-02 17:07:49 +0100 (Mon, 02 Nov 2009)

Log Message:
-----------
- all add object operators now take view_align as an argument, and enter_editmode where its used. Makes running the operator from python pradictable without having to know the user prefs.
- missing return in function
- python error in view3d (assumed active object exists)

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_view3d.py
    trunk/blender/source/blender/editors/curve/editfont.c
    trunk/blender/source/blender/editors/include/ED_object.h
    trunk/blender/source/blender/editors/mesh/editmesh_add.c
    trunk/blender/source/blender/editors/object/object_add.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_vertex.c
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/makesrna/intern/rna_access.c

Modified: trunk/blender/release/scripts/ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d.py	2009-11-02 16:07:27 UTC (rev 24245)
+++ trunk/blender/release/scripts/ui/space_view3d.py	2009-11-02 16:07:49 UTC (rev 24246)
@@ -1334,7 +1334,7 @@
         col.itemR(view, "all_object_centers")
         col.itemR(view, "relationship_lines")
         if ob and ob.type == 'MESH':
-            mesh = context.active_object.data
+            mesh = ob.data
             col.itemR(mesh, "all_edges")
 
         col = layout.column()

Modified: trunk/blender/source/blender/editors/curve/editfont.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editfont.c	2009-11-02 16:07:27 UTC (rev 24245)
+++ trunk/blender/source/blender/editors/curve/editfont.c	2009-11-02 16:07:49 UTC (rev 24246)
@@ -479,7 +479,7 @@
 	obedit= add_object(scene, OB_FONT);
 	base= scene->basact;
 
-	ED_object_base_init_from_view(C, base);
+	ED_object_base_init_from_view(C, base, 1); /* seems to assume view align ? TODO - look into this, could be an operator option */
 	where_is_object(scene, obedit);
 
 	obedit->loc[0] += offset[0];

Modified: trunk/blender/source/blender/editors/include/ED_object.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_object.h	2009-11-02 16:07:27 UTC (rev 24245)
+++ trunk/blender/source/blender/editors/include/ED_object.h	2009-11-02 16:07:49 UTC (rev 24246)
@@ -42,6 +42,9 @@
 struct Curve;
 struct ReportList;
 struct ModifierData;
+struct wmOperatorType;
+struct wmOperator;
+struct wmEvent;
 
 /* object_edit.c */
 void ED_operatortypes_object(void);
@@ -74,8 +77,11 @@
 void ED_object_exit_editmode(struct bContext *C, int flag);
 void ED_object_enter_editmode(struct bContext *C, int flag);
 
-void ED_object_base_init_from_view(struct bContext *C, struct Base *base);
-struct Object *ED_object_add_type(struct bContext *C, int type);
+void ED_object_base_init_from_view(struct bContext *C, struct Base *base, int view_align);
+void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode);
+int ED_object_add_generic_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event);
+void ED_object_add_generic_get_opts(struct wmOperator *op, int *view_align, int *enter_editmode);
+struct Object *ED_object_add_type(struct bContext *C, int type, int view_align, int enter_editmode);
 
 void ED_object_single_users(struct Scene *scene, int full);
 

Modified: trunk/blender/source/blender/editors/mesh/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_add.c	2009-11-02 16:07:27 UTC (rev 24245)
+++ trunk/blender/source/blender/editors/mesh/editmesh_add.c	2009-11-02 16:07:49 UTC (rev 24246)
@@ -1273,7 +1273,7 @@
 
 /* uses context to figure out transform for primitive */
 /* returns standard diameter */
-static float new_primitive_matrix(bContext *C, float primmat[][4])
+static float new_primitive_matrix(bContext *C, int view_align, float primmat[][4])
 {
 	Object *obedit= CTX_data_edit_object(C);
 	Scene *scene = CTX_data_scene(C);
@@ -1283,7 +1283,7 @@
 	
 	Mat4One(primmat);
 	
-	if(rv3d && (U.flag & USER_ADD_VIEWALIGNED)) {
+	if(rv3d && view_align) {
 		Mat3CpyMat4(vmat, rv3d->viewmat);
 	} else
 		Mat3One(vmat);
@@ -1307,7 +1307,8 @@
 
 /* ********* add primitive operators ************* */
 
-static void make_prim_ext(bContext *C, int type, int tot, int seg,
+static void make_prim_ext(bContext *C, int view_align, int enter_editmode,
+		int type, int tot, int seg,
 		int subdiv, float dia, float depth, int ext, int fill)
 {
 	Object *obedit= CTX_data_edit_object(C);
@@ -1316,14 +1317,14 @@
 
 	if(obedit==NULL || obedit->type!=OB_MESH) {
 		/* create editmode */
-		ED_object_add_type(C, OB_MESH);
+		ED_object_add_type(C, OB_MESH, view_align, FALSE);
 		ED_object_enter_editmode(C, EM_DO_UNDO);
 		obedit= CTX_data_edit_object(C);
 		newob = 1;
 	}
 	else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA);
 
-	dia *= new_primitive_matrix(C, mat);
+	dia *= new_primitive_matrix(C, view_align, mat);
 
 	make_prim(obedit, type, mat, tot, seg, subdiv, dia, depth, ext, fill);
 
@@ -1332,7 +1333,7 @@
 
 
 	/* userdef */
-	if (newob && (U.flag & USER_ADD_EDITMODE)==0) {
+	if (newob && !enter_editmode) {
 		ED_object_exit_editmode(C, EM_FREEDATA); /* adding EM_DO_UNDO messes up operator redo */
 	}
 	WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit);
@@ -1340,8 +1341,11 @@
 
 static int add_primitive_plane_exec(bContext *C, wmOperator *op)
 {
+	int view_align, enter_editmode;
+	ED_object_add_generic_get_opts(op, &view_align, &enter_editmode);
+
 	/* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */
-	make_prim_ext(C, PRIM_PLANE, 4, 0, 0, sqrt(2.0f), 0.0f, 0, 1);
+	make_prim_ext(C, view_align, enter_editmode, PRIM_PLANE, 4, 0, 0, sqrt(2.0f), 0.0f, 0, 1);
 	return OPERATOR_FINISHED;	
 }
 
@@ -1353,17 +1357,23 @@
 	ot->idname= "MESH_OT_primitive_plane_add";
 	
 	/* api callbacks */
+	ot->invoke= ED_object_add_generic_invoke;
 	ot->exec= add_primitive_plane_exec;
 	ot->poll= ED_operator_scene_editable;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	ED_object_add_generic_props(ot, TRUE);
 }
 
 static int add_primitive_cube_exec(bContext *C, wmOperator *op)
 {
+	int view_align, enter_editmode;
+	ED_object_add_generic_get_opts(op, &view_align, &enter_editmode);
+
 	/* sqrt(2.0f) - plane (diameter of 1.41 makes it unit size) */
-	make_prim_ext(C, PRIM_CUBE, 4, 0, 0, sqrt(2.0f), 1.0f, 1, 1);
+	make_prim_ext(C, view_align, enter_editmode, PRIM_CUBE, 4, 0, 0, sqrt(2.0f), 1.0f, 1, 1);
 	return OPERATOR_FINISHED;
 }
 
@@ -1375,16 +1385,23 @@
 	ot->idname= "MESH_OT_primitive_cube_add";
 	
 	/* api callbacks */
+	ot->invoke= ED_object_add_generic_invoke;
 	ot->exec= add_primitive_cube_exec;
 	ot->poll= ED_operator_scene_editable;
 	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	ED_object_add_generic_props(ot, TRUE);
 }
 
 static int add_primitive_circle_exec(bContext *C, wmOperator *op)
 {
-	make_prim_ext(C, PRIM_CIRCLE, RNA_int_get(op->ptr, "vertices"), 0, 0,
+	int view_align, enter_editmode;
+	ED_object_add_generic_get_opts(op, &view_align, &enter_editmode);
+
+	make_prim_ext(C, view_align, enter_editmode,
+			PRIM_CIRCLE, RNA_int_get(op->ptr, "vertices"), 0, 0,
 			RNA_float_get(op->ptr,"radius"), 0.0f, 0,
 			RNA_boolean_get(op->ptr, "fill"));
 
@@ -1399,6 +1416,7 @@
 	ot->idname= "MESH_OT_primitive_circle_add";
 	
 	/* api callbacks */
+	ot->invoke= ED_object_add_generic_invoke;
 	ot->exec= add_primitive_circle_exec;
 	ot->poll= ED_operator_scene_editable;
 	
@@ -1409,11 +1427,17 @@
 	RNA_def_int(ot->srna, "vertices", 32, INT_MIN, INT_MAX, "Vertices", "", 3, 500);
 	RNA_def_float(ot->srna, "radius", 1.0f, 0.0, FLT_MAX, "Radius", "", 0.001, 100.00);
 	RNA_def_boolean(ot->srna, "fill", 0, "Fill", "");
+
+	ED_object_add_generic_props(ot, TRUE);
 }
 
 static int add_primitive_tube_exec(bContext *C, wmOperator *op)
 {
-	make_prim_ext(C, PRIM_CYLINDER, RNA_int_get(op->ptr, "vertices"), 0, 0,
+	int view_align, enter_editmode;
+	ED_object_add_generic_get_opts(op, &view_align, &enter_editmode);
+
+	make_prim_ext(C, view_align, enter_editmode,
+			PRIM_CYLINDER, RNA_int_get(op->ptr, "vertices"), 0, 0,
 			RNA_float_get(op->ptr,"radius"),
 			RNA_float_get(op->ptr, "depth"), 1, 
 			RNA_boolean_get(op->ptr, "cap_ends"));
@@ -1429,6 +1453,7 @@
 	ot->idname= "MESH_OT_primitive_tube_add";
 	
 	/* api callbacks */
+	ot->invoke= ED_object_add_generic_invoke;
 	ot->exec= add_primitive_tube_exec;
 	ot->poll= ED_operator_scene_editable;
 	
@@ -1440,11 +1465,17 @@
 	RNA_def_float(ot->srna, "radius", 1.0f, 0.0, FLT_MAX, "Radius", "", 0.001, 100.00);
 	RNA_def_float(ot->srna, "depth", 1.0f, 0.0, FLT_MAX, "Depth", "", 0.001, 100.00);
 	RNA_def_boolean(ot->srna, "cap_ends", 1, "Cap Ends", "");
+
+	ED_object_add_generic_props(ot, TRUE);
 }
 
 static int add_primitive_cone_exec(bContext *C, wmOperator *op)
 {
-	make_prim_ext(C, PRIM_CONE, RNA_int_get(op->ptr, "vertices"), 0, 0,
+	int view_align, enter_editmode;
+	ED_object_add_generic_get_opts(op, &view_align, &enter_editmode);
+
+	make_prim_ext(C, view_align, enter_editmode,
+			PRIM_CONE, RNA_int_get(op->ptr, "vertices"), 0, 0,
 			RNA_float_get(op->ptr,"radius"), RNA_float_get(op->ptr, "depth"),
 			0, RNA_boolean_get(op->ptr, "cap_end"));
 
@@ -1459,6 +1490,7 @@
 	ot->idname= "MESH_OT_primitive_cone_add";
 	
 	/* api callbacks */
+	ot->invoke= ED_object_add_generic_invoke;
 	ot->exec= add_primitive_cone_exec;
 	ot->poll= ED_operator_scene_editable;
 	
@@ -1471,11 +1503,16 @@
 	RNA_def_float(ot->srna, "depth", 1.0f, 0.0, FLT_MAX, "Depth", "", 0.001, 100.00);
 	RNA_def_boolean(ot->srna, "cap_end", 0, "Cap End", "");
 
+	ED_object_add_generic_props(ot, TRUE);
 }
 
 static int add_primitive_grid_exec(bContext *C, wmOperator *op)
 {
-	make_prim_ext(C, PRIM_GRID, RNA_int_get(op->ptr, "x_subdivisions"),
+	int view_align, enter_editmode;
+	ED_object_add_generic_get_opts(op, &view_align, &enter_editmode);
+
+	make_prim_ext(C, view_align, enter_editmode,
+			PRIM_GRID, RNA_int_get(op->ptr, "x_subdivisions"),
 			RNA_int_get(op->ptr, "y_subdivisions"), 0,
 			RNA_float_get(op->ptr,"size"), 0.0f, 0, 1);
 
@@ -1490,6 +1527,7 @@
 	ot->idname= "MESH_OT_primitive_grid_add";
 	
 	/* api callbacks */
+	ot->invoke= ED_object_add_generic_invoke;
 	ot->exec= add_primitive_grid_exec;
 	ot->poll= ED_operator_scene_editable;
 	
@@ -1500,11 +1538,18 @@
 	RNA_def_int(ot->srna, "x_subdivisions", 10, INT_MIN, INT_MAX, "X Subdivisions", "", 3, 1000);
 	RNA_def_int(ot->srna, "y_subdivisions", 10, INT_MIN, INT_MAX, "Y Subdivisions", "", 3, 1000);
 	RNA_def_float(ot->srna, "size", 1.0f, 0.0, FLT_MAX, "Size", "", 0.001, FLT_MAX);
+
+	ED_object_add_generic_props(ot, TRUE);
 }
 
 static int add_primitive_monkey_exec(bContext *C, wmOperator *op)
 {
-	make_prim_ext(C, PRIM_MONKEY, 0, 0, 2, 0.0f, 0.0f, 0, 0);
+	int view_align, enter_editmode;
+	ED_object_add_generic_get_opts(op, &view_align, &enter_editmode);
+
+	make_prim_ext(C, view_align, enter_editmode,
+			PRIM_MONKEY, 0, 0, 2, 0.0f, 0.0f, 0, 0);
+
 	return OPERATOR_FINISHED;
 }
 
@@ -1516,16 +1561,23 @@
 	ot->idname= "MESH_OT_primitive_monkey_add";
 	
 	/* api callbacks */
+	ot->invoke= ED_object_add_generic_invoke;
 	ot->exec= add_primitive_monkey_exec;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list