[Bf-blender-cvs] [e2edea18c94] temp-keymap-changes: Try using pie menu for mode switching

Campbell Barton noreply at git.blender.org
Thu Jun 7 18:24:04 CEST 2018


Commit: e2edea18c94976bbd72db5436547d1b1062437a8
Author: Campbell Barton
Date:   Thu Jun 7 18:23:46 2018 +0200
Branches: temp-keymap-changes
https://developer.blender.org/rBe2edea18c94976bbd72db5436547d1b1062437a8

Try using pie menu for mode switching

===================================================================

M	release/scripts/startup/bl_operators/wm.py
M	source/blender/editors/mesh/mesh_ops.c
M	source/blender/editors/object/object_ops.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/space_image/space_image.c
M	source/blender/editors/space_view3d/view3d_ops.c
M	source/blender/windowmanager/intern/wm_operators.c

===================================================================

diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index e62a1f071a9..6eba0b18382 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -19,7 +19,10 @@
 # <pep8 compliant>
 
 import bpy
-from bpy.types import Operator
+from bpy.types import (
+    Operator,
+    Menu,
+)
 from bpy.props import (
     BoolProperty,
     EnumProperty,
@@ -2400,6 +2403,43 @@ class WM_OT_toolbar(Operator):
         return {'FINISHED'}
 
 
+class VIEW3D_PIE_object_mode_of(Menu):
+    bl_label = "Mode"
+
+    def draw(self, context):
+        layout = self.layout
+
+        pie = layout.menu_pie()
+        pie.operator_enum("OBJECT_OT_mode_set", "mode")
+
+
+class VIEW3D_PIE_view_of(Menu):
+    bl_label = "View"
+    bl_idname = "VIEW3D_PIE_view_of"
+
+    def draw(self, context):
+        layout = self.layout
+
+        pie = layout.menu_pie()
+        pie.operator_enum("VIEW3D_OT_viewnumpad", "type")
+        pie.operator("view3d.view_selected", text="View Selected", icon='ZOOM_SELECTED')
+
+
+class VIEW3D_PIE_view_more_of(Menu):
+    bl_label = "More"
+
+    def draw(self, context):
+        layout = self.layout
+
+        pie = layout.menu_pie()
+        pie.operator("VIEW3D_OT_view_persportho", text="Persp/Ortho", icon='RESTRICT_VIEW_OFF')
+        pie.operator("VIEW3D_OT_camera_to_view")
+        pie.operator("VIEW3D_OT_view_selected")
+        pie.operator("VIEW3D_OT_view_all")
+        pie.operator("VIEW3D_OT_localview")
+        pie.operator("SCREEN_OT_region_quadview")
+
+
 classes = (
     BRUSH_OT_active_index_set,
     WM_OT_addon_disable,
@@ -2456,4 +2496,8 @@ classes = (
     WM_OT_url_open,
     WM_OT_tool_set_by_name,
     WM_OT_toolbar,
+
+    VIEW3D_PIE_object_mode_of,
+    VIEW3D_PIE_view_of,
+    VIEW3D_PIE_view_more_of,
 )
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index b3c507affb7..c0f133e9cfd 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -335,6 +335,24 @@ void ED_keymap_mesh(wmKeyConfig *keyconf)
 	RNA_boolean_set(kmi->ptr, "vertex_only", true);
 
 	/* selecting */
+
+	kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", ONEKEY, KM_PRESS, 0, 0);
+	RNA_enum_set(kmi->ptr, "type", SCE_SELECT_VERTEX);
+	kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", TWOKEY, KM_PRESS, 0, 0);
+	RNA_enum_set(kmi->ptr, "type", SCE_SELECT_EDGE);
+	kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", THREEKEY, KM_PRESS, 0, 0);
+	RNA_enum_set(kmi->ptr, "type", SCE_SELECT_FACE);
+
+	kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", ONEKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_enum_set(kmi->ptr, "type", SCE_SELECT_VERTEX);
+	RNA_boolean_set(kmi->ptr, "extend", true);
+	kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", TWOKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_enum_set(kmi->ptr, "type", SCE_SELECT_EDGE);
+	RNA_boolean_set(kmi->ptr, "extend", true);
+	kmi = WM_keymap_add_item(keymap, "MESH_OT_select_mode", THREEKEY, KM_PRESS, KM_SHIFT, 0);
+	RNA_enum_set(kmi->ptr, "type", SCE_SELECT_FACE);
+	RNA_boolean_set(kmi->ptr, "extend", true);
+
 	/* standard mouse selection goes via space_view3d */
 	kmi = WM_keymap_add_item(keymap, "MESH_OT_loop_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0);
 	RNA_boolean_set(kmi->ptr, "extend", false);
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index 915395f22e6..168a0118f57 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -289,23 +289,11 @@ void ED_keymap_object(wmKeyConfig *keyconf)
 	keymap = WM_keymap_find(keyconf, "Object Non-modal", 0, 0);
 
 	/* modes */
-	{
-		short key_mode_pair[][2] = {
-			{ONEKEY, OB_MODE_OBJECT},
-			{TWOKEY, OB_MODE_EDIT},
-			{THREEKEY, OB_MODE_POSE},
-			{THREEKEY, OB_MODE_WEIGHT_PAINT},
-			{FOURKEY, OB_MODE_VERTEX_PAINT},
-			{FIVEKEY, OB_MODE_TEXTURE_PAINT},
-			{SIXKEY, OB_MODE_SCULPT},
-			{SEVENKEY, OB_MODE_PARTICLE_EDIT},
-		};
-
-		for (uint i = 0; i < ARRAY_SIZE(key_mode_pair); i++) {
-			kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set_or_submode", key_mode_pair[i][0], KM_PRESS, 0, 0);
-			RNA_enum_set(kmi->ptr, "mode", key_mode_pair[i][1]);
-		}
-	}
+	kmi = WM_keymap_add_item(keymap, "OBJECT_OT_mode_set", TABKEY, KM_RELEASE, 0, 0);
+	RNA_enum_set(kmi->ptr, "mode", OB_MODE_EDIT);
+	RNA_boolean_set(kmi->ptr, "toggle", true);
+
+	kmi = WM_keymap_add_menu_pie(keymap, "VIEW3D_PIE_object_mode_of", TABKEY, KM_CLICK_DRAG, 0, 0);
 
 	WM_keymap_add_item(keymap, "OBJECT_OT_origin_set", CKEY, KM_PRESS, KM_ALT | KM_SHIFT | KM_CTRL, 0);
 
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index f6bd238170d..913db10bed9 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -4808,7 +4808,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf)
 
 	/* tests */
 	WM_keymap_add_item(keymap, "SCREEN_OT_region_quadview", QKEY, KM_PRESS, KM_CTRL | KM_ALT, 0);
-	WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", F3KEY, KM_PRESS, 0, 0);
+	WM_keymap_verify_item(keymap, "SCREEN_OT_repeat_history", RKEY, KM_PRESS, KM_CTRL | KM_ALT, 0);
 	WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0);
 	WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0);
 	WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0);
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index c143ebbcd67..80224e6bbce 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -298,7 +298,7 @@ static void image_keymap(struct wmKeyConfig *keyconf)
 	WM_keymap_add_item(keymap, "IMAGE_OT_reload", RKEY, KM_PRESS, KM_ALT, 0);
 	WM_keymap_add_item(keymap, "IMAGE_OT_read_viewlayers", RKEY, KM_PRESS, KM_CTRL, 0);
 	WM_keymap_add_item(keymap, "IMAGE_OT_save", SKEY, KM_PRESS, KM_ALT, 0);
