Revision: 18524 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18524 Author: ton Date: 2009-01-15 17:07:39 +0100 (Thu, 15 Jan 2009)
Log Message: ----------- 2.5 SHIFT+A add object back, no primitives in it though... later! Modified Paths: -------------- 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/windowmanager/intern/wm_operators.c Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/object/object_edit.c 2009-01-15 15:01:39 UTC (rev 18523) +++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c 2009-01-15 16:07:39 UTC (rev 18524) @@ -266,55 +266,80 @@ } } +/* ******************* add object operator ****************** */ +static EnumPropertyItem prop_object_types[] = { + {OB_EMPTY, "EMPTY", "Empty", ""}, + {OB_MESH, "MESH", "Mesh", ""}, + {OB_CURVE, "CURVE", "Curve", ""}, + {OB_SURF, "SURFACE", "Surface", ""}, + {OB_FONT, "TEXT", "Text", ""}, + {OB_MBALL, "META", "Meta", ""}, + {OB_LAMP, "LAMP", "Lamp", ""}, + {OB_CAMERA, "CAMERA", "Camera", ""}, + {OB_ARMATURE, "ARMATURE", "Armature", ""}, + {OB_LATTICE, "LATTICE", "Lattice", ""}, + {0, NULL, NULL, NULL} +}; + + + void add_object_draw(Scene *scene, View3D *v3d, int type) /* for toolbox or menus, only non-editmode stuff */ { + /* keep here to get things compile, remove later */ +} + +static int object_add_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + ScrArea *sa= CTX_wm_area(C); Object *ob; + View3D *v3d= NULL; + int type= RNA_int_get(op->ptr, "type"); -// ED_view3d_exit_paint_modes(C); - -// XXX if (obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* freedata, and undo */ + /* hrms, this is editor level operator */ + ED_view3d_exit_paint_modes(C); + + if (CTX_data_edit_object(C)) + ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* freedata, and undo */ + + /* deselects all, sets scene->basact */ ob= add_object(scene, type); -// ED_base_object_activate(C, BASACT); + /* editor level activate, notifiers */ + ED_base_object_activate(C, BASACT); + + /* more editor stuff */ + if(sa && sa->spacetype==SPACE_VIEW3D) + v3d= sa->spacedata.first; ED_object_base_init_from_view(scene, v3d, BASACT); - /* only undo pushes on objects without editmode... */ - if(type==OB_EMPTY) BIF_undo_push("Add Empty"); - else if(type==OB_LAMP) { - BIF_undo_push("Add Lamp"); - reshadeall_displist(scene); /* only frees */ - } - else if(type==OB_LATTICE) BIF_undo_push("Add Lattice"); - else if(type==OB_CAMERA) BIF_undo_push("Add Camera"); - - allqueue(REDRAWVIEW3D, 0); - -// XXX redraw_test_buttons(OBACT); - - allqueue(REDRAWALL, 0); - -// XXX deselect_all_area_oops(); -// XXX set_select_flag_oops(); + DAG_scene_sort(scene); - DAG_scene_sort(scene); - allqueue(REDRAWINFO, 1); /* 1, because header->win==0! */ + return OPERATOR_FINISHED; } -void add_objectLamp(Scene *scene, View3D *v3d, short type) +void OBJECT_OT_object_add(wmOperatorType *ot) { - Lamp *la; - - if(scene->obedit==NULL) { // XXX get from context - add_object_draw(scene, v3d, OB_LAMP); - ED_object_base_init_from_view(scene, v3d, BASACT); - } + PropertyRNA *prop; - la = BASACT->object->data; - la->type = type; - - allqueue(REDRAWALL, 0); + /* identifiers */ + ot->name= "Add Object"; + ot->idname= "OBJECT_OT_object_add"; + + /* api callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= object_add_exec; + + ot->poll= ED_operator_scene_editable; + ot->flag= OPTYPE_REGISTER; + + prop = RNA_def_property(ot->srna, "type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, prop_object_types); } + +/* ******************************* */ + /* remove base from a specific scene */ /* note: now unlinks constraints as well */ void ED_base_object_free_and_unlink(Scene *scene, Base *base) @@ -1138,18 +1163,6 @@ /* ***************************** */ /* ****** Select by Type ****** */ -static EnumPropertyItem prop_select_object_types[] = { - {OB_EMPTY, "EMPTY", "Empty", ""}, - {OB_MESH, "MESH", "Mesh", ""}, - {OB_CURVE, "CURVE", "Curve", ""}, - {OB_SURF, "SURFACE", "Surface", ""}, - {OB_FONT, "TEXT", "Text", ""}, - {OB_MBALL, "META", "Meta", ""}, - {OB_LAMP, "LAMP", "Lamp", ""}, - {OB_CAMERA, "CAMERA", "Camera", ""}, - {OB_LATTICE, "LATTICE", "Lattice", ""}, - {0, NULL, NULL, NULL} -}; static int object_select_by_type_exec(bContext *C, wmOperator *op) { @@ -1184,7 +1197,7 @@ ot->poll= ED_operator_scene_editable; prop = RNA_def_property(ot->srna, "type", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, prop_select_object_types); + RNA_def_property_enum_items(prop, prop_object_types); } /* ****** selection by links *******/ Modified: branches/blender2.5/blender/source/blender/editors/object/object_intern.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/object/object_intern.h 2009-01-15 15:01:39 UTC (rev 18523) +++ branches/blender2.5/blender/source/blender/editors/object/object_intern.h 2009-01-15 16:07:39 UTC (rev 18524) @@ -63,8 +63,8 @@ void OBJECT_OT_clear_slowparent(struct wmOperatorType *ot); void OBJECT_OT_set_center(struct wmOperatorType *ot); void OBJECT_OT_make_dupli_real(struct wmOperatorType *ot); +void OBJECT_OT_object_add(struct wmOperatorType *ot); - /* editlattice.c */ void free_editLatt(Object *ob); void make_editLatt(Object *obedit); Modified: branches/blender2.5/blender/source/blender/editors/object/object_ops.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/object/object_ops.c 2009-01-15 15:01:39 UTC (rev 18523) +++ branches/blender2.5/blender/source/blender/editors/object/object_ops.c 2009-01-15 16:07:39 UTC (rev 18524) @@ -84,6 +84,7 @@ WM_operatortype_append(OBJECT_OT_clear_slowparent); WM_operatortype_append(OBJECT_OT_set_center); WM_operatortype_append(OBJECT_OT_make_dupli_real); + WM_operatortype_append(OBJECT_OT_object_add); } void ED_keymap_object(wmWindowManager *wm) @@ -116,6 +117,9 @@ WM_keymap_verify_item(keymap, "OBJECT_OT_clear_restrictview", HKEY, KM_PRESS, KM_ALT, 0); WM_keymap_verify_item(keymap, "OBJECT_OT_set_restrictview", HKEY, KM_PRESS, 0, 0); -// RNA_int_set(WM_keymap_add_item(keymap, "OBJECT_OT_viewzoom", PADPLUSKEY, KM_PRESS, 0, 0)->ptr, "delta", 1); + + WM_keymap_verify_item(keymap, "OBJECT_OT_object_add", AKEY, KM_PRESS, KM_SHIFT, 0); + + } Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c =================================================================== --- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c 2009-01-15 15:01:39 UTC (rev 18523) +++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c 2009-01-15 16:07:39 UTC (rev 18524) @@ -195,14 +195,14 @@ { PropertyRNA *prop= RNA_struct_find_property(op->ptr, "type"); const EnumPropertyItem *item; - int totitem, i, len= strlen(op->type->name) + 5; + int totitem, i, len= strlen(op->type->name) + 8; char *menu, *p; if(prop) { RNA_property_enum_items(op->ptr, prop, &item, &totitem); for (i=0; i<totitem; i++) - len+= strlen(item[i].name) + 5; + len+= strlen(item[i].name) + 8; menu= MEM_callocN(len, "string"); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs