Revision: 37099 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37099 Author: aligorith Date: 2011-06-02 13:03:46 +0000 (Thu, 02 Jun 2011) Log Message: ----------- Added operator to remove all useless unused actions from the current .blend file. * From operator search, find "Clear Useless Actions" * "Action library" actions are preserved by this operator. It targets actions without any F-Curves * By default, only actions which are single-user (where that user is a Fake user) will be targeted. This can be changed to have it target any "dangling" action that doesn't have any F-Curves * A save/reload cycle is still required to fully remove such Actions from the current file. Though at least now it's a simpler process to have these semi-automatically removed ;)
Modified Paths: -------------- branches/soc-2011-pepper/release/scripts/startup/bl_operators/nla.py Modified: branches/soc-2011-pepper/release/scripts/startup/bl_operators/nla.py =================================================================== --- branches/soc-2011-pepper/release/scripts/startup/bl_operators/nla.py 2011-06-02 12:44:59 UTC (rev 37098) +++ branches/soc-2011-pepper/release/scripts/startup/bl_operators/nla.py 2011-06-02 13:03:46 UTC (rev 37099) @@ -168,3 +168,37 @@ def invoke(self, context, event): wm = context.window_manager return wm.invoke_props_dialog(self) + +################################# + +class ClearUselessActions(bpy.types.Operator): + '''Mark actions with no F-Curves for deletion after save+reload of file preserving "action libraries"''' + bl_idname = "anim.clear_useless_actions" + bl_label = "Clear Useless Actions" + bl_options = {'REGISTER', 'UNDO'} + + only_unused = BoolProperty(name="Only Unused", + description="Only unused (Fake User only) actions get considered", + default=True) + + @classmethod + def poll(cls, context): + return len(bpy.data.actions) != 0 + + def execute(self, context): + removed = 0 + + for action in bpy.data.actions: + # if only user is "fake" user... + if ((self.only_unused is False) or + (action.use_fake_user and action.users == 1)): + + # if it has F-Curves, then it's a "action library" (i.e. walk, wave, jump, etc.) + # and should be left alone as that's what fake users are for! + if not action.fcurves: + # mark action for deletion + action.user_clear() + removed += 1 + + self.report({'INFO'}, "Removed %d empty and/or fake-user only Actions" % (removed)) + return {'FINISHED'} _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs