[Bf-blender-cvs] [52d2afae9d8] soc-2020-greasepencil-curve: GPencil: Add custom keymap for curve edit mode

Falk David noreply at git.blender.org
Wed Jul 1 12:44:30 CEST 2020


Commit: 52d2afae9d84ed9c24f78df1b8829617d3e6e45a
Author: Falk David
Date:   Wed Jul 1 12:44:17 2020 +0200
Branches: soc-2020-greasepencil-curve
https://developer.blender.org/rB52d2afae9d84ed9c24f78df1b8829617d3e6e45a

GPencil: Add custom keymap for curve edit mode

Added a keymap handler for curve edit mode. This allows us to set
keybindings when curve edit mode is active. Currently only one
keymap was added: set handle type, which is set to 'V' like everywhere
else.

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

M	release/scripts/modules/bl_keymap_utils/keymap_hierarchy.py
M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	source/blender/editors/gpencil/gpencil_ops.c
M	source/blender/editors/screen/area.c

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

diff --git a/release/scripts/modules/bl_keymap_utils/keymap_hierarchy.py b/release/scripts/modules/bl_keymap_utils/keymap_hierarchy.py
index 3b829de405a..c80b548b4f2 100644
--- a/release/scripts/modules/bl_keymap_utils/keymap_hierarchy.py
+++ b/release/scripts/modules/bl_keymap_utils/keymap_hierarchy.py
@@ -190,6 +190,7 @@ _km_hierarchy = [
     ]),
 
     ('Grease Pencil', 'EMPTY', 'WINDOW', [  # grease pencil stuff (per region)
+        ('Grease Pencil Stroke Curve Edit Mode', 'EMPTY', 'WINDOW', []),
         ('Grease Pencil Stroke Edit Mode', 'EMPTY', 'WINDOW', []),
         ('Grease Pencil Stroke Paint (Draw brush)', 'EMPTY', 'WINDOW', []),
         ('Grease Pencil Stroke Paint (Fill)', 'EMPTY', 'WINDOW', []),
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index a5dc075970c..190d208422c 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -3207,6 +3207,20 @@ def km_grease_pencil_stroke_edit_mode(params):
 
     return keymap
 
+def km_grease_pencil_stroke_curve_edit_mode(params):
+    items = []
+    keymap = (
+        "Grease Pencil Stroke Curve Edit Mode",
+        {"space_type": 'EMPTY', "region_type": 'WINDOW'},
+        {"items": items},
+    )
+
+    items.extend([
+        # Set handle type
+        ("gpencil.stroke_editcurve_set_handle_type", {"type": 'V', "value": 'PRESS'}, None),
+    ])
+
+    return keymap
 
 def km_grease_pencil_stroke_paint_mode(params):
     items = []
@@ -6693,6 +6707,7 @@ def generate_keymaps(params=None):
 
         # Modes.
         km_grease_pencil(params),
+        km_grease_pencil_stroke_curve_edit_mode(params),
         km_grease_pencil_stroke_edit_mode(params),
         km_grease_pencil_stroke_paint_mode(params),
         km_grease_pencil_stroke_paint_draw_brush(params),
diff --git a/source/blender/editors/gpencil/gpencil_ops.c b/source/blender/editors/gpencil/gpencil_ops.c
index 84a4c7bbe57..05a47492bb6 100644
--- a/source/blender/editors/gpencil/gpencil_ops.c
+++ b/source/blender/editors/gpencil/gpencil_ops.c
@@ -69,6 +69,13 @@ static bool gpencil_stroke_editmode_poll(bContext *C)
   return (gpd && (gpd->flag & GP_DATA_STROKE_EDITMODE));
 }
 
+/* Poll callback for stroke curve editing mode */
+static bool gpencil_stroke_editmode_curve_poll(bContext *C)
+{
+  bGPdata *gpd = CTX_data_gpencil_data(C);
+  return (GPENCIL_EDIT_MODE(gpd) && GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd));
+}
+
 /* Poll callback for stroke painting mode */
 static bool gpencil_stroke_paintmode_poll(bContext *C)
 {
@@ -316,6 +323,15 @@ static void ed_keymap_gpencil_editing(wmKeyConfig *keyconf)
   keymap->poll = gpencil_stroke_editmode_poll;
 }
 
+/* Stroke Curve Editing Keymap - Only when editmode is enabled and in curve edit mode */
+static void ed_keymap_gpencil_curve_editing(wmKeyConfig *keyconf)
+{
+  wmKeyMap *keymap = WM_keymap_ensure(keyconf, "Grease Pencil Stroke Curve Edit Mode", 0, 0);
+
+  /* set poll callback - so that this keymap only gets enabled when curve editmode is enabled */
+  keymap->poll = gpencil_stroke_editmode_curve_poll;
+}
+
 /* keys for draw with a drawing brush (no fill) */
 static void ed_keymap_gpencil_painting_draw(wmKeyConfig *keyconf)
 {
@@ -472,6 +488,7 @@ static void ed_keymap_gpencil_weightpainting_draw(wmKeyConfig *keyconf)
 void ED_keymap_gpencil(wmKeyConfig *keyconf)
 {
   ed_keymap_gpencil_general(keyconf);
+  ed_keymap_gpencil_curve_editing(keyconf);
   ed_keymap_gpencil_editing(keyconf);
   ed_keymap_gpencil_painting(keyconf);
   ed_keymap_gpencil_painting_draw(keyconf);
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index a182dd662af..24e5a42e510 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1716,6 +1716,10 @@ static void ed_default_handlers(
     wmKeyMap *keymap_general = WM_keymap_ensure(wm->defaultconf, "Grease Pencil", 0, 0);
     WM_event_add_keymap_handler(handlers, keymap_general);
 
+    wmKeyMap *keymap_curve_edit = WM_keymap_ensure(
+        wm->defaultconf, "Grease Pencil Stroke Curve Edit Mode", 0, 0);
+    WM_event_add_keymap_handler(handlers, keymap_curve_edit);
+
     wmKeyMap *keymap_edit = WM_keymap_ensure(
         wm->defaultconf, "Grease Pencil Stroke Edit Mode", 0, 0);
     WM_event_add_keymap_handler(handlers, keymap_edit);



More information about the Bf-blender-cvs mailing list