Commit: 1dd702bf8c12dd9902f25c80f9b11f5e85f2ab8f Author: Sybren A. Stüvel Date: Thu Dec 15 15:21:00 2016 +0100 Branches: temp-sybren-poselib https://developer.blender.org/rB1dd702bf8c12dd9902f25c80f9b11f5e85f2ab8f
Revert "Removed now-unused code of old poselib-previews addon." This reverts commit 94527ed77c65bda18915216121c7c27cd5b9d2a1. =================================================================== M release/scripts/startup/bl_operators/poselib.py M release/scripts/startup/bl_ui/__init__.py M release/scripts/startup/bl_ui/properties_data_armature.py =================================================================== diff --git a/release/scripts/startup/bl_operators/poselib.py b/release/scripts/startup/bl_operators/poselib.py index fca0365..8e9d4b1 100644 --- a/release/scripts/startup/bl_operators/poselib.py +++ b/release/scripts/startup/bl_operators/poselib.py @@ -104,6 +104,9 @@ class POSELIB_OT_render_previews(Operator): return {'RUNNING_MODAL'} def render_pose(self, context, plib, plib_index): + import tempfile + import os.path + marker = plib.pose_markers[plib_index] marker.preview_frame_index = plib_index self.log.info('Rendering pose %s at frame %i', marker.name, marker.frame) diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py index 3938584..f5d544f 100644 --- a/release/scripts/startup/bl_ui/__init__.py +++ b/release/scripts/startup/bl_ui/__init__.py @@ -140,12 +140,31 @@ def register(): options={'ENUM_FLAG'}, ) + # properties_data_armature.py + from . import properties_data_armature + bpy.types.Action.pose_previews = EnumProperty( + items=properties_data_armature.pose_preview_items, + update=properties_data_armature.update_pose) + bpy.types.Action.pose_previews_dir = StringProperty( + name='Thumbnail Path', + subtype='DIR_PATH', + default='', + # update=filepath_update + ) + + # done... def unregister(): bpy.utils.unregister_module(__name__) + from . import properties_data_armature + + # del bpy.types.Object.pose_previews + if properties_data_armature.previews: + bpy.utils.previews.remove(properties_data_armature.previews) + # Define a default UIList, when a list does not need any custom drawing... # Keep in sync with its #defined name in UI_interface.h diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index 74ba937..4fbc3a7 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -161,6 +161,56 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel): sub.operator("pose.group_deselect", text="Deselect") +previews = None + + +def pose_preview_items(poselib, context): + global previews + import os.path + + if context is None or not poselib.pose_previews_dir: + return [] + + directory = bpy.path.abspath(poselib.pose_previews_dir) + if not os.path.isdir(directory): + return [] + + if previews is not None and directory == previews.get('pose_previews_dir', None): + return previews.pose_previews + + if previews is None: + previews = bpy.utils.previews.new() + else: + previews.clear() + + no_thumbnail = os.path.join(os.path.dirname(__file__), + 'thumbnails', + 'no_thumbnail.png') + no_thumb_thumb = previews.load('NO THUMBNAIL', no_thumbnail, 'IMAGE') + + enum_items = [] + for pose_idx, pose_marker in enumerate(poselib.pose_markers): + filepath = os.path.join(directory, '%s.png' % pose_marker.name) + if os.path.exists(filepath): + thumb = previews.load(pose_marker.name, filepath, 'IMAGE') + else: + print('Warning: "%s" does not exist' % filepath) + thumb = no_thumb_thumb + + enum_items.append((pose_marker.name, pose_marker.name, pose_marker.name, + thumb.icon_id, pose_idx)) + + previews.pose_previews = enum_items + previews['pose_previews_dir'] = directory + return previews.pose_previews + + +def update_pose(poselib_action, context): + pose_name = poselib_action.pose_previews + poselib_action.pose_markers.active = poselib_action.pose_markers[pose_name] + bpy.ops.poselib.apply_pose(pose_index=poselib_action.pose_markers.active_index) + + class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): bl_label = "Pose Library" bl_options = {'DEFAULT_CLOSED'} @@ -180,6 +230,10 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): if not poselib: return + # layout.template_icon_view( + # poselib, 'pose_markers', + # show_labels=True, + # ) # list of poses in pose library row = layout.row() row.template_list("UI_UL_list", "pose_markers", poselib, "pose_markers", @@ -219,6 +273,10 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): icon_value=poselib.preview.icon_id, icon_frame=marker.preview_frame_index) + #~ layout.template_icon_view(poselib, 'pose_previews', show_labels=True) + layout.prop(poselib, "pose_previews_dir") + col.operator_context = 'INVOKE_DEFAULT' + row = layout.row(align=True) row.operator_context = 'INVOKE_DEFAULT' props = row.operator("poselib.render_previews", text='Render OGL all') _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs