Revision: 18961
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18961
Author:   blendix
Date:     2009-02-13 18:37:01 +0100 (Fri, 13 Feb 2009)

Log Message:
-----------
2.5: Curve edit mode add vertex and add menus now work. Also
fixed an issue where sublevel menus did not get right operator
context.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/curve/curve_intern.h
    branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c
    branches/blender2.5/blender/source/blender/editors/curve/editcurve.c
    branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_add.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/object/object_intern.h
    branches/blender2.5/blender/source/blender/editors/object/object_ops.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c

Modified: 
branches/blender2.5/blender/source/blender/editors/curve/curve_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/curve/curve_intern.h     
2009-02-13 16:05:42 UTC (rev 18960)
+++ branches/blender2.5/blender/source/blender/editors/curve/curve_intern.h     
2009-02-13 17:37:01 UTC (rev 18961)
@@ -71,12 +71,8 @@
 void CURVE_OT_delete(struct wmOperatorType *ot);
 void CURVE_OT_set_smooth(struct wmOperatorType *ot);
 void CURVE_OT_clear_tilt(struct wmOperatorType *ot);
-void CURVE_OT_add_surface_primitive(struct wmOperatorType *ot);
-void CURVE_OT_add_curve_primitive(struct wmOperatorType *ot);
 
 void CURVE_OT_specials_menu(struct wmOperatorType *ot);
-void CURVE_OT_add_menu(struct wmOperatorType *ot);
 
-
 #endif /* ED_UTIL_INTERN_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c        
2009-02-13 16:05:42 UTC (rev 18960)
+++ branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c        
2009-02-13 17:37:01 UTC (rev 18961)
@@ -91,32 +91,6 @@
        ot->poll= ED_operator_editsurfcurve;
 }
 
-static int add_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
-{
-       Object *obedit= CTX_data_edit_object(C);
-       uiMenuItem *head;
-
-       head= uiPupMenuBegin("Add", 0);
-       if(obedit->type == OB_CURVE)
-               uiMenuItemsEnumO(head, "CURVE_OT_add_curve_primitive", "type");
-       else
-               uiMenuItemsEnumO(head, "CURVE_OT_add_surface_primitive", 
"type");
-       uiPupMenuEnd(C, head);
-
-       return OPERATOR_CANCELLED;
-}
-
-void CURVE_OT_add_menu(wmOperatorType *ot)
-{
-       /* identifiers */
-       ot->name= "Add Menu";
-       ot->idname= "CURVE_OT_add_menu";
-       
-       /* api clastbacks */
-       ot->invoke= add_menu_invoke;
-       ot->poll= ED_operator_editsurfcurve;
-}
-
 /************************* registration ****************************/
 
 void ED_operatortypes_curve(void)
@@ -161,11 +135,7 @@
        WM_operatortype_append(CURVE_OT_extrude);
        WM_operatortype_append(CURVE_OT_toggle_cyclic);
 
-       WM_operatortype_append(CURVE_OT_add_menu);
        WM_operatortype_append(CURVE_OT_specials_menu);
-
-       WM_operatortype_append(CURVE_OT_add_surface_primitive);
-       WM_operatortype_append(CURVE_OT_add_curve_primitive);
 }
 
 void ED_keymap_curve(wmWindowManager *wm)

Modified: branches/blender2.5/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/curve/editcurve.c        
2009-02-13 16:05:42 UTC (rev 18960)
+++ branches/blender2.5/blender/source/blender/editors/curve/editcurve.c        
2009-02-13 17:37:01 UTC (rev 18961)
@@ -3258,16 +3258,15 @@
 
 /***************** add vertex operator **********************/
 
-static int addvert_Nurb(bContext *C, short mode)
+static int addvert_Nurb(bContext *C, short mode, float location[3])
 {
        Scene *scene= CTX_data_scene(C);
        Object *obedit= CTX_data_edit_object(C);
        ListBase *editnurb= curve_get_editcurve(obedit);
-       View3D *v3d= CTX_wm_view3d(C);
        Nurb *nu;
        BezTriple *bezt, *newbezt = NULL;
        BPoint *bp, *newbp = NULL;
-       float *curs, mat[3][3],imat[3][3], temp[3];
+       float mat[3][3],imat[3][3], temp[3];
 
        Mat3CpyMat4(mat, obedit->obmat);
        Mat3Inv(imat,mat);
@@ -3315,16 +3314,7 @@
                                VECCOPY(newbezt->vec[2], bezt->vec[2]);
                        }
                        else {
-                               if(v3d) {
-                                       curs= give_cursor(scene, v3d);
-                                       VECCOPY(newbezt->vec[1], curs);
-                               }
-                               else {
-                                       newbezt->vec[1][0]= 0.0f;
-                                       newbezt->vec[1][1]= 0.0f;
-                                       newbezt->vec[1][2]= 0.0f;
-                               }
-
+                               VECCOPY(newbezt->vec[1], location);
                                VecSubf(newbezt->vec[1],newbezt->vec[1], 
obedit->obmat[3]);
                                Mat3MulVecfl(imat,newbezt->vec[1]);
                                VecSubf(temp, newbezt->vec[1],temp);
@@ -3370,16 +3360,7 @@
                                VECCOPY(newbp->vec, bp->vec);
                        }
                        else {
-                               if(v3d) {
-                                       curs= give_cursor(scene, v3d);
-                                       VECCOPY(newbp->vec, curs);
-                               }
-                               else {
-                                       newbp->vec[0]= 0.0f;
-                                       newbp->vec[1]= 0.0f;
-                                       newbp->vec[1]= 0.0f;
-                               }
-                       
+                               VECCOPY(newbp->vec, location);
                                VecSubf(newbp->vec, newbp->vec, 
obedit->obmat[3]);
                                Mat3MulVecfl(imat,newbp->vec);
                                newbp->vec[3]= 1.0;
@@ -3399,14 +3380,30 @@
 
 static int add_vertex_exec(bContext *C, wmOperator *op)
 {
-       return addvert_Nurb(C, 0);
+       float location[3];
+
+       RNA_float_get_array(op->ptr, "location", location);
+       return addvert_Nurb(C, 0, location);
 }
 
 static int add_vertex_invoke(bContext *C, wmOperator *op, wmEvent *event)
 {
-       // XXX doesn't work correct, old code was in mouse_cursor
-       // temporarly setting cursor, adding vertex and restoring cursor
-       return add_vertex_exec(C, 0);
+       RegionView3D *rv3d= CTX_wm_region_view3d(C);
+       ViewContext vc;
+       float location[3];
+       short mval[2];
+
+       if(rv3d && !RNA_property_is_set(op->ptr, "location")) {
+               view3d_set_viewcontext(C, &vc);
+
+               mval[0]= event->x - vc.ar->winrct.xmin;
+               mval[1]= event->y - vc.ar->winrct.ymin;
+               
+               view3d_get_view_aligned_coordinate(&vc, location, mval);
+               RNA_float_set_array(op->ptr, "location", location);
+       }
+
+       return add_vertex_exec(C, op);
 }
 
 void CURVE_OT_add_vertex(wmOperatorType *ot)
@@ -3422,6 +3419,9 @@
 
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+       /* properties */
+       RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, 
"Location", "Location to add new vertex at.", -1e4, 1e4);
 }
 
 /***************** extrude operator **********************/
@@ -3439,7 +3439,7 @@
                        break;
 
        if(obedit->type==OB_CURVE || nu) {
-               addvert_Nurb(C, 'e');
+               addvert_Nurb(C, 'e', NULL);
        }
        else {
                if(extrudeflagNurb(editnurb, 1)) { /* '1'= flag */
@@ -4722,7 +4722,7 @@
        return OPERATOR_FINISHED;
 }
 
-/************ add primitive, internal + external ****************/
+/************ add primitive, used by object/ module ****************/
 
 Nurb *addNurbprim(bContext *C, int type, int newname)
 {
@@ -5022,7 +5022,7 @@
                                rename_id((ID *)obedit->data, "SurfTube");
                        }
 
-                       nu= addNurbprim(C, CU_NURBS|CU_2D|CU_PRIM_CIRCLE, 0);  
/* circle */
+                       nu= addNurbprim(C, CU_NURBS|CU_PRIM_CIRCLE, 0);  /* 
circle */
                        nu->resolu= 4;
                        nu->flag= CU_SMOOTH;
                        BLI_addtail(editnurb, nu); /* temporal for extrude and 
translate */
@@ -5101,7 +5101,7 @@
                        }
 
                        xzproj= 1;
-                       nu= addNurbprim(C, CU_NURBS|CU_2D|CU_PRIM_CIRCLE, 0);  
/* circle */
+                       nu= addNurbprim(C, CU_NURBS|CU_PRIM_CIRCLE, 0);  /* 
circle */
                        xzproj= 0;
                        nu->resolu= 4;
                        nu->resolv= 4;
@@ -5133,87 +5133,6 @@
        return nu;
 }
 
