diff options
author | Martin Poirier <theeth@yahoo.com> | 2009-01-06 22:58:42 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2009-01-06 22:58:42 +0300 |
commit | 7ca7f8fcd9bfd66984e8cbdff072e828d950a314 (patch) | |
tree | a9478397120dac5bcc3a2ac14375f34417b0f48f /source/blender/editors | |
parent | 35f0149bb9bc8b7b9ccc6cab9d851fb5001fb37a (diff) |
2.5
3D view drawtype change operator
No more pressing Z a couple of times for nothing.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 58 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_ops.c | 15 |
3 files changed, 74 insertions, 0 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index c5ca9f86450..6f638131679 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1284,6 +1284,64 @@ void VIEW3D_OT_clipping(wmOperatorType *ot) RNA_def_property(ot->srna, "ymax", PROP_INT, PROP_NONE); } +/* ********************* draw type operator ****************** */ + +static int view3d_drawtype_exec(bContext *C, wmOperator *op) +{ + ScrArea *sa= CTX_wm_area(C); + View3D *v3d= sa->spacedata.first; + int dt, dt_alt; + + dt = RNA_int_get(op->ptr, "drawtype"); + dt_alt = RNA_int_get(op->ptr, "drawtype_alt"); + + if (dt_alt != -1) + { + if (v3d->drawtype == dt) + { + v3d->drawtype = dt_alt; + } + else + { + v3d->drawtype = dt; + } + } + else + { + v3d->drawtype = dt; + } + + ED_area_tag_redraw(sa); + + return OPERATOR_FINISHED; +} + +static int view3d_drawtype_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + return view3d_drawtype_exec(C, op); +} + +/* toggles */ +void VIEW3D_OT_drawtype(wmOperatorType *ot) +{ + PropertyRNA *prop; + + /* identifiers */ + ot->name= "Change draw type"; + ot->idname= "VIEW3D_OT_drawtype"; + + /* api callbacks */ + ot->invoke= view3d_drawtype_invoke; + ot->exec= view3d_drawtype_exec; + + ot->poll= ED_operator_view3d_active; + + /* rna */ + RNA_def_property(ot->srna, "drawtype", PROP_INT, PROP_NONE); + prop = RNA_def_property(ot->srna, "drawtype_alt", PROP_INT, PROP_NONE); + RNA_def_property_int_default(prop, -1); +} + /* ********************************************************* */ void set_render_border(Scene *scene, ARegion *ar, View3D *v3d) diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index 963667e4ebf..fc8fa49821e 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -79,6 +79,7 @@ void VIEW3D_OT_viewcenter(struct wmOperatorType *ot); void VIEW3D_OT_clipping(struct wmOperatorType *ot); void VIEW3D_OT_cursor3d(struct wmOperatorType *ot); void VIEW3D_OT_render_border(struct wmOperatorType *ot); +void VIEW3D_OT_drawtype(struct wmOperatorType *ot); /* drawobject.c */ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 6542d6c640f..73329ac5aa3 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -78,6 +78,7 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_cursor3d); WM_operatortype_append(VIEW3D_OT_lasso_select); WM_operatortype_append(VIEW3D_OT_setcameratoview); + WM_operatortype_append(VIEW3D_OT_drawtype); transform_operatortypes(); } @@ -85,6 +86,7 @@ void view3d_operatortypes(void) void view3d_keymap(wmWindowManager *wm) { ListBase *keymap= WM_keymap_listbase(wm, "View3D", SPACE_VIEW3D, 0); + wmKeymapItem *km; WM_keymap_verify_item(keymap, "VIEW3D_OT_cursor3d", ACTIONMOUSE, KM_PRESS, 0, 0); @@ -121,6 +123,19 @@ void view3d_keymap(wmWindowManager *wm) RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD6, KM_PRESS, KM_CTRL, 0)->ptr, "viewnum", V3D_VIEW_PANRIGHT); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD8, KM_PRESS, KM_CTRL, 0)->ptr, "viewnum", V3D_VIEW_PANUP); + /* drawtype */ + km = WM_keymap_add_item(keymap, "VIEW3D_OT_drawtype", ZKEY, KM_PRESS, 0, 0); + RNA_int_set(km->ptr, "drawtype", OB_SOLID); + RNA_int_set(km->ptr, "drawtype_alt", OB_WIRE); + + km = WM_keymap_add_item(keymap, "VIEW3D_OT_drawtype", ZKEY, KM_PRESS, KM_ALT, 0); + RNA_int_set(km->ptr, "drawtype", OB_TEXTURE); + RNA_int_set(km->ptr, "drawtype_alt", OB_SOLID); + + km = WM_keymap_add_item(keymap, "VIEW3D_OT_drawtype", ZKEY, KM_PRESS, KM_SHIFT, 0); + RNA_int_set(km->ptr, "drawtype", OB_SHADED); + RNA_int_set(km->ptr, "drawtype_alt", OB_WIRE); + /* selection*/ WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "type", 1); |