[Bf-blender-cvs] [21e498a] asset-experiments: Tweaks and fixes in py part (preview handling).

Bastien Montagne noreply at git.blender.org
Fri May 29 10:56:07 CEST 2015


Commit: 21e498acdde751c0a0a9548f5dae891b838e7354
Author: Bastien Montagne
Date:   Fri May 29 10:32:31 2015 +0200
Branches: asset-experiments
https://developer.blender.org/rB21e498acdde751c0a0a9548f5dae891b838e7354

Tweaks and fixes in py part (preview handling).

===================================================================

M	release/scripts/modules/bl_previews_utils/bl_previews_render.py
M	release/scripts/startup/bl_operators/__init__.py
A	release/scripts/startup/bl_operators/file.py
M	release/scripts/startup/bl_operators/wm.py

===================================================================

diff --git a/release/scripts/modules/bl_previews_utils/bl_previews_render.py b/release/scripts/modules/bl_previews_utils/bl_previews_render.py
index 3da7355..f565277 100644
--- a/release/scripts/modules/bl_previews_utils/bl_previews_render.py
+++ b/release/scripts/modules/bl_previews_utils/bl_previews_render.py
@@ -400,7 +400,7 @@ def do_previews(do_objects, do_groups, do_scenes, do_data_intern):
         print("*NOT* Saving %s, because some error(s) happened while deleting temp render data..." % bpy.data.filepath)
 
 
-def do_clear_previews(do_objects, do_groups):
+def do_clear_previews(do_objects, do_groups, do_scenes, do_data_intern):
     if do_data_intern:
         bpy.ops.wm.previews_clear(id_type=INTERN_PREVIEW_TYPES)
 
