Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-05-04 19:04:28 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-05-04 19:04:28 +0400
commit22a34cc83bc75a40d6b6f278119c14f5bee42dbd (patch)
tree69815fd09ad4f02b29efb80e505943346087bb28 /source
parenta7cbd5008e830224e73e2e55f89d0783ded422e5 (diff)
render hide/unhide (Ctrl+H, Ctrl+Alt+H, Ctrl+Alt+Shift+H)
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/object/object_edit.c72
-rw-r--r--source/blender/editors/object/object_intern.h2
-rw-r--r--source/blender/editors/object/object_ops.c9
3 files changed, 82 insertions, 1 deletions
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 53d614626ad..8937b4ca99f 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -229,6 +229,78 @@ void OBJECT_OT_restrictview_set(wmOperatorType *ot)
}
+/* 99% same as above except no need for scene refreshing (TODO, update render preview) */
+static int object_restrictrender_clear_exec(bContext *C, wmOperator *op)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ View3D *v3d= sa->spacedata.first;
+ Scene *scene= CTX_data_scene(C);
+ Base *base;
+
+
+ /* XXX need a context loop to handle such cases */
+ for(base = FIRSTBASE; base; base=base->next){
+ if((base->lay & v3d->lay) && base->object->restrictflag & OB_RESTRICT_RENDER) {
+ base->object->restrictflag &= ~OB_RESTRICT_RENDER;
+ }
+ }
+ WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL);
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_restrictrender_clear(wmOperatorType *ot)
+{
+
+ /* identifiers */
+ ot->name= "Clear Restrict View";
+ ot->description = "Reveal the render object by setting the restrictrender flag";
+ ot->idname= "OBJECT_OT_restrictrender_clear";
+
+ /* api callbacks */
+ ot->exec= object_restrictrender_clear_exec;
+ ot->poll= ED_operator_view3d_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+static int object_restrictrender_set_exec(bContext *C, wmOperator *op)
+{
+ int unselected= RNA_boolean_get(op->ptr, "unselected");
+
+ CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+ if(!unselected) {
+ if (base->flag & SELECT){
+ base->object->restrictflag |= OB_RESTRICT_RENDER;
+ }
+ }
+ else {
+ if (!(base->flag & SELECT)){
+ base->object->restrictflag |= OB_RESTRICT_RENDER;
+ }
+ }
+ }
+ CTX_DATA_END;
+ WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL);
+ return OPERATOR_FINISHED;
+}
+
+void OBJECT_OT_restrictrender_set(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Set Restrict Render";
+ ot->description = "Hide the render object by setting the restrictrender flag";
+ ot->idname= "OBJECT_OT_restrictrender_set";
+
+ /* api callbacks */
+ ot->exec= object_restrictrender_set_exec;
+ ot->poll= ED_operator_view3d_active;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects.");
+}
/* ******************* toggle editmode operator ***************** */
diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h
index 90c5f48ffeb..0f79168e5b3 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -77,6 +77,8 @@ void OBJECT_OT_editmode_toggle(struct wmOperatorType *ot);
void OBJECT_OT_posemode_toggle(struct wmOperatorType *ot);
void OBJECT_OT_restrictview_set(struct wmOperatorType *ot);
void OBJECT_OT_restrictview_clear(struct wmOperatorType *ot);
+void OBJECT_OT_restrictrender_set(struct wmOperatorType *ot);
+void OBJECT_OT_restrictrender_clear(struct wmOperatorType *ot);
void OBJECT_OT_proxy_make(struct wmOperatorType *ot);
void OBJECT_OT_shade_smooth(struct wmOperatorType *ot);
void OBJECT_OT_shade_flat(struct wmOperatorType *ot);
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index 5ddf33ca170..9efb8d71b77 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -74,6 +74,8 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_proxy_make);
WM_operatortype_append(OBJECT_OT_restrictview_clear);
WM_operatortype_append(OBJECT_OT_restrictview_set);
+ WM_operatortype_append(OBJECT_OT_restrictrender_clear);
+ WM_operatortype_append(OBJECT_OT_restrictrender_set);
WM_operatortype_append(OBJECT_OT_shade_smooth);
WM_operatortype_append(OBJECT_OT_shade_flat);
WM_operatortype_append(OBJECT_OT_paths_calculate);
@@ -314,7 +316,12 @@ void ED_keymap_object(wmKeyConfig *keyconf)
WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_clear", HKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, 0, 0);
- RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, KM_SHIFT, KM_CTRL)->ptr, "unselected", 1);
+
+ /* same as above but for rendering */
+ WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_clear", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_set", HKEY, KM_PRESS, KM_CTRL, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_set", HKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "unselected", 1);
WM_keymap_add_item(keymap, "OBJECT_OT_move_to_layer", MKEY, KM_PRESS, 0, 0);