diff --git a/README.md b/README.md index bba2054..4584530 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,20 @@ # BAT (blender asset tracer) Modified version -with Zip packer included \ No newline at end of file +with Zip packer included + + +Zip behavior +the root folder of the zip use first the environment variable `ZIP_ROOT` (used with `os.getenv('ZIP_ROOT')`) + +If there is no such env variable it fallback to path specified in addon preferences. + +This root can be manually changed in the settings (sidebar) of the export browser windows. + + +### Changelog + +1.3.1 + +- added: prefs for file zipper (fallback to this if env is not defined) +- changed: zip operator id_name `bpy.ops.adm.export_zip` >> `bpy.opsbat.export_zip` \ No newline at end of file diff --git a/__init__.py b/__init__.py index 5e250b7..490ba9e 100644 --- a/__init__.py +++ b/__init__.py @@ -25,7 +25,7 @@ __version__ = '1.3' bl_info = { "name": "Blender Asset Tracer", "author": "Campbell Barton, Sybren A. Stüvel, Loïc Charrière and Clément Ducarteron", - "version": (1, 3, 0), + "version": (1, 3, 1), "blender": (2, 80, 0), "location": "File > External Data > BAT", "description": "Utility for packing blend files", @@ -47,7 +47,7 @@ import sys import subprocess import tempfile from blender_asset_tracer.trace import deps - +from . import preferences class ExportBatPack(Operator, ExportHelper): bl_idname = "export_bat.pack" @@ -86,10 +86,10 @@ class ExportBatPack(Operator, ExportHelper): return {'FINISHED'} -class ADM_OT_export_zip(Operator, ExportHelper): +class BAT_OT_export_zip(Operator, ExportHelper): """Export current blendfile as .ZIP""" bl_label = "Export File to .ZIP" - bl_idname = "adm.export_zip" + bl_idname = "bat.export_zip" filename_ext = '.zip' @@ -105,6 +105,13 @@ class ADM_OT_export_zip(Operator, ExportHelper): def poll(cls, context): return bpy.data.is_saved + ## ExportHelper has it's own invoke so overriding it with this one create error + # def invoke(self, context, event): + # prefs = preferences.get_addon_prefs() + # if prefs.root_default: + # self.root_dir = prefs.root_default + # return self.execute(context) + def execute(self, context): root_dir = self.root_dir @@ -249,18 +256,21 @@ def menu_func(self, context): layout = self.layout layout.separator() layout.operator(ExportBatPack.bl_idname) - filepath = layout.operator(ADM_OT_export_zip.bl_idname) + filepath = layout.operator(BAT_OT_export_zip.bl_idname) root_dir_env = os.getenv('ZIP_ROOT') + if not root_dir_env: # if no env use prefs instead + root_dir_env = preferences.get_addon_prefs().root_default filepath.root_dir = '' if root_dir_env == None else root_dir_env #os.getenv('PROJECT_STORE') classes = ( ExportBatPack, - ADM_OT_export_zip, + BAT_OT_export_zip, ) def register(): + preferences.register() for cls in classes: bpy.utils.register_class(cls) @@ -271,6 +281,7 @@ def unregister(): for cls in classes: bpy.utils.unregister_class(cls) + preferences.unregister() bpy.types.TOPBAR_MT_file_external_data.remove(menu_func) diff --git a/preferences.py b/preferences.py new file mode 100644 index 0000000..1b17f4c --- /dev/null +++ b/preferences.py @@ -0,0 +1,46 @@ +import bpy +from bpy.props import (FloatProperty, + BoolProperty, + EnumProperty, + StringProperty, + IntProperty, + PointerProperty) + +def get_addon_prefs(): + prefs = bpy.context.preferences + return prefs.addons[__package__].preferences + +class myaddonPrefs(bpy.types.AddonPreferences): + bl_idname = __name__.split('.')[0] + + root_default : bpy.props.StringProperty( + name='Default Root', + description="Default root folder path when using export to Zip", + subtype='DIR_PATH', + default='') + + def draw(self, context): + layout = self.layout + col = layout.column() + col.label(text='Export to Zip preferences:') + col.prop(self, 'root_default') + + col = layout.column() + col.label(text='If specified, will be the default root folder path when using export to Zip') + col.label(text='Typically the root folder of the current project') + + + +### --- REGISTER --- + +classes=( +myaddonPrefs, +) + +def register(): + for cls in classes: + bpy.utils.register_class(cls) + +def unregister(): + for cls in reversed(classes): + bpy.utils.unregister_class(cls) \ No newline at end of file