-/***************** add curve primitive operator ********************/
-
-static int add_curve_primitive_exec(bContext *C, wmOperator *op)
-{
-       Scene *scene= CTX_data_scene(C);
-       Object *obedit= CTX_data_edit_object(C);
-
-       addNurbprim(C, RNA_enum_get(op->ptr, "type"), 0);
-
-       DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-       WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, obedit);
-       
-       return OPERATOR_FINISHED;       
-}
-
-void CURVE_OT_add_curve_primitive(wmOperatorType *ot)
-{
-       static EnumPropertyItem type_items[]= {
-               {CU_PRIM_CURVE|CU_2D|CU_BEZIER, "BEZIER_CURVE", "Bezier Curve", 
""},
-               {CU_PRIM_CIRCLE|CU_2D|CU_BEZIER, "BEZIER_CIRCLE", "Bezier 
Circle", ""},
-               {CU_PRIM_CURVE|CU_2D|CU_NURBS, "NURBS_CURVE", "NURBS Curve", 
""},
-               {CU_PRIM_CIRCLE|CU_2D|CU_NURBS, "NURBS_CIRCLE", "NURBS Circle", 
""},
-               {CU_PRIM_PATH|CU_2D|CU_NURBS, "PATH", "Path", ""},
-               {0, NULL, NULL, NULL}};
-
-       /* identifiers */
-       ot->name= "Add Curve Primitive";
-       ot->idname= "CURVE_OT_add_curve_primitive";
-       
-       /* api callbacks */
-       ot->exec= add_curve_primitive_exec;
-       ot->poll= ED_operator_editcurve;
-       
-       /* flags */
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
-       /* properties */
-       RNA_def_enum(ot->srna, "type", type_items, 
CU_PRIM_CURVE|CU_2D|CU_BEZIER, "Type", "Type of primitive to add.");
-}
-
-/***************** add surface primitive operator ********************/
-
-static int add_surface_primitive_exec(bContext *C, wmOperator *op)
-{
-       Scene *scene= CTX_data_scene(C);
-       Object *obedit= CTX_data_edit_object(C);
-
-       addNurbprim(C, RNA_enum_get(op->ptr, "type"), 0);
-
-       DAG_object_flush_update(scene, obedit, OB_RECALC_DATA);
-       WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, obedit);
-       
-       return OPERATOR_FINISHED;       
-}
-
-void CURVE_OT_add_surface_primitive(wmOperatorType *ot)
-{
-       static EnumPropertyItem type_items[]= {
-               {CU_PRIM_CURVE|CU_NURBS, "NURBS_CURVE", "NURBS Curve", ""},
-               {CU_PRIM_CIRCLE|CU_NURBS, "NURBS_CIRCLE", "NURBS Circle", ""},
-               {CU_PRIM_PATCH|CU_NURBS, "NURBS_SURFACE", "NURBS Surface", ""},
-               {CU_PRIM_TUBE|CU_NURBS, "NURBS_TUBE", "NURBS Tube", ""},
-               {CU_PRIM_SPHERE|CU_NURBS, "NURBS_SPHERE", "NURBS Sphere", ""},
-               {CU_PRIM_DONUT|CU_NURBS, "NURBS_DONUT", "NURBS Donut", ""},
-               {0, NULL, NULL, NULL}};
-
-       /* identifiers */
-       ot->name= "Add Surface Primitive";
-       ot->idname= "CURVE_OT_add_surface_primitive";
-       
-       /* api callbacks */
-       ot->exec= add_surface_primitive_exec;
-       ot->poll= ED_operator_editsurf;
-       
-       /* flags */
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
-       /* properties */
-       RNA_def_enum(ot->srna, "type", type_items, CU_PRIM_CURVE|CU_NURBS, 
"Type", "Type of primitive to add.");
-}
-
 /***************** clear tilt operator ********************/
 
 static int clear_tilt_exec(bContext *C, wmOperator *op)

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h      
2009-02-13 16:05:42 UTC (rev 18960)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h      
2009-02-13 17:37:01 UTC (rev 18961)
@@ -116,6 +116,7 @@
 
 void view3d_set_viewcontext(struct bContext *C, struct ViewContext *vc);
 void view3d_operator_needs_opengl(const struct bContext *C);
+void view3d_get_view_aligned_coordinate(struct ViewContext *vc, float *fp, 
short mval[2]);
 
 /* XXX should move to arithb.c */
 int edge_inside_circle(short centx, short centy, short rad, short x1, short 
y1, short x2, short y2);

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    2009-02-13 16:05:42 UTC (rev 18960)
+++ 
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    2009-02-13 17:37:01 UTC (rev 18961)
@@ -1729,22 +1729,28 @@
        return "";
 }
 

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to