Revision: 18946 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18946 Author: blendix Date: 2009-02-12 23:12:21 +0100 (Thu, 12 Feb 2009)
Log Message: ----------- 2.5: Most curve/surface editmode operators back: * Hide, Reveal * Separate, Duplicate, Delete * Set Weight, Set Radius, Set Spline Type, Set Handle Type, Set Smooth * Tilt, Clear Tilt * Smooth, Smooth Radius * De(select) First, De(select) Last, De(select) All, Select Inverse, Select Linked, Select Control Point Row, Select Next, Select Previous, Select More, Select Less, Select Random, Select Every Nth * Switch Direction, Subdivide, Make Segment, Spin, Extrude, Toggle Cyclic * Specials Menu Not working correct yet: * Add Vertex (ctrl click) * Add Menu Modified Paths: -------------- branches/blender2.5/blender/source/blender/blenkernel/intern/curve.c 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_curve.h branches/blender2.5/blender/source/blender/editors/include/ED_screen.h branches/blender2.5/blender/source/blender/editors/interface/interface.c branches/blender2.5/blender/source/blender/editors/object/object_edit.c branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c branches/blender2.5/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/curve.c =================================================================== --- branches/blender2.5/blender/source/blender/blenkernel/intern/curve.c 2009-02-12 18:05:34 UTC (rev 18945) +++ branches/blender2.5/blender/source/blender/blenkernel/intern/curve.c 2009-02-12 22:12:21 UTC (rev 18946) @@ -191,6 +191,8 @@ cun->bev.first= cun->bev.last= 0; cun->path= 0; + cun->editnurb= NULL; + #if 0 // XXX old animation system /* single user ipo too */ if(cun->ipo) cun->ipo= copy_ipo(cun->ipo); 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-12 18:05:34 UTC (rev 18945) +++ branches/blender2.5/blender/source/blender/editors/curve/curve_intern.h 2009-02-12 22:12:21 UTC (rev 18946) @@ -44,20 +44,21 @@ void CURVE_OT_set_weight(struct wmOperatorType *ot); void CURVE_OT_set_radius(struct wmOperatorType *ot); void CURVE_OT_smooth(struct wmOperatorType *ot); -void CURVE_OT_smooth_curve_radius(struct wmOperatorType *ot); +void CURVE_OT_smooth_radius(struct wmOperatorType *ot); void CURVE_OT_de_select_first(struct wmOperatorType *ot); void CURVE_OT_de_select_last(struct wmOperatorType *ot); void CURVE_OT_de_select_all(struct wmOperatorType *ot); void CURVE_OT_hide(struct wmOperatorType *ot); void CURVE_OT_reveal(struct wmOperatorType *ot); -void CURVE_OT_select_invert(struct wmOperatorType *ot); +void CURVE_OT_select_inverse(struct wmOperatorType *ot); void CURVE_OT_subdivide(struct wmOperatorType *ot); void CURVE_OT_set_spline_type(struct wmOperatorType *ot); +void CURVE_OT_set_handle_type(struct wmOperatorType *ot); void CURVE_OT_make_segment(struct wmOperatorType *ot); void CURVE_OT_spin(struct wmOperatorType *ot); void CURVE_OT_add_vertex(struct wmOperatorType *ot); void CURVE_OT_extrude(struct wmOperatorType *ot); -void CURVE_OT_make_cyclic(struct wmOperatorType *ot); +void CURVE_OT_toggle_cyclic(struct wmOperatorType *ot); void CURVE_OT_select_linked(struct wmOperatorType *ot); void CURVE_OT_select_row(struct wmOperatorType *ot); void CURVE_OT_select_next(struct wmOperatorType *ot); @@ -66,10 +67,16 @@ void CURVE_OT_select_less(struct wmOperatorType *ot); void CURVE_OT_select_random(struct wmOperatorType *ot); void CURVE_OT_select_every_nth(struct wmOperatorType *ot); -void CURVE_OT_add_duplicate(struct wmOperatorType *ot); +void CURVE_OT_duplicate(struct wmOperatorType *ot); 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-12 18:05:34 UTC (rev 18945) +++ branches/blender2.5/blender/source/blender/editors/curve/curve_ops.c 2009-02-12 22:12:21 UTC (rev 18946) @@ -55,35 +55,95 @@ #include "ED_screen.h" #include "ED_object.h" +#include "BIF_transform.h" + +#include "UI_interface.h" + #include "curve_intern.h" -/* ************************** registration **********************************/ +/**************************** menus *****************************/ +static int specials_menu_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + uiMenuItem *head; + head= uiPupMenuBegin("Specials", 0); + uiMenuItemO(head, 0, "CURVE_OT_subdivide"); + uiMenuItemO(head, 0, "CURVE_OT_switch_direction"); + uiMenuItemO(head, 0, "CURVE_OT_set_weight"); + uiMenuItemO(head, 0, "CURVE_OT_set_radius"); + uiMenuItemO(head, 0, "CURVE_OT_smooth"); + uiMenuItemO(head, 0, "CURVE_OT_smooth_radius"); + uiPupMenuEnd(C, head); + + return OPERATOR_CANCELLED; +} + +void CURVE_OT_specials_menu(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Specials Menu"; + ot->idname= "CURVE_OT_specials_menu"; + + /* api clastbacks */ + ot->invoke= specials_menu_invoke; + 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) { WM_operatortype_append(FONT_OT_textedit); + WM_operatortype_append(CURVE_OT_hide); + WM_operatortype_append(CURVE_OT_reveal); + WM_operatortype_append(CURVE_OT_separate); - WM_operatortype_append(CURVE_OT_switch_direction); + WM_operatortype_append(CURVE_OT_duplicate); + WM_operatortype_append(CURVE_OT_delete); + WM_operatortype_append(CURVE_OT_set_weight); WM_operatortype_append(CURVE_OT_set_radius); + WM_operatortype_append(CURVE_OT_set_spline_type); + WM_operatortype_append(CURVE_OT_set_handle_type); + WM_operatortype_append(CURVE_OT_set_smooth); + WM_operatortype_append(CURVE_OT_clear_tilt); + WM_operatortype_append(CURVE_OT_smooth); - WM_operatortype_append(CURVE_OT_smooth_curve_radius); + WM_operatortype_append(CURVE_OT_smooth_radius); + WM_operatortype_append(CURVE_OT_de_select_first); WM_operatortype_append(CURVE_OT_de_select_last); WM_operatortype_append(CURVE_OT_de_select_all); - WM_operatortype_append(CURVE_OT_hide); - WM_operatortype_append(CURVE_OT_reveal); - WM_operatortype_append(CURVE_OT_select_invert); - WM_operatortype_append(CURVE_OT_subdivide); - WM_operatortype_append(CURVE_OT_set_spline_type); - WM_operatortype_append(CURVE_OT_make_segment); - WM_operatortype_append(CURVE_OT_spin); - WM_operatortype_append(CURVE_OT_add_vertex); - WM_operatortype_append(CURVE_OT_extrude); - WM_operatortype_append(CURVE_OT_make_cyclic); + WM_operatortype_append(CURVE_OT_select_inverse); WM_operatortype_append(CURVE_OT_select_linked); WM_operatortype_append(CURVE_OT_select_row); WM_operatortype_append(CURVE_OT_select_next); @@ -92,10 +152,20 @@ WM_operatortype_append(CURVE_OT_select_less); WM_operatortype_append(CURVE_OT_select_random); WM_operatortype_append(CURVE_OT_select_every_nth); - WM_operatortype_append(CURVE_OT_add_duplicate); - WM_operatortype_append(CURVE_OT_delete); - WM_operatortype_append(CURVE_OT_set_smooth); - WM_operatortype_append(CURVE_OT_clear_tilt); + + WM_operatortype_append(CURVE_OT_switch_direction); + WM_operatortype_append(CURVE_OT_subdivide); + WM_operatortype_append(CURVE_OT_make_segment); + WM_operatortype_append(CURVE_OT_spin); + WM_operatortype_append(CURVE_OT_add_vertex); + 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) @@ -109,5 +179,33 @@ keymap= WM_keymap_listbase(wm, "Curve", 0, 0); WM_keymap_add_item(keymap, "OBJECT_OT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "CURVE_OT_add_vertex", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0); + + WM_keymap_add_item(keymap, "CURVE_OT_de_select_all", AKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_select_row", RKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "CURVE_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "CURVE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "CURVE_OT_select_linked", LKEY, KM_PRESS, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "CURVE_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "deselect", 1); + + WM_keymap_add_item(keymap, "CURVE_OT_separate", PKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_extrude", EKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "CURVE_OT_make_segment", FKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_toggle_cyclic", CKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_delete", XKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_delete", DELKEY, KM_PRESS, 0, 0); + + WM_keymap_add_item(keymap, "CURVE_OT_clear_tilt", TKEY, KM_PRESS, KM_ALT, 0); + RNA_enum_set(WM_keymap_add_item(keymap, "TFM_OT_transform", TKEY, KM_PRESS, 0, 0)->ptr, "mode", TFM_TILT); + RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_set_handle_type", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1); + RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_set_handle_type", HKEY, KM_PRESS, 0, 0)->ptr, "type", 3); + RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_set_handle_type", VKEY, KM_PRESS, 0, 0)->ptr, "type", 2); + + WM_keymap_add_item(keymap, "CURVE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "CURVE_OT_hide", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); + RNA_enum_set(WM_keymap_add_item(keymap, "CURVE_OT_hide", HKEY, KM_PRESS, KM_ALT|KM_SHIFT, 0)->ptr, "deselected", 1); + + WM_keymap_add_item(keymap, "CURVE_OT_specials_menu", WKEY, KM_PRESS, 0, 0); } Modified: branches/blender2.5/blender/source/blender/editors/curve/editcurve.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/curve/editcurve.c 2009-02-12 18:05:34 UTC (rev 18945) +++ branches/blender2.5/blender/source/blender/editors/curve/editcurve.c 2009-02-12 22:12:21 UTC (rev 18946) @@ -71,6 +71,7 @@ #include "WM_types.h" #include "ED_anim_api.h" +#include "ED_curve.h" #include "ED_keyframes_edit.h" #include "ED_object.h" #include "ED_screen.h" @@ -80,6 +81,8 @@ @@ 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