diff options
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 43 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_intern.h | 2 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_ops.c | 8 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_utils.c | 44 |
4 files changed, 43 insertions, 54 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 1965d11c22f..ac3b47ac0af 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -44,7 +44,13 @@ class VIEW3D_HT_header(Header): sub.menu("VIEW3D_MT_view") # Select Menu - if mode_string not in {'EDIT_TEXT', 'SCULPT', 'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'}: + if mode_string in {'PAINT_WEIGHT', 'PAINT_VERTEX', 'PAINT_TEXTURE'}: + mesh = obj.data + if mesh.use_paint_mask: + sub.menu("VIEW3D_MT_select_paint_mask") + elif mesh.use_paint_mask_vertex and mode_string == 'PAINT_WEIGHT': + sub.menu("VIEW3D_MT_select_paint_mask_vertex") + elif mode_string not in {'EDIT_TEXT', 'SCULPT'}: sub.menu("VIEW3D_MT_select_%s" % mode_string.lower()) if edit_object: @@ -673,6 +679,7 @@ class VIEW3D_MT_select_edit_metaball(Menu): layout = self.layout layout.operator("view3d.select_border") + layout.operator("view3d.select_circle") layout.separator() @@ -730,15 +737,39 @@ class VIEW3D_MT_select_edit_armature(Menu): layout.operator("object.select_pattern", text="Select Pattern...") -class VIEW3D_MT_select_face(Menu): # XXX no matching enum +class VIEW3D_MT_select_paint_mask(Menu): bl_label = "Select" def draw(self, context): - # layout = self.layout + layout = self.layout + + layout.operator("view3d.select_border") + layout.operator("view3d.select_circle") + + layout.separator() + + layout.operator("paint.face_select_all").action = 'TOGGLE' + layout.operator("paint.face_select_all", text="Inverse").action = 'INVERT' + + layout.separator() + + layout.operator("paint.face_select_linked", text="Linked") + + +class VIEW3D_MT_select_paint_mask_vertex(Menu): + bl_label = "Select" + + def draw(self, context): + layout = self.layout + + layout.operator("view3d.select_border") + layout.operator("view3d.select_circle") + + layout.separator() + + layout.operator("paint.vert_select_all").action = 'TOGGLE' + layout.operator("paint.vert_select_all", text="Inverse").action = 'INVERT' - # TODO - # see view3d_select_faceselmenu - pass # ********** Object menu ********** diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index faa9ce00da8..e7c3ddd071b 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -151,12 +151,10 @@ void BRUSH_OT_curve_preset(struct wmOperatorType *ot); void PAINT_OT_face_select_linked(struct wmOperatorType *ot); void PAINT_OT_face_select_linked_pick(struct wmOperatorType *ot); void PAINT_OT_face_select_all(struct wmOperatorType *ot); -void PAINT_OT_face_select_inverse(struct wmOperatorType *ot); void PAINT_OT_face_select_hide(struct wmOperatorType *ot); void PAINT_OT_face_select_reveal(struct wmOperatorType *ot); void PAINT_OT_vert_select_all(struct wmOperatorType *ot); -void PAINT_OT_vert_select_inverse(struct wmOperatorType *ot); int vert_paint_poll(struct bContext *C); int mask_paint_poll(struct bContext *C); diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index ba33ad22f92..7385c2f0cf1 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -485,7 +485,6 @@ void ED_operatortypes_paint(void) /* vertex selection */ WM_operatortype_append(PAINT_OT_vert_select_all); - WM_operatortype_append(PAINT_OT_vert_select_inverse); /* vertex */ WM_operatortype_append(PAINT_OT_vertex_paint_toggle); @@ -496,7 +495,6 @@ void ED_operatortypes_paint(void) WM_operatortype_append(PAINT_OT_face_select_linked); WM_operatortype_append(PAINT_OT_face_select_linked_pick); WM_operatortype_append(PAINT_OT_face_select_all); - WM_operatortype_append(PAINT_OT_face_select_inverse); WM_operatortype_append(PAINT_OT_face_select_hide); WM_operatortype_append(PAINT_OT_face_select_reveal); @@ -748,7 +746,8 @@ void ED_keymap_paint(wmKeyConfig *keyconf) keymap = WM_keymap_find(keyconf, "Weight Paint Vertex Selection", 0, 0); keymap->poll = vert_paint_poll; WM_keymap_add_item(keymap, "PAINT_OT_vert_select_all", AKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PAINT_OT_vert_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); + kmi = WM_keymap_add_item(keymap, "PAINT_OT_vert_select_all", IKEY, KM_PRESS, KM_CTRL, 0); + RNA_enum_set(kmi->ptr, "action", SEL_INVERT); WM_keymap_add_item(keymap, "VIEW3D_OT_select_border", BKEY, KM_PRESS, 0, 0); kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); RNA_boolean_set(kmi->ptr, "deselect", FALSE); @@ -777,7 +776,8 @@ void ED_keymap_paint(wmKeyConfig *keyconf) keymap->poll = facemask_paint_poll; WM_keymap_add_item(keymap, "PAINT_OT_face_select_all", AKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "PAINT_OT_face_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); + kmi = WM_keymap_add_item(keymap, "PAINT_OT_face_select_all", IKEY, KM_PRESS, KM_CTRL, 0); + RNA_enum_set(kmi->ptr, "action", SEL_INVERT); kmi = WM_keymap_add_item(keymap, "PAINT_OT_face_select_hide", HKEY, KM_PRESS, 0, 0); RNA_boolean_set(kmi->ptr, "unselected", FALSE); kmi = WM_keymap_add_item(keymap, "PAINT_OT_face_select_hide", HKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c index 4f156276aac..dc3f310b405 100644 --- a/source/blender/editors/sculpt_paint/paint_utils.c +++ b/source/blender/editors/sculpt_paint/paint_utils.c @@ -448,7 +448,7 @@ static int face_select_all_exec(bContext *C, wmOperator *op) void PAINT_OT_face_select_all(wmOperatorType *ot) { - ot->name = "Face Selection"; + ot->name = "(De)select All"; ot->description = "Change selection for all faces"; ot->idname = "PAINT_OT_face_select_all"; @@ -472,7 +472,7 @@ static int vert_select_all_exec(bContext *C, wmOperator *op) void PAINT_OT_vert_select_all(wmOperatorType *ot) { - ot->name = "Vertex Selection"; + ot->name = "(De)select All"; ot->description = "Change selection for all vertices"; ot->idname = "PAINT_OT_vert_select_all"; @@ -484,46 +484,6 @@ void PAINT_OT_vert_select_all(wmOperatorType *ot) WM_operator_properties_select_all(ot); } -static int vert_select_inverse_exec(bContext *C, wmOperator *UNUSED(op)) -{ - Object *ob = CTX_data_active_object(C); - paintvert_deselect_all_visible(ob, SEL_INVERT, TRUE); - ED_region_tag_redraw(CTX_wm_region(C)); - return OPERATOR_FINISHED; -} - -void PAINT_OT_vert_select_inverse(wmOperatorType *ot) -{ - ot->name = "Vertex Select Invert"; - ot->description = "Invert selection of vertices"; - ot->idname = "PAINT_OT_vert_select_inverse"; - - ot->exec = vert_select_inverse_exec; - ot->poll = vert_paint_poll; - - ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; -} -static int face_select_inverse_exec(bContext *C, wmOperator *UNUSED(op)) -{ - Object *ob = CTX_data_active_object(C); - paintface_deselect_all_visible(ob, SEL_INVERT, TRUE); - ED_region_tag_redraw(CTX_wm_region(C)); - return OPERATOR_FINISHED; -} - - -void PAINT_OT_face_select_inverse(wmOperatorType *ot) -{ - ot->name = "Face Select Invert"; - ot->description = "Invert selection of faces"; - ot->idname = "PAINT_OT_face_select_inverse"; - - ot->exec = face_select_inverse_exec; - ot->poll = facemask_paint_poll; - - ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; -} - static int face_select_hide_exec(bContext *C, wmOperator *op) { const int unselected = RNA_boolean_get(op->ptr, "unselected"); |