[Bf-blender-cvs] [5f9de429acd] blender2.8: UI: show keyconfig prefs directly under preset

Campbell Barton noreply at git.blender.org
Mon Nov 19 23:18:51 CET 2018


Commit: 5f9de429acdb9e4df93f659b4ac8ad118f286f57
Author: Campbell Barton
Date:   Tue Nov 20 09:15:53 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB5f9de429acdb9e4df93f659b4ac8ad118f286f57

UI: show keyconfig prefs directly under preset

The keyconfig preset and it's preferences were too far apart,
show the preferences under the preset in a collapsible box.

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

M	release/scripts/modules/rna_keymap_ui.py
M	release/scripts/presets/keyconfig/blender.py
M	release/scripts/presets/keyconfig/blender_27x.py
M	release/scripts/startup/bl_ui/space_userpref.py
M	source/blender/makesdna/DNA_userdef_types.h
M	source/blender/makesrna/intern/rna_userdef.c

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

diff --git a/release/scripts/modules/rna_keymap_ui.py b/release/scripts/modules/rna_keymap_ui.py
index 752db7fd5ac..d655e9ff009 100644
--- a/release/scripts/modules/rna_keymap_ui.py
+++ b/release/scripts/modules/rna_keymap_ui.py
@@ -364,19 +364,18 @@ def draw_keymaps(context, layout):
     from bpy_extras import keyconfig_utils
 
     wm = context.window_manager
-    kc = wm.keyconfigs.user
+    kc_user = wm.keyconfigs.user
+    kc_active = wm.keyconfigs.active
     spref = context.space_data
 
-    col = layout.column()
-    sub = col.column()
-
-    subsplit = sub.split()
+    subsplit = layout.split()
     subcol = subsplit.column()
 
-    row = subcol.row(align=True)
+    col = subcol.column()
+    row = col.row(align=True)
 
     # row.prop_search(wm.keyconfigs, "active", wm, "keyconfigs", text="Key Config")
-    text = bpy.path.display_name(wm.keyconfigs.active.name)
+    text = bpy.path.display_name(kc_active.name)
     if not text:
         text = "Blender (default)"
     row.menu("USERPREF_MT_keyconfigs", text=text)
@@ -389,15 +388,15 @@ def draw_keymaps(context, layout):
     rowsub = row.split(factor=0.33, align=True)
     # postpone drawing into rowsub, so we can set alert!
 
-    col.separator()
-    display_keymaps = keyconfig_utils.keyconfig_merge(kc, kc)
+    layout.separator()
+    display_keymaps = keyconfig_utils.keyconfig_merge(kc_user, kc_user)
     filter_type = spref.filter_type
     filter_text = spref.filter_text.strip()
     if filter_text:
         filter_text = filter_text.lower()
-        ok = draw_filtered(display_keymaps, filter_type, filter_text, col)
+        ok = draw_filtered(display_keymaps, filter_type, filter_text, layout)
     else:
-        draw_hierarchy(display_keymaps, col)
+        draw_hierarchy(display_keymaps, layout)
         ok = True
 
     # go back and fill in rowsub
@@ -406,3 +405,31 @@ def draw_keymaps(context, layout):
     if not ok:
         rowsubsub.alert = True
     rowsubsub.prop(spref, "filter_text", text="", icon='VIEWZOOM')
+
+    # When the keyconfig defines it's own preferences.
+    kc_prefs = kc_active.preferences
+    if kc_prefs is not None:
+        box = col.box()
+        row = box.row(align=True)
+
+        userpref = context.user_preferences
+        inputs = userpref.inputs
+        show_ui_keyconfig = inputs.show_ui_keyconfig
+        row.prop(
+            inputs,
+            "show_ui_keyconfig",
+            text="",
+            icon='TRIA_DOWN' if show_ui_keyconfig else 'TRIA_RIGHT',
+            emboss=False,
+        )
+        row.label(text="Preferences")
+
+        if show_ui_keyconfig:
+            # Defined by user preset, may contain mistakes out of our control.
+            try:
+                kc_prefs.draw(box)
+            except Exception:
+                import traceback
+                traceback.print_exc()
+        del box
+    del kc_prefs
diff --git a/release/scripts/presets/keyconfig/blender.py b/release/scripts/presets/keyconfig/blender.py
index 43933e92087..25246bf24d2 100644
--- a/release/scripts/presets/keyconfig/blender.py
+++ b/release/scripts/presets/keyconfig/blender.py
@@ -55,11 +55,12 @@ class Prefs(bpy.types.KeyConfigPreferences):
     )
 
     def draw(self, layout):
