[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18760] branches/blender2.5/blender/source /blender/editors/mesh: delete menu is back DKEY.
Shaul Kedem
shaul_kedem at yahoo.com
Sat Jan 31 03:31:59 CET 2009
Revision: 18760
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18760
Author: shul
Date: 2009-01-31 03:31:58 +0100 (Sat, 31 Jan 2009)
Log Message:
-----------
delete menu is back DKEY. seperating may be needed to delete_mesh
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h
branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c
Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c 2009-01-30 21:01:18 UTC (rev 18759)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c 2009-01-31 02:31:58 UTC (rev 18760)
@@ -965,16 +965,15 @@
}
}
-void delete_mesh(Object *obedit, EditMesh *em)
+void delete_mesh(Object *obedit, EditMesh *em, int event)
{
EditFace *efa, *nextvl;
EditVert *eve,*nextve;
EditEdge *eed,*nexted;
- short event;
int count;
char *str="Erase";
- event= pupmenu("Erase %t|Vertices%x10|Edges%x1|Faces%x2|All%x3|Edges & Faces%x4|Only Faces%x5|Edge Loop%x6");
+
if(event<1) return;
if(event==10 ) {
@@ -1106,7 +1105,61 @@
BIF_undo_push(str);
}
+static int delete_mesh_exec(bContext *C, wmOperator *op)
+{
+ Object *obedit= CTX_data_edit_object(C);
+ EditMesh *em= ((Mesh *)obedit->data)->edit_mesh;
+
+ delete_mesh(obedit,em,RNA_int_get(op->ptr, "event"));
+
+ ED_undo_push(C, "Delete Mesh"); // Note this will become depricated
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, obedit);
+
+ return OPERATOR_FINISHED;
+}
+static int delete_mesh_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ int items;
+ char *menu, *p;
+
+ items = 6;
+
+ menu= MEM_callocN(items * OP_MAX_TYPENAME, "string");
+
+ p= menu + sprintf(menu, "%s %%t", "Erase");
+ p+= sprintf(p, "|%s %%x%d", "Vertices", 10);
+ p+= sprintf(p, "|%s %%x%d", "Edges", 1);
+ p+= sprintf(p, "|%s %%x%d", "Faces", 2);
+ p+= sprintf(p, "|%s %%x%d", "All", 3);
+ p+= sprintf(p, "|%s %%x%d", "Edges & Faces", 4);
+ p+= sprintf(p, "|%s %%x%d", "Only Faces", 5);
+ p+= sprintf(p, "|%s %%x%d", "Edge Loop", 6);
+
+
+ uiPupMenuOperator(C, 20, op, "event", menu);
+ MEM_freeN(menu);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+
+void MESH_OT_delete_mesh(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "delete mesh";
+ ot->idname= "MESH_OT_delete_mesh";
+
+ /* api callbacks */
+ ot->invoke= delete_mesh_invoke;
+ ot->exec= delete_mesh_exec;
+
+ ot->poll= ED_operator_editmesh;
+
+ /*props */
+ RNA_def_int(ot->srna, "event", 0, 0, INT_MAX, "event", "", 0, 1000);
+}
+
/* Got this from scanfill.c. You will need to juggle around the
* callbacks for the scanfill.c code a bit for this to work. */
void fill_mesh(EditMesh *em)
Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h 2009-01-30 21:01:18 UTC (rev 18759)
+++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_intern.h 2009-01-31 02:31:58 UTC (rev 18760)
@@ -232,5 +232,7 @@
void MESH_OT_mesh_set_smooth_faces(struct wmOperatorType *ot);
void MESH_OT_mesh_set_solid_faces(struct wmOperatorType *ot);
+void MESH_OT_delete_mesh(struct wmOperatorType *ot);
+
#endif // MESH_INTERN_H
Modified: branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c 2009-01-30 21:01:18 UTC (rev 18759)
+++ branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c 2009-01-31 02:31:58 UTC (rev 18760)
@@ -137,6 +137,9 @@
WM_operatortype_append(MESH_OT_removedoublesflag);
WM_operatortype_append(MESH_OT_extrude_mesh);
WM_operatortype_append(MESH_OT_edit_faces);
+
+ WM_operatortype_append(MESH_OT_delete_mesh);
+
WM_operatortype_append(MESH_OT_separate);
WM_operatortype_append(MESH_OT_dupli_extrude_cursor);
WM_operatortype_append(MESH_OT_loop_select);
@@ -186,6 +189,14 @@
WM_keymap_add_item(keymap, "MESH_OT_extrude_mesh", EKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_edit_faces", PKEY, KM_PRESS, KM_CTRL, 0);
+
+ WM_keymap_add_item(keymap, "MESH_OT_delete_mesh", DKEY, KM_PRESS, 0, 0);
+
+
+
+
+
+
/* add */
WM_keymap_add_item(keymap, "MESH_OT_add_edge_face", FKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "MESH_OT_add_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
More information about the Bf-blender-cvs
mailing list