[Bf-blender-cvs] [074cd53c193] blender2.8: Keymap: move left click select to a preference

Campbell Barton noreply at git.blender.org
Sun Nov 18 20:28:10 CET 2018


Commit: 074cd53c19311955031f88d2486ac475ba43f806
Author: Campbell Barton
Date:   Mon Nov 19 06:14:20 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB074cd53c19311955031f88d2486ac475ba43f806

Keymap: move left click select to a preference

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

M	release/scripts/presets/keyconfig/blender.py
M	release/scripts/presets/keyconfig/blender_27x.py
M	release/scripts/startup/bl_operators/wm.py
M	release/scripts/startup/bl_ui/space_userpref.py
M	source/blender/blenkernel/BKE_blender_version.h
M	source/blender/blenkernel/BKE_keyconfig.h
M	source/blender/blenkernel/intern/blender.c
M	source/blender/blenkernel/intern/keyconfig.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/versioning_userdef.c
M	source/blender/blenloader/intern/writefile.c
M	source/blender/editors/uvedit/uvedit_smart_stitch.c
M	source/blender/makesdna/DNA_userdef_types.h
M	source/blender/makesdna/DNA_windowmanager_types.h
M	source/blender/makesrna/intern/rna_userdef.c
M	source/blender/makesrna/intern/rna_wm.c
M	source/blender/windowmanager/gizmo/intern/wm_gizmo_group.c

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

diff --git a/release/scripts/presets/keyconfig/blender.py b/release/scripts/presets/keyconfig/blender.py
index 060eabe8275..c6d106d5806 100644
--- a/release/scripts/presets/keyconfig/blender.py
+++ b/release/scripts/presets/keyconfig/blender.py
@@ -5,8 +5,6 @@ from bpy.props import (
     EnumProperty,
 )
 
-userpref = bpy.context.user_preferences
-
 idname = os.path.splitext(os.path.basename(__file__))[0]
 
 def update(_self, _context):
@@ -16,6 +14,18 @@ def update(_self, _context):
 class Prefs(bpy.types.KeyConfigPreferences):
     bl_idname = idname
 
+    select_mouse: EnumProperty(
+        name="Spacebar",
+        items=(
+            ('LEFT', "Left", "Use left Mouse Button for selection"),
+            ('RIGHT', "Right", "Use Right Mouse Button for selection"),
+        ),
+        description=(
+            "Mouse button used for selection"
+        ),
+        default='RIGHT',
+        update=update,
+    )
     spacebar_action: EnumProperty(
         name="Spacebar",
         items=(
@@ -45,9 +55,14 @@ class Prefs(bpy.types.KeyConfigPreferences):
     )
 
     def draw(self, layout):
+        col = layout.column(align=True)
+        col.label(text="Select With:")
+        col.row().prop(self, "select_mouse", expand=True)
+
         col = layout.column(align=True)
         col.label(text="Spacebar Action:")
         col.row().prop(self, "spacebar_action", expand=True)
+
         layout.prop(self, "use_select_all_toggle")
 
 
@@ -64,13 +79,12 @@ def _load():
 
     keyconfig_data = mod.generate_keymaps(
         mod.KeymapParams(
-            select_mouse=userpref.inputs.select_mouse,
+            select_mouse=kc_prefs.select_mouse,
             spacebar_action=kc_prefs.spacebar_action,
             use_select_all_toggle=kc_prefs.use_select_all_toggle,
         ),
     )
     keyconfig_init_from_data(kc, keyconfig_data)
-    kc.has_select_mouse = True  # Support switching select mouse
 
 
 if __name__ == "__main__":
diff --git a/release/scripts/presets/keyconfig/blender_27x.py b/release/scripts/presets/keyconfig/blender_27x.py
index 857480b404e..15888b68e50 100644
--- a/release/scripts/presets/keyconfig/blender_27x.py
+++ b/release/scripts/presets/keyconfig/blender_27x.py
@@ -1,23 +1,56 @@
 import os
 import bpy
+from bpy.props import (
+    EnumProperty,
+)
+
+idname = os.path.splitext(os.path.basename(__file__))[0]
+
+def update(_self, _context):
+    _load()
+
+
+class Prefs(bpy.types.KeyConfigPreferences):
+    bl_idname = idname
 
-userpref = bpy.context.user_preferences
+    select_mouse: EnumProperty(
+        name="Spacebar",
+        items=(
+            ('LEFT', "Left", "Use left Mouse Button for selection"),
+            ('RIGHT', "Right", "Use Right Mouse Button for selection"),
+        ),
+        description=(
+            "Mouse button used for selection"
+        ),
+        default='RIGHT',
+        update=update,
+    )
+
+    def draw(self, layout):
+        col = layout.column(align=True)
+        col.label(text="Select With:")
+        col.row().prop(self, "select_mouse", expand=True)
 
 from bpy_extras.keyconfig_utils import (
-    keyconfig_import_from_data,
+    keyconfig_init_from_data,
     keyconfig_module_from_preset,
 )
 
-_mod = keyconfig_module_from_preset(os.path.join("keymap_data", "blender_default"), __file__)
-keyconfig_data = _mod.generate_keymaps(
-    _mod.KeymapParams(
-        legacy=True,
-        select_mouse=userpref.inputs.select_mouse,
-    ),
-)
+mod = keyconfig_module_from_preset(os.path.join("keymap_data", "blender_default"), __file__)
+
+def _load():
+    kc = bpy.context.window_manager.keyconfigs.new(idname)
+    kc_prefs = kc.preferences
+
+    keyconfig_data = mod.generate_keymaps(
+        mod.KeymapParams(
+            select_mouse=kc_prefs.select_mouse,
+            legacy=True,
+        ),
+    )
+    keyconfig_init_from_data(kc, keyconfig_data)
 
-idname = os.path.splitext(os.path.basename(__file__))[0]
 
 if __name__ == "__main__":
-    kc = keyconfig_import_from_data(idname, keyconfig_data)
-    kc.has_select_mouse = True  # Support switching select mouse
+    bpy.utils.register_class(Prefs)
+    _load()
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index c770746666d..81183dd3fd6 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -2591,12 +2591,17 @@ class WM_MT_splash(Menu):
             text = "Blender"
         sub.menu("USERPREF_MT_keyconfigs", text=text)
 
-        if wm.keyconfigs.active.has_select_mouse:
+        kc = wm.keyconfigs.active
+        kc_prefs = kc.preferences
+        has_select_mouse = hasattr(kc_prefs, "select_mouse")
+        if has_select_mouse:
             sub = col.split(factor=0.35)
             row = sub.row()
             row.alignment = 'RIGHT'
             row.label(text="Select With")
-            sub.row().prop(userpref.inputs, 'select_mouse', expand=True)
+            sub.row().prop(kc_prefs, 'select_mouse', expand=True)
+            has_select_mouse = True
+
 
         col.separator()
 
@@ -2618,7 +2623,7 @@ class WM_MT_splash(Menu):
         #sub.prop(userpref.system, "language", text="")
 
         # Keep height constant
-        if not wm.keyconfigs.active.has_select_mouse:
+        if not has_select_mouse:
             col.label()
 
         layout.label()
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 5a71f98d8f8..ace2d1b17d1 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -1103,11 +1103,6 @@ class USERPREF_PT_input(Panel):
         sub.prop(inputs, "drag_threshold")
         sub.prop(inputs, "tweak_threshold")
 
-        wm = bpy.context.window_manager
-        if wm.keyconfigs.active.has_select_mouse:
-            sub.label(text="Select With:")
-            sub.row().prop(inputs, "select_mouse", expand=True)
-
         sub = layout.column()
         sub.label(text="Double Click:")
         sub.prop(inputs, "mouse_double_click_time", text="Speed")
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 34a486dd66f..781dd3f9826 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -28,7 +28,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         280
-#define BLENDER_SUBVERSION      31
+#define BLENDER_SUBVERSION      32
 /* Several breakages with 280, e.g. collections vs layers */
 #define BLENDER_MINVERSION      280
 #define BLENDER_MINSUBVERSION   0
diff --git a/source/blender/blenkernel/BKE_keyconfig.h b/source/blender/blenkernel/BKE_keyconfig.h
index bef6aab2d82..a086930fe34 100644
--- a/source/blender/blenkernel/BKE_keyconfig.h
+++ b/source/blender/blenkernel/BKE_keyconfig.h
@@ -26,7 +26,10 @@
 
 /** Based on #BKE_addon_pref_type_init and friends */
 
-/** Actual data is stored in #wmKeyConfigPrefType. */
+struct UserDef;
+struct wmKeyConfigPref;
+
+/** Actual data is stored in #wmKeyConfigPref. */
 #if defined(__RNA_TYPES_H__)
 typedef struct wmKeyConfigPrefType_Runtime {
 	char idname[64];
@@ -39,7 +42,10 @@ typedef struct wmKeyConfigPrefType_Runtime {
 typedef struct wmKeyConfigPrefType_Runtime wmKeyConfigPrefType_Runtime;
 #endif
 
-/* KeyConfig preferenes. */
+/* KeyConfig preferenes (UserDef). */
+struct wmKeyConfigPref *BKE_keyconfig_pref_ensure(struct UserDef *userdef, const char *kc_idname);
+
+/* KeyConfig preferenes (RNA). */
 struct wmKeyConfigPrefType_Runtime *BKE_keyconfig_pref_type_find(const char *idname, bool quiet);
 void BKE_keyconfig_pref_type_add(struct wmKeyConfigPrefType_Runtime *kpt_rt);
 void BKE_keyconfig_pref_type_remove(const struct wmKeyConfigPrefType_Runtime *kpt_rt);
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index b90d4fd3948..f1b1aa548d2 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -210,7 +210,7 @@ static void userdef_free_keymaps(UserDef *userdef)
 
 static void userdef_free_keyconfig_prefs(UserDef *userdef)
 {
-	for (wmKeyConfigPrefType *kpt = userdef->user_keyconfig_prefs.first, *kpt_next; kpt; kpt = kpt_next) {
+	for (wmKeyConfigPref *kpt = userdef->user_keyconfig_prefs.first, *kpt_next; kpt; kpt = kpt_next) {
 		kpt_next = kpt->next;
 		IDP_FreeProperty(kpt->prop);
 		MEM_freeN(kpt->prop);
diff --git a/source/blender/blenkernel/intern/keyconfig.c b/source/blender/blenkernel/intern/keyconfig.c
index 46b82569f47..755c9e1582d 100644
--- a/source/blender/blenkernel/intern/keyconfig.c
+++ b/source/blender/blenkernel/intern/keyconfig.c
@@ -29,15 +29,45 @@
 
 #include "BLI_utildefines.h"
 #include "BLI_ghash.h"
+#include "BLI_listbase.h"
+#include "BLI_string.h"
 
 #include "DNA_listBase.h"
+#include "DNA_userdef_types.h"
+#include "DNA_windowmanager_types.h"
 
 #include "BKE_keyconfig.h"  /* own include */
+#include "BKE_idprop.h"
 
 #include "MEM_guardedalloc.h"
 
+
+/* -------------------------------------------------------------------- */
+/** \name Key-Config Preference (UserDef) API
+ *
+ * \see #BKE_addon_pref_type_init for logic this is bases on.
+ * \{ */
+
+wmKeyConfigPref *BKE_keyconfig_pref_ensure(UserDef *userdef, const char *kc_idname)
+{
+	wmKeyConfigPref *kpt = BLI_findstring(
+	        &userdef->user_keyconfig_prefs, kc_idname, offsetof(wmKeyConfigPref, idname));
+	if (kpt == NULL) {
+		kpt = MEM_callocN(sizeof(*kpt), __func__);
+		STRNCPY(kpt->idname, kc_idname);
+		BLI_addtail(&userdef->user_keyconfig_prefs, kpt);
+	}
+	if (kpt->prop == NULL) {
+		IDPropertyTemplate val = {0};
+		kpt->prop = IDP_New(IDP_GROUP, &val, kc_idname); /* name is unimportant  */
+	}
+	return kpt;
+}
+
+/** \} */
+
 /* -------------------------------------------------------------------- */
-/** \name Key-Config Preference API
+/** \name Key-Config Preference (RNA Type) API
  *
  * \see #BKE_addon_pref_type_init for logic this is bases on.
  * \{ */
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/re

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list