98 lines
2.8 KiB
Python
98 lines
2.8 KiB
Python
# SPDX-FileCopyrightText: 2021 Blender Studio Tools Authors
|
|
#
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
from typing import Any, List, Tuple
|
|
from pathlib import Path
|
|
from .. import prefs, propsdata
|
|
import bpy
|
|
|
|
from ..models import FileListModel
|
|
from ..logger import LoggerFactory
|
|
|
|
EDIT_EXPORT_FILE_MODEL = FileListModel()
|
|
_edit_export_enum_list: List[Tuple[str, str, str]] = []
|
|
_edit_export_file_model_init: bool = False
|
|
|
|
logger = LoggerFactory.getLogger()
|
|
|
|
# TODO Compare to Playblast opsdata, maybe centralize some repeated code
|
|
|
|
|
|
def init_edit_export_file_model(
|
|
context: bpy.types.Context,
|
|
) -> None:
|
|
global EDIT_EXPORT_FILE_MODEL
|
|
global _edit_export_file_model_init
|
|
|
|
addon_prefs = prefs.addon_prefs_get(context)
|
|
kitsu_props = context.scene.kitsu
|
|
edit_export_dir = propsdata.get_edit_export_dir()
|
|
|
|
# Is None if invalid.
|
|
if addon_prefs.edit_export_dir == "" or not edit_export_dir.exists():
|
|
logger.error(
|
|
"Failed to initialize edit export file model. Invalid path. Check addon preferences"
|
|
)
|
|
return
|
|
|
|
EDIT_EXPORT_FILE_MODEL.filter_name = Path(kitsu_props.edit_export_file).name
|
|
EDIT_EXPORT_FILE_MODEL.reset()
|
|
EDIT_EXPORT_FILE_MODEL.root_path = edit_export_dir
|
|
|
|
if not EDIT_EXPORT_FILE_MODEL.versions:
|
|
EDIT_EXPORT_FILE_MODEL.append_item("v001")
|
|
# Update edit_export_version prop.
|
|
kitsu_props.edit_export_version = "v001"
|
|
|
|
else:
|
|
# Update edit_export_version prop.
|
|
kitsu_props.edit_export_version = EDIT_EXPORT_FILE_MODEL.versions[0]
|
|
|
|
_edit_export_file_model_init = True
|
|
|
|
|
|
def add_edit_export_version_increment(context: bpy.types.Context) -> str:
|
|
# Init model if it did not happen.
|
|
if not _edit_export_file_model_init:
|
|
init_edit_export_file_model(context)
|
|
|
|
# Should be already sorted.
|
|
versions = EDIT_EXPORT_FILE_MODEL.versions
|
|
|
|
if len(versions) > 0:
|
|
latest_version = versions[0]
|
|
increment = "v{:03}".format(int(latest_version.replace("v", "")) + 1)
|
|
else:
|
|
increment = "v001"
|
|
|
|
EDIT_EXPORT_FILE_MODEL.append_item(increment)
|
|
return increment
|
|
|
|
|
|
def get_edit_export_versions_enum_list(
|
|
self: Any,
|
|
context: bpy.types.Context,
|
|
) -> List[Tuple[str, str, str]]:
|
|
global _edit_export_enum_list
|
|
global EDIT_EXPORT_FILE_MODEL
|
|
global init_edit_export_file_model
|
|
global _edit_export_file_model_init
|
|
|
|
# Init model if it did not happen.
|
|
if not _edit_export_file_model_init:
|
|
init_edit_export_file_model(context)
|
|
|
|
# Clear all versions in enum list.
|
|
_edit_export_enum_list.clear()
|
|
_edit_export_enum_list.extend(EDIT_EXPORT_FILE_MODEL.versions_as_enum_list)
|
|
|
|
return _edit_export_enum_list
|
|
|
|
|
|
def add_version_custom(custom_version: str) -> None:
|
|
global _edit_export_enum_list
|
|
global EDIT_EXPORT_FILE_MODEL
|
|
|
|
EDIT_EXPORT_FILE_MODEL.append_item(custom_version)
|