diff --git a/release/scripts/startup/bl_operators/__init__.py b/release/scripts/startup/bl_operators/__init__.py
index 4047505..35c7a55 100644
--- a/release/scripts/startup/bl_operators/__init__.py
+++ b/release/scripts/startup/bl_operators/__init__.py
@@ -28,6 +28,7 @@ _modules = [
     "anim",
     "clip",
     "console",
+    "file",
     "image",
     "mask",
     "mesh",
diff --git a/release/scripts/startup/bl_operators/file.py b/release/scripts/startup/bl_operators/file.py
new file mode 100644
index 0000000..d3c1d33
--- /dev/null
+++ b/release/scripts/startup/bl_operators/file.py
@@ -0,0 +1,184 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+import bpy
+from bpy.types import Operator
+from bpy.props import (
+        StringProperty,
+        BoolProperty,
+        CollectionProperty,
+        )
+
+# ########## Datablock previews... ##########
+
+class WM_OT_previews_batch_generate(Operator):
+    """Generate selected .blend file's previews"""
+    bl_idname = "wm.previews_batch_generate"
+    bl_label = "Batch-Generate Previews"
+    bl_options = {'REGISTER'}
+
+    # -----------
+    # File props.
+    files = CollectionProperty(type=bpy.types.OperatorFileListElement, options={'HIDDEN', 'SKIP_SAVE'})
+
+    directory = StringProperty(maxlen=1024, subtype='FILE_PATH', options={'HIDDEN', 'SKIP_SAVE'})
+
+    # Show only images/videos, and directories!
+    filter_blender = BoolProperty(default=True, options={'HIDDEN', 'SKIP_SAVE'})
+    filter_folder = BoolProperty(default=True, options={'HIDDEN', 'SKIP_SAVE'})
+
+    # -----------
+    # Own props.
+    use_scenes = BoolProperty(default=True, name="Scenes", description="Generate scenes' previews")
+    use_groups = BoolProperty(default=True, name="Groups", description="Generate groups' previews")
+    use_objects = BoolProperty(default=True, name="Objects", description="Generate objects' previews")
+    use_intern_data = BoolProperty(default=True, name="Mat/Tex/...",
+                                   description="Generate 'internal' previews (materials, textures, images, etc.)")
+
+    use_trusted = BoolProperty(default=False, name="Trusted Blend Files",
+                               description="Enable python evaluation for selected files")
+
+    def invoke(self, context, event):
+        context.window_manager.fileselect_add(self)
+        return {'RUNNING_MODAL'}
+
+    def execute(self, context):
+        if "subprocess" in locals():
+            import imp
+            imp.reload(preview_render)
+        else:
+            import os
+            import subprocess
+            from bl_previews_utils import bl_previews_render as preview_render
+
+        context.window_manager.progress_begin(0, len(self.files))
+        context.window_manager.progress_update(0)
+        for i, fn in enumerate(self.files):
+            blen_path = os.path.join(self.directory, fn.name)
+            cmmd = [
+                bpy.app.binary_path,
+                "--background",
+                "--factory-startup",
+                "-noaudio",
+            ]
+            if self.use_trusted:
+                cmmd.append("--enable-autoexec")
+            cmmd += [
+                blen_path,
+                "--python",
+                os.path.join(os.path.dirname(preview_render.__file__), "bl_previews_render.py"),
+                "--",
+                "bl_previews_render.py",  # arg parser expects first arg to be prog name!
+            ]
+            if not self.use_scenes:
+                cmmd.append('--no_scenes')
+            if not self.use_groups:
+                cmmd.append('--no_groups')
+            if not self.use_objects:
+                cmmd.append('--no_objects')
+            if not self.use_intern_data:
+                cmmd.append('--no_data_intern')
+            if subprocess.call(cmmd):
+                self.report({'ERROR'}, "Previews generation process failed for file '%s'!" % blend_path)
+                context.window_manager.progress_end()
+                return {'CANCELLED'}
+            context.window_manager.progress_update(i + 1)
+        context.window_manager.progress_end()
+
+        return {'FINISHED'}
+
+
+class WM_OT_previews_batch_clear(Operator):
+    """Clear selected .blend file's previews"""
+    bl_idname = "wm.previews_batch_clear"
+    bl_label = "Batch-Clear Previews"
+    bl_options = {'REGISTER'}
+
+    # -----------
+    # File props.
+    files = CollectionProperty(type=bpy.types.OperatorFileListElement, options={'HIDDEN', 'SKIP_SAVE'})
+
+    directory = StringProperty(maxlen=1024, subtype='FILE_PATH', options={'HIDDEN', 'SKIP_SAVE'})
+
+    # Show only images/videos, and directories!
+    filter_blender = BoolProperty(default=True, options={'HIDDEN', 'SKIP_SAVE'})
+    filter_folder = BoolProperty(default=True, options={'HIDDEN', 'SKIP_SAVE'})
+
+    # -----------
+    # Own props.
+    use_scenes = BoolProperty(default=True, name="Scenes", description="Clear scenes' previews")
+    use_groups = BoolProperty(default=True, name="Groups", description="Clear groups' previews")
+    use_objects = BoolProperty(default=True, name="Objects", description="Clear objects' previews")
+    use_intern_data = BoolProperty(default=True, name="Mat/Tex/...",
+                                   description="Clear 'internal' previews (materials, textures, images, etc.)")
+
+    use_trusted = BoolProperty(default=False, name="Trusted Blend Files",
+                               description="Enable python evaluation for selected files")
+
+    def invoke(self, context, event):
+        context.window_manager.fileselect_add(self)
+        return {'RUNNING_MODAL'}
+
+    def execute(self, context):
+        if "subprocess" in locals():
+            import imp
+            imp.reload(preview_render)
+        else:
+            import os
+            import subprocess
+            from bl_previews_utils import bl_previews_render as preview_render
+
+        context.window_manager.progress_begin(0, len(self.files))
+        context.window_manager.progress_update(0)
+        for i, fn in enumerate(self.files):
+            blen_path = os.path.join(self.directory, fn.name)
+            cmmd = [
+                bpy.app.binary_path,
+                "--background",
+                "--factory-startup",
+                "-noaudio",
+            ]
+            if self.use_trusted:
+                cmmd.append("--enable-autoexec")
+            cmmd += [
+                blen_path,
+                "--python",
+                os.path.join(os.path.dirname(preview_render.__file__), "bl_previews_render.py"),
+                "--",
+                "bl_previews_render.py",  # arg parser expects first arg to be prog name!
+                "--clear",
+            ]
+            if not self.use_scenes:
+                cmmd.append('--no_scenes')
+            if not self.use_groups:
+                cmmd.append('--no_groups')
+            if not self.use_objects:
+                cmmd.append('--no_objects')
+            if not self.use_intern_data:
+                cmmd.append('--no_data_intern')
+            if subprocess.call(cmmd):
+                self.report({'ERROR'}, "Previews clear process failed for file '%s'!" % blend_path)
+                context.window_manager.progress_end()
+                return {'CANCELLED'}
+            context.window_manager.progress_update(i + 1)
+        context.window_manager.progress_end()
+
+        return {'FINISHED'}
+
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index fa5e1c5..031ad9a 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -2119,158 +2119,3 @@ class WM_OT_addon_expand(Operator):
         info = addon_utils.module_bl_info(mod)
         info["show_expanded"] = not info["show_expanded"]
         return {'FINISHED'}
-
-# ########## Datablock previews... ##########
-
-class WM_OT_previews_batch_generate(Operator):
-    """Generate selected .blend file's previews"""
-    bl_idname = "wm.previews_batch_generate"
-    bl_label = "Batch-Generate Previews"
-    bl_options = {'REGISTER'}
-
-    # -----------
-    # File props.
-    files = CollectionProperty(type=bpy.types.OperatorFileListElement, options={'HIDDEN', 'SKIP_SAVE'})
-
-    directory = StringProperty(maxlen=1024, subtype='FILE_PATH', options={'HIDDEN', 'SKIP_SAVE'})
-
-    # Show only images/videos, and directories!
-    filter_blender = BoolProperty(default=True, options={'HIDDEN', 'SKIP_SAVE'})
-    filter_folder = BoolProperty(default=True, options={'HIDDEN', 'SKIP_SAVE'})
-
-    # -----------
-    # Own props.
-    use_scenes = BoolProperty(default=True, name="Scene

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list