[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18524] branches/blender2.5/blender/source /blender: 2.5
Ton Roosendaal
ton at blender.org
Thu Jan 15 17:07:44 CET 2009
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");
More information about the Bf-blender-cvs
mailing list