-        col = layout.column(align=True)
+        split = layout.split()
+        col = split.column(align=True)
         col.label(text="Select With:")
         col.row().prop(self, "select_mouse", expand=True)
 
-        col = layout.column(align=True)
+        col = split.column(align=True)
         col.label(text="Spacebar Action:")
         col.row().prop(self, "spacebar_action", expand=True)
 
diff --git a/release/scripts/presets/keyconfig/blender_27x.py b/release/scripts/presets/keyconfig/blender_27x.py
index 573c91cb230..7259b24973c 100644
--- a/release/scripts/presets/keyconfig/blender_27x.py
+++ b/release/scripts/presets/keyconfig/blender_27x.py
@@ -27,9 +27,12 @@ class Prefs(bpy.types.KeyConfigPreferences):
     )
 
     def draw(self, layout):
-        col = layout.column(align=True)
+        split = layout.split()
+        col = split.column()
         col.label(text="Select With:")
         col.row().prop(self, "select_mouse", expand=True)
+        split.column()
+
 
 from bpy_extras.keyconfig_utils import (
     keyconfig_init_from_data,
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index a14d1b892be..92aa42520ea 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -1050,20 +1050,6 @@ class USERPREF_PT_input(Panel):
         userpref = context.user_preferences
         return (userpref.active_section == 'INPUT')
 
-    @staticmethod
-    def draw_input_prefs_keyconfig(context, layout):
-        kc = context.window_manager.keyconfigs.active
-        kc_prefs = kc.preferences
-        if kc_prefs is not None:
-            box = layout.box()
-            box.label(text=kc.name.replace("_", " ").title() + " Keymap")
-            # Defined by user preset, may contain mistakes out of our control.
-            try:
-                kc_prefs.draw(box)
-            except Exception:
-                import traceback
-                traceback.print_exc()
-
     @staticmethod
     def draw_input_prefs(inputs, layout):
         import sys
@@ -1173,13 +1159,11 @@ class USERPREF_PT_input(Panel):
         # Input settings
         self.draw_input_prefs(inputs, col)
 
-        # When the keyconfig defines it's own preferences.
-        self.draw_input_prefs_keyconfig(context, col)
-
         row.separator()
 
         # Keymap Settings
-        draw_keymaps(context, split)
+        col = split.column()
+        draw_keymaps(context, col)
 
         #print("runtime", time.time() - start)
 
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 58beb729892..6ae6eaed1c6 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -541,7 +541,9 @@ typedef struct UserDef {
 	 * which are outside the scope of typical preferences. */
 	short app_flag;
 	short language;
-	short userpref, viewzoom;
+	short userpref;
+	char  userpref_flag;
+	char viewzoom;
 
 	int mixbufsize;
 	int audiodevice;
@@ -684,6 +686,12 @@ typedef enum eUserPref_Section {
 	USER_SECTION_LIGHT 	= 7,
 } eUserPref_Section;
 
+/* UserDef.userpref_flag (State of the user preferences UI). */
+typedef enum eUserPref_SectionFlag {
+	/* Hide/expand keymap preferences. */
+	USER_SECTION_INPUT_HIDE_UI_KEYCONFIG        = (1 << 0),
+} eUserPref_SectionFlag;
+
 /* UserDef.flag */
 typedef enum eUserPref_Flag {
 	USER_AUTOSAVE			= (1 << 0),
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index a195ff7c1cb..f1312eeaa2c 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -4523,6 +4523,10 @@ static void rna_def_userdef_input(BlenderRNA *brna)
 	RNA_def_struct_clear_flag(srna, STRUCT_UNDO);
 	RNA_def_struct_ui_text(srna, "Input", "Settings for input devices");
 
+	prop = RNA_def_property(srna, "show_ui_keyconfig", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "userpref_flag", USER_SECTION_INPUT_HIDE_UI_KEYCONFIG);
+	RNA_def_property_ui_text(prop, "Show UI Key-Config", "");
+
 	prop = RNA_def_property(srna, "view_zoom_method", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "viewzoom");
 	RNA_def_property_enum_items(prop, view_zoom_styles);



More information about the Bf-blender-cvs mailing list