Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'io_blend_utils/__init__.py')
-rw-r--r--io_blend_utils/__init__.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/io_blend_utils/__init__.py b/io_blend_utils/__init__.py
new file mode 100644
index 00000000..adbd2d04
--- /dev/null
+++ b/io_blend_utils/__init__.py
@@ -0,0 +1,110 @@
+# ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+
+bl_info = {
+ "name": "Blend File Utils",
+ "author": "Campbell Barton",
+ "version": (0, 1),
+ "blender": (2, 76, 0),
+ "location": "File > External Data > Blend Utils",
+ "description": "Utility for packing blend files",
+ "warning": "",
+ "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/BlendFile_Utils",
+ "support": 'OFFICIAL',
+ "category": "Import-Export",
+ }
+
+
+import bpy
+from bpy.types import Operator
+from bpy_extras.io_utils import ExportHelper
+
+from .bl_utils.subprocess_helper import SubprocessHelper
+
+
+class ExportBlendPack(Operator, ExportHelper, SubprocessHelper):
+ """Packs a blend file and all its dependencies into an archive for easy redistribution"""
+ bl_idname = "export_blend.pack"
+ bl_label = "Pack Blend to Archive"
+
+ # ExportHelper
+ filename_ext = ".zip"
+
+ # SubprocessHelper
+ report_interval = 0.25
+
+ temp_dir = None
+
+ @classmethod
+ def poll(cls, context):
+ return bpy.data.is_saved
+
+ def process_pre(self):
+ import os
+ import tempfile
+
+ self.temp_dir = tempfile.TemporaryDirectory()
+
+ filepath_blend = bpy.data.filepath
+
+ self.command = (
+ bpy.app.binary_path_python,
+ os.path.join(os.path.dirname(__file__), "blendfile_pack.py"),
+ # file to pack
+ "--input", filepath_blend,
+ # file to write
+ "--output", bpy.path.ensure_ext(self.filepath, ".zip"),
+ "--temp", self.temp_dir.name,
+ )
+
+ def process_post(self, returncode):
+ if self.temp_dir is not None:
+ try:
+ self.temp_dir.cleanup()
+ except:
+ import traceback
+ traceback.print_exc()
+
+
+def menu_func(self, context):
+ layout = self.layout
+ layout.separator()
+ layout.operator(ExportBlendPack.bl_idname)
+
+
+classes = (
+ ExportBlendPack,
+ )
+
+
+def register():
+ for cls in classes:
+ bpy.utils.register_class(cls)
+
+ bpy.types.INFO_MT_file_external_data.append(menu_func)
+
+
+def unregister():
+ for cls in classes:
+ bpy.utils.unregister_class(cls)
+
+ bpy.types.INFO_MT_file_external_data.remove(menu_func)
+
+
+if __name__ == "__main__":
+ register()