-	WM_keymap_add_item(keymap, "IMAGE_OT_save_as", F3KEY, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "IMAGE_OT_save_as", SKEY, KM_PRESS, KM_SHIFT, 0);
 	WM_keymap_add_item(keymap, "IMAGE_OT_properties", NKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "IMAGE_OT_toolshelf", TKEY, KM_PRESS, 0, 0);
 
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index 3b800c20ed2..1ceededdd05 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -301,6 +301,8 @@ void view3d_keymap(wmKeyConfig *keyconf)
 	kmi = WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", CKEY, KM_PRESS, KM_SHIFT, 0);
 	RNA_boolean_set(kmi->ptr, "center", true);
 
+	WM_keymap_add_menu_pie(keymap, "VIEW3D_PIE_view_of", ACCENTGRAVEKEY, KM_PRESS, 0, 0);
+
 	/* numpad view hotkeys*/
 	RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD0, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_CAMERA);
 	RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, 0, 0)->ptr, "type", RV3D_VIEW_FRONT);
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index a61a7dd4324..a71c9c4a3be 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -3989,7 +3989,7 @@ void wm_window_keymap(wmKeyConfig *keyconf)
 
 	/* menus that can be accessed anywhere in blender */
 
-	WM_keymap_verify_item(keymap, "WM_OT_search_menu", TABKEY, KM_PRESS, 0, 0);
+	WM_keymap_verify_item(keymap, "WM_OT_search_menu", F3KEY, KM_PRESS, 0, 0);
 
 #ifdef WITH_INPUT_NDOF
 	WM_keymap_add_menu(keymap, "USERPREF_MT_ndof_settings", NDOF_BUTTON_MENU, KM_PRESS, 0, 0);



More information about the Bf-blender-cvs mailing list