diff --git a/OP_keyframe_jump.py b/OP_keyframe_jump.py index e5ff724..9b509bd 100644 --- a/OP_keyframe_jump.py +++ b/OP_keyframe_jump.py @@ -1,5 +1,6 @@ import bpy from .utils import get_addon_prefs +from bpy.props import BoolProperty ,EnumProperty ,StringProperty class GPTB_OT_jump_gp_keyframe(bpy.types.Operator): bl_idname = "screen.gp_keyframe_jump" @@ -11,17 +12,28 @@ class GPTB_OT_jump_gp_keyframe(bpy.types.Operator): def poll(cls, context): return context.object and context.object.type == 'GPENCIL' - next : bpy.props.BoolProperty( + next : BoolProperty( name="Next GP keyframe", description="Go to next active GP keyframe", default=True) - target : bpy.props.EnumProperty( + target : EnumProperty( name="Target layer", description="Choose wich layer to evaluate for keyframe change", default='ACTIVE',# options={'ANIMATABLE'}, update=None, get=None, set=None, items=( ('ACTIVE', 'Active and selected', 'jump in keyframes of active and other selected layers ', 0), ('VISIBLE', 'Visibles layers', 'jump in keyframes of visibles layers', 1), ('ACCESSIBLE', 'Visible and unlocked layers', 'jump in keyframe of all layers', 2), )) - #(key, label, descr, id[, icon]) + + keyframe_type : EnumProperty( + name="Keyframe Filter", description="Only jump to defined keyframe type", + default='ALL', options={'HIDDEN'}, + items=( + ('ALL', 'All', '', 0), # 'KEYFRAME' + ('KEYFRAME', 'Keyframe', '', 'KEYTYPE_KEYFRAME_VEC', 1), + ('BREAKDOWN', 'Breakdown', '', 'KEYTYPE_BREAKDOWN_VEC', 2), + ('MOVING_HOLD', 'Moving Hold', '', 'KEYTYPE_MOVING_HOLD_VEC', 3), + ('EXTREME', 'Extreme', '', 'KEYTYPE_EXTREME_VEC', 4), + ('JITTER', 'Jitter', '', 'KEYTYPE_JITTER_VEC', 5), + )) def execute(self, context): if not context.object.data.layers.active: @@ -47,6 +59,10 @@ class GPTB_OT_jump_gp_keyframe(bpy.types.Operator): maxs = [] for l in gpl: for f in l.frames: + # keyframe type filter + if self.keyframe_type != 'ALL' and f.keyframe_type != self.keyframe_type: + continue + if f.frame_number < current: p = f.frame_number if f.frame_number > current: @@ -80,10 +96,10 @@ class KFJ_OT_rebinder(bpy.types.Operator): bl_label = "rebind keyframe jump shortcut" bl_options = {'REGISTER', 'INTERNAL'} - s_keycode: bpy.props.StringProperty() - s_ctrl: bpy.props.StringProperty() - s_shift: bpy.props.StringProperty() - s_alt: bpy.props.StringProperty() + s_keycode: StringProperty() + s_ctrl: StringProperty() + s_shift: StringProperty() + s_alt: StringProperty() def invoke(self, context, event): diff --git a/README.md b/README.md index c1af299..881d5fc 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Note about palette : For now the importer is not working with linked palette as ### Passive action -Add an "on save" Handler that trigger relative remap of all path. +Add an "on save" Handler that trigger relative remap of all path (can be disabled in addon prefs). ### function @@ -112,6 +112,10 @@ Panel in sidebar : 3D view > sidebar 'N' > Gpencil ## Changelog: +1.0.6: + +- feat: Keyframe jump filter by type. User can now choose if the shortcut should jump on a specific keyframe type (All by default) + 1.0.5: - GP copy-paste : Pasted stroke are now selected (allow to use it to quickly rip/split strokes with cut/paste on the same layer) diff --git a/__init__.py b/__init__.py index 0ca0c87..648998a 100644 --- a/__init__.py +++ b/__init__.py @@ -15,7 +15,7 @@ bl_info = { "name": "GP toolbox", "description": "Set of tools for Grease Pencil in animation production", "author": "Samuel Bernou", -"version": (1, 0, 5), +"version": (1, 0, 6), "blender": (2, 91, 0), "location": "sidebar (N menu) > Gpencil > Toolbox / Gpencil properties", "warning": "",