diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-11-08 07:59:51 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-11-09 03:33:06 +0300 |
commit | 3064da1200a97e4fba08be33dd271b09d65a2fde (patch) | |
tree | dc040c83de9ec8a828c9733e04dbb398cd174465 /source/blender/editors/sculpt_paint/sculpt.c | |
parent | b43ce7908fbb4be7ed2d230579c836aa7045d2c7 (diff) |
Keymap: move builtin keymaps from C to Python
This should be purely an implementation change,
for end users there should be no functional difference.
The entire key configuration is in one file with ~5000 lines of code.
Mostly avoiding code duplication and preserve comments and utility
functions from the C code.
It's a bit long but for searching and editing it's also convenient to
have it all in one file.
Notes:
- Actual keymap is shared by blender / blender_legacy
and stored in `keymap_data/blender_default.py`
This only generates JSON-like data to be passed into
`keyconfig_import_from_data`, allowing other presets to load and
manipulate the default keymap.
- Each preset defines 'keyconfig_data'
which can be shared between presets.
- Some of the utility functions for generating keymap items still
need to be ported over to Python.
- Some keymap items can be made into loops (marked as TODO).
See: D3907
Diffstat (limited to 'source/blender/editors/sculpt_paint/sculpt.c')
-rw-r--r-- | source/blender/editors/sculpt_paint/sculpt.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index bbd2f53ec78..79f7ad9a135 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -6052,6 +6052,17 @@ static void SCULPT_OT_sample_detail_size(wmOperatorType *ot) } +/* Dynamic-topology detail size + * + * This should be improved further, perhaps by showing a triangle + * grid rather than brush alpha */ +static void set_brush_rc_props(PointerRNA *ptr, const char *prop) +{ + char *path = BLI_sprintfN("tool_settings.sculpt.brush.%s", prop); + RNA_string_set(ptr, "data_path_primary", path); + MEM_freeN(path); +} + static int sculpt_set_detail_size_exec(bContext *C, wmOperator *UNUSED(op)) { Sculpt *sd = CTX_data_tool_settings(C)->sculpt; @@ -6062,15 +6073,15 @@ static int sculpt_set_detail_size_exec(bContext *C, wmOperator *UNUSED(op)) WM_operator_properties_create_ptr(&props_ptr, ot); if (sd->flags & (SCULPT_DYNTOPO_DETAIL_CONSTANT | SCULPT_DYNTOPO_DETAIL_MANUAL)) { - set_brush_rc_props(&props_ptr, "sculpt", "constant_detail_resolution", NULL, 0); + set_brush_rc_props(&props_ptr, "constant_detail_resolution"); RNA_string_set(&props_ptr, "data_path_primary", "tool_settings.sculpt.constant_detail_resolution"); } else if (sd->flags & SCULPT_DYNTOPO_DETAIL_BRUSH) { - set_brush_rc_props(&props_ptr, "sculpt", "constant_detail_resolution", NULL, 0); + set_brush_rc_props(&props_ptr, "constant_detail_resolution"); RNA_string_set(&props_ptr, "data_path_primary", "tool_settings.sculpt.detail_percent"); } else { - set_brush_rc_props(&props_ptr, "sculpt", "detail_size", NULL, 0); + set_brush_rc_props(&props_ptr, "detail_size"); RNA_string_set(&props_ptr, "data_path_primary", "tool_settings.sculpt.detail_size"); } |