Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/gpencil/gpencil_ops.c
| Context not available. | |||||
| #include "BKE_context.h" | #include "BKE_context.h" | ||||
| #include "DNA_gpencil_types.h" | #include "DNA_gpencil_types.h" | ||||
| #include "DNA_object_types.h" | |||||
| #include "DNA_screen_types.h" | |||||
| #include "DNA_space_types.h" | |||||
| #include "WM_api.h" | #include "WM_api.h" | ||||
| #include "WM_types.h" | #include "WM_types.h" | ||||
| Context not available. | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW_POLY); | RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW_POLY); | ||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | RNA_boolean_set(kmi->ptr, "wait_for_input", false); | ||||
| /* erase */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", RIGHTMOUSE, KM_PRESS, 0, DKEY); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /* Tablet Mappings for Drawing ------------------ */ | |||||
| /* For now, only support direct drawing using the eraser, as most users using a tablet | |||||
| * may still want to use that as their primary pointing device! | |||||
| */ | |||||
| #if 0 | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", TABLET_STYLUS, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| #endif | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", TABLET_ERASER, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /* Viewport Tools ------------------------------- */ | /* Viewport Tools ------------------------------- */ | ||||
| /* Enter EditMode */ | /* Enter EditMode */ | ||||
| Context not available. | |||||
| return (gpd && (gpd->flag & GP_DATA_STROKE_EDITMODE)); | return (gpd && (gpd->flag & GP_DATA_STROKE_EDITMODE)); | ||||
| } | } | ||||
| /* Stroke Editing Keymap - Only when editmode is enabled */ | /* Poll callback for stroke painting mode */ | ||||
| static void ed_keymap_gpencil_editing(wmKeyConfig *keyconf) | static int gp_stroke_paintmode_poll(bContext *C) | ||||
| { | |||||
| /* TODO: limit this to mode, but review 2D editors */ | |||||
| bGPdata *gpd = CTX_data_gpencil_data(C); | |||||
| return (gpd && (gpd->flag & GP_DATA_STROKE_PAINTMODE)); | |||||
| } | |||||
| /* Poll callback for stroke sculpting mode */ | |||||
| static int gp_stroke_sculptmode_poll(bContext *C) | |||||
| { | |||||
| bGPdata *gpd = CTX_data_gpencil_data(C); | |||||
| Object *ob = CTX_data_active_object(C); | |||||
| ScrArea *sa = CTX_wm_area(C); | |||||
| /* if not gpencil object and not view3d, need sculpt keys if edit mode */ | |||||
| if (sa->spacetype != SPACE_VIEW3D) { | |||||
| return ((gpd) && (gpd->flag & GP_DATA_STROKE_EDITMODE)); | |||||
| } | |||||
| else { | |||||
| /* weight paint is a submode of sculpt */ | |||||
| if ((ob) && (ob->type == OB_GPENCIL)) { | |||||
| return GPENCIL_SCULPT_OR_WEIGHT_MODE(gpd); | |||||
| } | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| /* Poll callback for stroke weight paint mode */ | |||||
| static int gp_stroke_weightmode_poll(bContext *C) | |||||
| { | |||||
| bGPdata *gpd = CTX_data_gpencil_data(C); | |||||
| Object *ob = CTX_data_active_object(C); | |||||
| if ((ob) && (ob->type == OB_GPENCIL)) { | |||||
| return (gpd && (gpd->flag & GP_DATA_STROKE_WEIGHTMODE)); | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| static void ed_keymap_gpencil_selection(wmKeyMap *keymap) | |||||
| { | { | ||||
| wmKeyMap *keymap = WM_keymap_find(keyconf, "Grease Pencil Stroke Edit Mode", 0, 0); | |||||
| wmKeyMapItem *kmi; | wmKeyMapItem *kmi; | ||||
| /* set poll callback - so that this keymap only gets enabled when stroke editmode is enabled */ | |||||
| keymap->poll = gp_stroke_editmode_poll; | |||||
| /* ----------------------------------------------- */ | |||||
| /* Exit EditMode */ | |||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); | |||||
| /* Pie Menu - For settings/tools easy access */ | |||||
| WM_keymap_add_menu_pie(keymap, "GPENCIL_MT_pie_sculpt", EKEY, KM_PRESS, 0, DKEY); | |||||
| /* Brush Settings */ | |||||
| /* NOTE: We cannot expose these in the standard keymap, as they will interfere with regular hotkeys | |||||
| * in other modes. However, when we are dealing with Stroke Edit Mode, we know for certain | |||||
| * that the only data being edited is that of the Grease Pencil strokes | |||||
| */ | |||||
| /* CTRL + FKEY = Eraser Radius */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "user_preferences.edit.grease_pencil_eraser_radius"); | |||||
| /* Interpolation */ | |||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate", EKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); | |||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate_sequence", EKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| /* Sculpting ------------------------------------- */ | |||||
| /* Brush-Based Editing: | |||||
| * EKEY + LMB = Single stroke, draw immediately | |||||
| * + Other Modifiers (Ctrl/Shift) = Invert, Smooth, etc. | |||||
| * | |||||
| * For the modal version, use D+E -> Sculpt | |||||
| */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, 0, EKEY); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_CTRL, EKEY); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /*RNA_boolean_set(kmi->ptr, "use_invert", true);*/ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_SHIFT, EKEY); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /*RNA_boolean_set(kmi->ptr, "use_smooth", true);*/ | |||||
| /* Shift-FKEY = Sculpt Strength */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.brush.strength"); | |||||
| /* FKEY = Sculpt Brush Size */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.brush.size"); | |||||
| /* Selection ------------------------------------- */ | |||||
| /* select all */ | /* select all */ | ||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_all", AKEY, KM_PRESS, 0, 0); | kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_all", AKEY, KM_PRESS, 0, 0); | ||||
| RNA_enum_set(kmi->ptr, "action", SEL_TOGGLE); | RNA_enum_set(kmi->ptr, "action", SEL_TOGGLE); | ||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_all", IKEY, KM_PRESS, KM_CTRL, 0); | kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_all", IKEY, KM_PRESS, KM_CTRL, 0); | ||||
| RNA_enum_set(kmi->ptr, "action", SEL_INVERT); | RNA_enum_set(kmi->ptr, "action", SEL_INVERT); | ||||
| /* circle select */ | /* circle select */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select_circle", CKEY, KM_PRESS, 0, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_select_circle", CKEY, KM_PRESS, 0, 0); | ||||
| /* border select */ | /* border select */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select_border", BKEY, KM_PRESS, 0, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_select_border", BKEY, KM_PRESS, 0, 0); | ||||
| /* lasso select */ | /* lasso select */ | ||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); | kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0); | ||||
| RNA_boolean_set(kmi->ptr, "deselect", false); | RNA_boolean_set(kmi->ptr, "deselect", false); | ||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT | KM_CTRL, 0); | kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT | KM_CTRL, 0); | ||||
| RNA_boolean_set(kmi->ptr, "deselect", true); | RNA_boolean_set(kmi->ptr, "deselect", true); | ||||
| /* In the Node Editor, lasso select needs ALT modifier too (as somehow CTRL+LMB drag gets taken for "cut" quite early) | /* In the Node Editor, lasso select needs ALT modifier too (as somehow CTRL+LMB drag gets taken for "cut" quite early) | ||||
| * There probably isn't too much harm adding this for other editors too as part of standard GP editing keymap. This hotkey | * There probably isn't too much harm adding this for other editors too as part of standard GP editing keymap. This hotkey | ||||
| * combo doesn't seem to see much use under standard scenarios? | * combo doesn't seem to see much use under standard scenarios? | ||||
| */ | */ | ||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); | kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL | KM_ALT, 0); | ||||
| RNA_boolean_set(kmi->ptr, "deselect", false); | RNA_boolean_set(kmi->ptr, "deselect", false); | ||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT | KM_CTRL | KM_ALT, 0); | kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_SHIFT | KM_CTRL | KM_ALT, 0); | ||||
| RNA_boolean_set(kmi->ptr, "deselect", true); | RNA_boolean_set(kmi->ptr, "deselect", true); | ||||
| /* normal select */ | /* normal select */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); | ||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); | kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0); | ||||
| RNA_boolean_set(kmi->ptr, "extend", true); | RNA_boolean_set(kmi->ptr, "extend", true); | ||||
| RNA_boolean_set(kmi->ptr, "toggle", true); | RNA_boolean_set(kmi->ptr, "toggle", true); | ||||
| /* whole stroke select */ | /* whole stroke select */ | ||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0); | kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0); | ||||
| RNA_boolean_set(kmi->ptr, "entire_strokes", true); | RNA_boolean_set(kmi->ptr, "entire_strokes", true); | ||||
| /* select linked */ | /* select linked */ | ||||
| /* NOTE: While LKEY is redundant, not having it breaks the mode illusion too much */ | /* NOTE: While LKEY is redundant, not having it breaks the mode illusion too much */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select_linked", LKEY, KM_PRESS, 0, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_select_linked", LKEY, KM_PRESS, 0, 0); | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_select_linked", LKEY, KM_PRESS, KM_CTRL, 0); | ||||
| /* select alternate */ | |||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select_alternate", LKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| /* select grouped */ | /* select grouped */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_select_grouped", GKEY, KM_PRESS, KM_SHIFT, 0); | ||||
| /* select more/less */ | /* select more/less */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); | ||||
| } | |||||
| static void ed_keymap_gpencil_sculpt(wmKeyMap *keymap) | |||||
| { | |||||
| wmKeyMapItem *kmi; | |||||
| /* Pie Menu - For settings/tools easy access */ | |||||
| WM_keymap_add_menu_pie(keymap, "GPENCIL_PIE_sculpt", EKEY, KM_PRESS, 0, DKEY); | |||||
| /* Sculpting ------------------------------------- */ | |||||
| /* Brush-Based Editing: | |||||
| * EKEY + LMB = Single stroke, draw immediately | |||||
| * + Other Modifiers (Ctrl/Shift) = Invert, Smooth, etc. | |||||
| * | |||||
| * For the modal version, use D+E -> Sculpt | |||||
| */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /*RNA_boolean_set(kmi->ptr, "use_invert", true);*/ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /*RNA_boolean_set(kmi->ptr, "use_smooth", true);*/ | |||||
| /* Shift-FKEY = Sculpt Strength */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.brush.strength"); | |||||
| /* FKEY = Sculpt Brush Size */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.brush.size"); | |||||
| } | |||||
| static void ed_keymap_gpencil_weight(wmKeyMap *keymap) | |||||
| { | |||||
| wmKeyMapItem *kmi; | |||||
| /* Brush-Based Editing: | |||||
| * EKEY + LMB = Single stroke, draw immediately | |||||
| * + Other Modifiers (Ctrl/Shift) = Invert, Smooth, etc. | |||||
| * | |||||
| * For the modal version, use D+E -> Sculpt | |||||
| */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, 0, 0); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /*RNA_boolean_set(kmi->ptr, "use_invert", true);*/ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_paint", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /*RNA_boolean_set(kmi->ptr, "use_smooth", true);*/ | |||||
| } | |||||
| /* Stroke Editing Keymap - Only when editmode is enabled */ | |||||
| static void ed_keymap_gpencil_editing(wmKeyConfig *keyconf) | |||||
| { | |||||
| wmKeyMap *keymap = WM_keymap_find(keyconf, "Grease Pencil Stroke Edit Mode", 0, 0); | |||||
| wmKeyMapItem *kmi; | |||||
| /* set poll callback - so that this keymap only gets enabled when stroke editmode is enabled */ | |||||
| keymap->poll = gp_stroke_editmode_poll; | |||||
| /* ----------------------------------------------- */ | |||||
| /* Exit EditMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| /* Brush Settings */ | |||||
| /* NOTE: We cannot expose these in the standard keymap, as they will interfere with regular hotkeys | |||||
| * in other modes. However, when we are dealing with Stroke Edit Mode, we know for certain | |||||
| * that the only data being edited is that of the Grease Pencil strokes | |||||
| */ | |||||
| /* Interpolation */ | |||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate", EKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); | |||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_interpolate_sequence", EKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); | |||||
| /* Selection */ | |||||
| ed_keymap_gpencil_selection(keymap); | |||||
| /* Editing ----------------------------------------- */ | /* Editing ----------------------------------------- */ | ||||
| /* duplicate and move selected points */ | /* duplicate and move selected points */ | ||||
| Context not available. | |||||
| /* snap */ | /* snap */ | ||||
| WM_keymap_add_menu(keymap, "GPENCIL_MT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); | WM_keymap_add_menu(keymap, "GPENCIL_MT_snap", SKEY, KM_PRESS, KM_SHIFT, 0); | ||||
| /* convert to geometry */ | /* convert to geometry */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_convert", CKEY, KM_PRESS, KM_ALT, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_convert", CKEY, KM_PRESS, KM_ALT, 0); | ||||
| Context not available. | |||||
| RNA_boolean_set(kmi->ptr, "unselected", true); | RNA_boolean_set(kmi->ptr, "unselected", true); | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_selection_opacity_toggle", HKEY, KM_PRESS, KM_CTRL, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_selection_opacity_toggle", HKEY, KM_PRESS, KM_CTRL, 0); | ||||
| /* toogle multiedit support */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_multiedit_toggle", QKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "lines", 0); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_multiedit_toggle", QKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_int_set(kmi->ptr, "lines", 1); | |||||
| /* Isolate Layer */ | /* Isolate Layer */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_layer_isolate", PADASTERKEY, KM_PRESS, 0, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_layer_isolate", PADASTERKEY, KM_PRESS, 0, 0); | ||||
| /* Move to Layer */ | /* Move to Layer */ | ||||
| WM_keymap_add_item(keymap, "GPENCIL_OT_move_to_layer", MKEY, KM_PRESS, 0, 0); | WM_keymap_add_item(keymap, "GPENCIL_OT_move_to_layer", MKEY, KM_PRESS, 0, 0); | ||||
| /* Select drawing brush using index */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", ONEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 0); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", TWOKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 1); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", THREEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 2); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", FOURKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 3); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", FIVEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 4); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", SIXKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 5); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", SEVENKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 6); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", EIGHTKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 7); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", NINEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 8); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", ZEROKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 9); | |||||
| /* Transform Tools */ | /* Transform Tools */ | ||||
| kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); | kmi = WM_keymap_add_item(keymap, "TRANSFORM_OT_translate", GKEY, KM_PRESS, 0, 0); | ||||
| Context not available. | |||||
| /* Proportional Editing */ | /* Proportional Editing */ | ||||
| ED_keymap_proportional_cycle(keyconf, keymap); | ED_keymap_proportional_cycle(keyconf, keymap); | ||||
| ED_keymap_proportional_editmode(keyconf, keymap, true); | ED_keymap_proportional_editmode(keyconf, keymap, true); | ||||
| /* Enter PaintMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_paintmode_toggle", DKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| /* Enter SculptMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculptmode_toggle", EKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| } | |||||
| /* Stroke Painting Keymap - Only when paintmode is enabled */ | |||||
| static void ed_keymap_gpencil_painting(wmKeyConfig *keyconf) | |||||
| { | |||||
| wmKeyMap *keymap = WM_keymap_find(keyconf, "Grease Pencil Stroke Paint Mode", 0, 0); | |||||
| wmKeyMapItem *kmi; | |||||
| /* set poll callback - so that this keymap only gets enabled when stroke paintmode is enabled */ | |||||
| keymap->poll = gp_stroke_paintmode_poll; | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /* draw - straight lines */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW_STRAIGHT); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /* draw - poly lines */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW_POLY); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /* erase */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", LEFTMOUSE, KM_PRESS, KM_ALT, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /* Tablet Mappings for Drawing ------------------ */ | |||||
| /* For now, only support direct drawing using the eraser, as most users using a tablet | |||||
| * may still want to use that as their primary pointing device! | |||||
| */ | |||||
| #if 0 | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", TABLET_STYLUS, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_DRAW); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| #endif | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_draw", TABLET_ERASER, KM_PRESS, 0, 0); | |||||
| RNA_enum_set(kmi->ptr, "mode", GP_PAINTMODE_ERASER); | |||||
| RNA_boolean_set(kmi->ptr, "wait_for_input", false); | |||||
| /* Exit PaintMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_paintmode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| /* Selection */ | |||||
| ed_keymap_gpencil_selection(keymap); | |||||
| /* Select drawing brush using index */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", ONEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 0); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", TWOKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 1); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", THREEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 2); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", FOURKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 3); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", FIVEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 4); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", SIXKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 5); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", SEVENKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 6); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", EIGHTKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 7); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", NINEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 8); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_brush_select", ZEROKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 9); | |||||
| /* FKEY = Brush Size */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_brushes.active.line_width"); | |||||
| /* CTRL + FKEY = Eraser Radius */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "user_preferences.edit.grease_pencil_eraser_radius"); | |||||
| /* Enter EditMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| /* Enter SculptMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculptmode_toggle", EKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| } | |||||
| /* Stroke Sculpting Keymap - Only when sculptmode is enabled */ | |||||
| static void ed_keymap_gpencil_sculpting(wmKeyConfig *keyconf) | |||||
| { | |||||
| wmKeyMap *keymap = WM_keymap_find(keyconf, "Grease Pencil Stroke Sculpt Mode", 0, 0); | |||||
| wmKeyMapItem *kmi; | |||||
| /* set poll callback - so that this keymap only gets enabled when stroke sculptmode is enabled */ | |||||
| keymap->poll = gp_stroke_sculptmode_poll; | |||||
| /* Exit SculptMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculptmode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| /* Selection */ | |||||
| ed_keymap_gpencil_selection(keymap); | |||||
| /* sculpt */ | |||||
| ed_keymap_gpencil_sculpt(keymap); | |||||
| /* toogle multiedit support */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_multiedit_toggle", QKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "lines", 0); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_multiedit_toggle", QKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_int_set(kmi->ptr, "lines", 1); | |||||
| /* Select sculpt brush using index */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", ONEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 0); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", TWOKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 1); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", THREEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 2); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", FOURKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 3); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", FIVEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 4); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", SIXKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 5); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", SEVENKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 6); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", EIGHTKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 7); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_sculpt_select", NINEKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "index", 8); | |||||
| /* Enter EditMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| /* Enter PaintMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_paintmode_toggle", DKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| } | } | ||||
| /* Stroke Weight Paint Keymap - Only when weight is enabled */ | |||||
| static void ed_keymap_gpencil_weightpainting(wmKeyConfig *keyconf) | |||||
| { | |||||
| wmKeyMap *keymap = WM_keymap_find(keyconf, "Grease Pencil Stroke Weight Mode", 0, 0); | |||||
| wmKeyMapItem *kmi; | |||||
| /* set poll callback - so that this keymap only gets enabled when stroke sculptmode is enabled */ | |||||
| keymap->poll = gp_stroke_weightmode_poll; | |||||
| /* Exit WeightMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_weightmode_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| /* Selection */ | |||||
| ed_keymap_gpencil_selection(keymap); | |||||
| /* sculpt */ | |||||
| ed_keymap_gpencil_weight(keymap); | |||||
| /* Shift-FKEY = Sculpt Strength */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.weight_brush.strength"); | |||||
| /* FKEY = Sculpt Brush Size */ | |||||
| kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); | |||||
| RNA_string_set(kmi->ptr, "data_path_primary", "tool_settings.gpencil_sculpt.weight_brush.size"); | |||||
| /* toogle multiedit support */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_multiedit_toggle", QKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "lines", 0); | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_multiedit_toggle", QKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_int_set(kmi->ptr, "lines", 1); | |||||
| /* Enter EditMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_editmode_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| /* Enter PaintMode */ | |||||
| kmi = WM_keymap_add_item(keymap, "GPENCIL_OT_paintmode_toggle", DKEY, KM_PRESS, 0, 0); | |||||
| RNA_int_set(kmi->ptr, "back", 1); | |||||
| } | |||||
| /* ==================== */ | /* ==================== */ | ||||
| void ED_keymap_gpencil(wmKeyConfig *keyconf) | void ED_keymap_gpencil(wmKeyConfig *keyconf) | ||||
| { | { | ||||
| ed_keymap_gpencil_general(keyconf); | ed_keymap_gpencil_general(keyconf); | ||||
| ed_keymap_gpencil_editing(keyconf); | ed_keymap_gpencil_editing(keyconf); | ||||
| ed_keymap_gpencil_painting(keyconf); | |||||
| ed_keymap_gpencil_sculpting(keyconf); | |||||
| ed_keymap_gpencil_weightpainting(keyconf); | |||||
| } | } | ||||
| /* ****************************************** */ | /* ****************************************** */ | ||||
| Context not available. | |||||
| /* Editing (Strokes) ------------ */ | /* Editing (Strokes) ------------ */ | ||||
| WM_operatortype_append(GPENCIL_OT_editmode_toggle); | WM_operatortype_append(GPENCIL_OT_editmode_toggle); | ||||
| WM_operatortype_append(GPENCIL_OT_paintmode_toggle); | |||||
| WM_operatortype_append(GPENCIL_OT_sculptmode_toggle); | |||||
| WM_operatortype_append(GPENCIL_OT_weightmode_toggle); | |||||
| WM_operatortype_append(GPENCIL_OT_selection_opacity_toggle); | WM_operatortype_append(GPENCIL_OT_selection_opacity_toggle); | ||||
| WM_operatortype_append(GPENCIL_OT_multiedit_toggle); | |||||
| WM_operatortype_append(GPENCIL_OT_select); | WM_operatortype_append(GPENCIL_OT_select); | ||||
| WM_operatortype_append(GPENCIL_OT_select_all); | WM_operatortype_append(GPENCIL_OT_select_all); | ||||
| Context not available. | |||||
| WM_operatortype_append(GPENCIL_OT_select_less); | WM_operatortype_append(GPENCIL_OT_select_less); | ||||
| WM_operatortype_append(GPENCIL_OT_select_first); | WM_operatortype_append(GPENCIL_OT_select_first); | ||||
| WM_operatortype_append(GPENCIL_OT_select_last); | WM_operatortype_append(GPENCIL_OT_select_last); | ||||
| WM_operatortype_append(GPENCIL_OT_select_alternate); | |||||
| WM_operatortype_append(GPENCIL_OT_duplicate); | WM_operatortype_append(GPENCIL_OT_duplicate); | ||||
| WM_operatortype_append(GPENCIL_OT_delete); | WM_operatortype_append(GPENCIL_OT_delete); | ||||
| WM_operatortype_append(GPENCIL_OT_dissolve); | WM_operatortype_append(GPENCIL_OT_dissolve); | ||||
| Context not available. | |||||
| WM_operatortype_append(GPENCIL_OT_active_frames_delete_all); | WM_operatortype_append(GPENCIL_OT_active_frames_delete_all); | ||||
| WM_operatortype_append(GPENCIL_OT_convert); | WM_operatortype_append(GPENCIL_OT_convert); | ||||
| WM_operatortype_append(GPENCIL_OT_convert_scene_to_object); | |||||
| WM_operatortype_append(GPENCIL_OT_stroke_arrange); | WM_operatortype_append(GPENCIL_OT_stroke_arrange); | ||||
| WM_operatortype_append(GPENCIL_OT_stroke_change_palette); | |||||
| WM_operatortype_append(GPENCIL_OT_stroke_change_color); | WM_operatortype_append(GPENCIL_OT_stroke_change_color); | ||||
| WM_operatortype_append(GPENCIL_OT_stroke_lock_color); | WM_operatortype_append(GPENCIL_OT_stroke_lock_color); | ||||
| WM_operatortype_append(GPENCIL_OT_stroke_apply_thickness); | WM_operatortype_append(GPENCIL_OT_stroke_apply_thickness); | ||||
| Context not available. | |||||
| WM_operatortype_append(GPENCIL_OT_stroke_join); | WM_operatortype_append(GPENCIL_OT_stroke_join); | ||||
| WM_operatortype_append(GPENCIL_OT_stroke_flip); | WM_operatortype_append(GPENCIL_OT_stroke_flip); | ||||
| WM_operatortype_append(GPENCIL_OT_stroke_subdivide); | WM_operatortype_append(GPENCIL_OT_stroke_subdivide); | ||||
| WM_operatortype_append(GPENCIL_OT_stroke_simplify); | |||||
| WM_operatortype_append(GPENCIL_OT_palette_add); | |||||
| WM_operatortype_append(GPENCIL_OT_palette_remove); | |||||
| WM_operatortype_append(GPENCIL_OT_palette_change); | |||||
| WM_operatortype_append(GPENCIL_OT_palette_lock_layer); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_add); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_remove); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_isolate); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_hide); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_reveal); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_lock_all); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_unlock_all); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_move); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_select); | |||||
| WM_operatortype_append(GPENCIL_OT_palettecolor_copy); | |||||
| WM_operatortype_append(GPENCIL_OT_brush_add); | WM_operatortype_append(GPENCIL_OT_brush_add); | ||||
| WM_operatortype_append(GPENCIL_OT_brush_remove); | WM_operatortype_append(GPENCIL_OT_brush_remove); | ||||
| Context not available. | |||||
| WM_operatortype_append(GPENCIL_OT_brush_copy); | WM_operatortype_append(GPENCIL_OT_brush_copy); | ||||
| WM_operatortype_append(GPENCIL_OT_brush_select); | WM_operatortype_append(GPENCIL_OT_brush_select); | ||||
| WM_operatortype_append(GPENCIL_OT_sculpt_select); | |||||
| /* palette slots */ | |||||
| WM_operatortype_append(GPENCIL_OT_palette_slot_add); | |||||
| WM_operatortype_append(GPENCIL_OT_palette_slot_remove); | |||||
| /* conversion of old palettes */ | |||||
| WM_operatortype_append(GPENCIL_OT_convert_old_palettes); | |||||
| /* vertex groups */ | |||||
| WM_operatortype_append(GPENCIL_OT_vertex_group_assign); | |||||
| WM_operatortype_append(GPENCIL_OT_vertex_group_remove_from); | |||||
| WM_operatortype_append(GPENCIL_OT_vertex_group_select); | |||||
| WM_operatortype_append(GPENCIL_OT_vertex_group_deselect); | |||||
| /* Editing (Time) --------------- */ | /* Editing (Time) --------------- */ | ||||
| /* Interpolation */ | /* Interpolation */ | ||||
| WM_operatortype_append(GPENCIL_OT_interpolate); | WM_operatortype_append(GPENCIL_OT_interpolate); | ||||
| WM_operatortype_append(GPENCIL_OT_interpolate_sequence); | WM_operatortype_append(GPENCIL_OT_interpolate_sequence); | ||||
| WM_operatortype_append(GPENCIL_OT_interpolate_reverse); | WM_operatortype_append(GPENCIL_OT_interpolate_reverse); | ||||
| /* Primitives */ | |||||
| WM_operatortype_append(GPENCIL_OT_primitive); | |||||
| } | } | ||||
| void ED_operatormacros_gpencil(void) | void ED_operatormacros_gpencil(void) | ||||
| Context not available. | |||||