added prefs for file zipper

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`
main
Pullusb 2021-10-18 17:05:56 +02:00
parent 3c5cca81a5
commit e2610a882e
3 changed files with 80 additions and 7 deletions

View File

@ -1,4 +1,20 @@
# BAT (blender asset tracer)
Modified version
with Zip packer included
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`

View File

@ -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)

46
preferences.py Normal file
View File

@ -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)