feat: add i18n for forgetten entries.
- add i18n for progress hints when importing or exporting virtools file. - add i18n for naming convention report.
This commit is contained in:
parent
f9fe4af1fe
commit
cc74a2ca8b
@ -133,7 +133,8 @@ def _prepare_virtools_3dobjects(
|
|||||||
light_crets: list[_TLightPair] = []
|
light_crets: list[_TLightPair] = []
|
||||||
light_cret_set: set[bpy.types.Object] = set()
|
light_cret_set: set[bpy.types.Object] = set()
|
||||||
# start saving
|
# start saving
|
||||||
progress.enter_substeps(len(export_objects), "Creating 3dObjects and Lights")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Creating 3dObjects and Lights', 'BBP_OT_export_virtools/execute')
|
||||||
|
progress.enter_substeps(len(export_objects), tr_text)
|
||||||
|
|
||||||
# iterate exported object list
|
# iterate exported object list
|
||||||
for obj3d in export_objects:
|
for obj3d in export_objects:
|
||||||
@ -176,7 +177,8 @@ def _export_virtools_groups(
|
|||||||
# create virtools group
|
# create virtools group
|
||||||
group_cret_map: dict[str, bmap.BMGroup] = {}
|
group_cret_map: dict[str, bmap.BMGroup] = {}
|
||||||
# start saving
|
# start saving
|
||||||
progress.enter_substeps(len(obj3d_crets), "Saving Groups")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Saving Groups', 'BBP_OT_export_virtools/execute')
|
||||||
|
progress.enter_substeps(len(obj3d_crets), tr_text)
|
||||||
|
|
||||||
# create sector group first if user ordered
|
# create sector group first if user ordered
|
||||||
# This step is designed for ensure that the created sector group is successive.
|
# This step is designed for ensure that the created sector group is successive.
|
||||||
@ -221,7 +223,8 @@ def _export_virtools_light(
|
|||||||
light_crets: tuple[_TLightPair, ...]
|
light_crets: tuple[_TLightPair, ...]
|
||||||
) -> None:
|
) -> None:
|
||||||
# start saving
|
# start saving
|
||||||
progress.enter_substeps(len(light_crets), "Saving Lights")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Saving Lights', 'BBP_OT_export_virtools/execute')
|
||||||
|
progress.enter_substeps(len(light_crets), tr_text)
|
||||||
|
|
||||||
for obj3d, light, vtlight in light_crets:
|
for obj3d, light, vtlight in light_crets:
|
||||||
# set name
|
# set name
|
||||||
@ -268,7 +271,8 @@ def _export_virtools_3dobjects(
|
|||||||
mesh_crets: list[_TMeshPair] = []
|
mesh_crets: list[_TMeshPair] = []
|
||||||
mesh_cret_map: dict[bpy.types.Mesh, bmap.BMMesh] = {}
|
mesh_cret_map: dict[bpy.types.Mesh, bmap.BMMesh] = {}
|
||||||
# start saving
|
# start saving
|
||||||
progress.enter_substeps(len(obj3d_crets), "Saving 3dObjects")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Saving 3dObjects', 'BBP_OT_export_virtools/execute')
|
||||||
|
progress.enter_substeps(len(obj3d_crets), tr_text)
|
||||||
|
|
||||||
for obj3d, vtobj3d in obj3d_crets:
|
for obj3d, vtobj3d in obj3d_crets:
|
||||||
# set name
|
# set name
|
||||||
@ -314,7 +318,8 @@ def _export_virtools_meshes(
|
|||||||
material_crets: list[_TMaterialPair] = []
|
material_crets: list[_TMaterialPair] = []
|
||||||
material_cret_map: dict[bpy.types.Material, bmap.BMMaterial] = {}
|
material_cret_map: dict[bpy.types.Material, bmap.BMMaterial] = {}
|
||||||
# start saving
|
# start saving
|
||||||
progress.enter_substeps(len(mesh_crets), "Saving Meshes")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Saving Meshes', 'BBP_OT_export_virtools/execute')
|
||||||
|
progress.enter_substeps(len(mesh_crets), tr_text)
|
||||||
|
|
||||||
# iterate meshes
|
# iterate meshes
|
||||||
for obj3d, mesh, vtmesh in mesh_crets:
|
for obj3d, mesh, vtmesh in mesh_crets:
|
||||||
@ -428,7 +433,8 @@ def _export_virtools_materials(
|
|||||||
texture_crets: list[_TTexturePair] = []
|
texture_crets: list[_TTexturePair] = []
|
||||||
texture_cret_map: dict[bpy.types.Image, bmap.BMTexture] = {}
|
texture_cret_map: dict[bpy.types.Image, bmap.BMTexture] = {}
|
||||||
# start saving
|
# start saving
|
||||||
progress.enter_substeps(len(material_crets), "Saving Materials")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Saving Materials', 'BBP_OT_export_virtools/execute')
|
||||||
|
progress.enter_substeps(len(material_crets), tr_text)
|
||||||
|
|
||||||
for mtl, vtmaterial in material_crets:
|
for mtl, vtmaterial in material_crets:
|
||||||
# set name
|
# set name
|
||||||
@ -493,7 +499,8 @@ def _export_virtools_textures(
|
|||||||
texture_crets: tuple[_TTexturePair, ...]
|
texture_crets: tuple[_TTexturePair, ...]
|
||||||
) -> None:
|
) -> None:
|
||||||
# start saving
|
# start saving
|
||||||
progress.enter_substeps(len(texture_crets), "Saving Textures")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Saving Textures', 'BBP_OT_export_virtools/execute')
|
||||||
|
progress.enter_substeps(len(texture_crets), tr_text)
|
||||||
|
|
||||||
for tex, vttexture in texture_crets:
|
for tex, vttexture in texture_crets:
|
||||||
# set name
|
# set name
|
||||||
@ -532,7 +539,8 @@ def _save_virtools_document(
|
|||||||
compress_level: int
|
compress_level: int
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
progress.enter_substeps(1, "Saving Document")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Saving Document', 'BBP_OT_export_virtools/execute')
|
||||||
|
progress.enter_substeps(1, tr_text)
|
||||||
writer.save(file_name, texture_save_opt, use_compress, compress_level)
|
writer.save(file_name, texture_save_opt, use_compress, compress_level)
|
||||||
progress.step()
|
progress.step()
|
||||||
progress.leave_substeps()
|
progress.leave_substeps()
|
||||||
|
@ -80,11 +80,13 @@ def _import_virtools_textures(
|
|||||||
) -> dict[bmap.BMTexture, bpy.types.Image]:
|
) -> dict[bmap.BMTexture, bpy.types.Image]:
|
||||||
# create map
|
# create map
|
||||||
texture_cret_map: dict[bmap.BMTexture, bpy.types.Image] = {}
|
texture_cret_map: dict[bmap.BMTexture, bpy.types.Image] = {}
|
||||||
progress.enter_substeps(reader.get_texture_count(), "Loading Textures")
|
# notify steps
|
||||||
|
tr_text: str = bpy.app.translations.pgettext_rpt('Loading Textures', 'BBP_OT_import_virtools/execute')
|
||||||
|
progress.enter_substeps(reader.get_texture_count(), tr_text)
|
||||||
|
|
||||||
# create another temp folder for raw data virtools texture importing
|
# create another temp folder for raw data virtools texture importing
|
||||||
with tempfile.TemporaryDirectory() as rawdata_temp:
|
with tempfile.TemporaryDirectory() as rawdata_temp:
|
||||||
tr_text: str = bpy.app.translations.pgettext_rpt(
|
tr_text = bpy.app.translations.pgettext_rpt(
|
||||||
'Texture Raw Data Temporary Directory: {0}', 'BBP_OT_import_virtools/execute')
|
'Texture Raw Data Temporary Directory: {0}', 'BBP_OT_import_virtools/execute')
|
||||||
print(tr_text.format(rawdata_temp))
|
print(tr_text.format(rawdata_temp))
|
||||||
|
|
||||||
@ -148,7 +150,9 @@ def _import_virtools_materials(
|
|||||||
) -> dict[bmap.BMMaterial, bpy.types.Material]:
|
) -> dict[bmap.BMMaterial, bpy.types.Material]:
|
||||||
# create map and prepare progress
|
# create map and prepare progress
|
||||||
material_cret_map: dict[bmap.BMMaterial, bpy.types.Material] = {}
|
material_cret_map: dict[bmap.BMMaterial, bpy.types.Material] = {}
|
||||||
progress.enter_substeps(reader.get_material_count(), "Loading Materials")
|
# notify steps
|
||||||
|
tr_text: str = bpy.app.translations.pgettext_rpt('Loading Materials', 'BBP_OT_import_virtools/execute')
|
||||||
|
progress.enter_substeps(reader.get_material_count(), tr_text)
|
||||||
|
|
||||||
for vtmaterial in reader.get_materials():
|
for vtmaterial in reader.get_materials():
|
||||||
# create mtl
|
# create mtl
|
||||||
@ -213,7 +217,9 @@ def _import_virtools_meshes(
|
|||||||
) -> dict[bmap.BMMesh, bpy.types.Mesh]:
|
) -> dict[bmap.BMMesh, bpy.types.Mesh]:
|
||||||
# create map and prepare progress
|
# create map and prepare progress
|
||||||
mesh_cret_map: dict[bmap.BMMesh, bpy.types.Mesh] = {}
|
mesh_cret_map: dict[bmap.BMMesh, bpy.types.Mesh] = {}
|
||||||
progress.enter_substeps(reader.get_mesh_count(), "Loading Meshes")
|
# notify steps
|
||||||
|
tr_text: str = bpy.app.translations.pgettext_rpt('Loading Meshes', 'BBP_OT_import_virtools/execute')
|
||||||
|
progress.enter_substeps(reader.get_mesh_count(), tr_text)
|
||||||
|
|
||||||
for vtmesh in reader.get_meshs():
|
for vtmesh in reader.get_meshs():
|
||||||
# create mesh
|
# create mesh
|
||||||
@ -309,7 +315,9 @@ def _import_virtools_3dobjects(
|
|||||||
) -> dict[bmap.BM3dObject, bpy.types.Object]:
|
) -> dict[bmap.BM3dObject, bpy.types.Object]:
|
||||||
# create map and prepare progress
|
# create map and prepare progress
|
||||||
obj3d_cret_map: dict[bmap.BM3dObject, bpy.types.Object] = {}
|
obj3d_cret_map: dict[bmap.BM3dObject, bpy.types.Object] = {}
|
||||||
progress.enter_substeps(reader.get_3dobject_count(), "Loading 3dObjects")
|
# notify steps
|
||||||
|
tr_text: str = bpy.app.translations.pgettext_rpt('Loading 3dObjects', 'BBP_OT_import_virtools/execute')
|
||||||
|
progress.enter_substeps(reader.get_3dobject_count(), tr_text)
|
||||||
|
|
||||||
for vt3dobj in reader.get_3dobjects():
|
for vt3dobj in reader.get_3dobjects():
|
||||||
# get virtools binding mesh data first
|
# get virtools binding mesh data first
|
||||||
@ -353,7 +361,8 @@ def _import_virtools_lights(
|
|||||||
resolver: UTIL_ioport_shared.ConflictResolver
|
resolver: UTIL_ioport_shared.ConflictResolver
|
||||||
) -> None:
|
) -> None:
|
||||||
# prepare progress
|
# prepare progress
|
||||||
progress.enter_substeps(reader.get_target_light_count(), "Loading Lights")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Loading Lights', 'BBP_OT_import_virtools/execute')
|
||||||
|
progress.enter_substeps(reader.get_target_light_count(), tr_text)
|
||||||
|
|
||||||
# please note light is slightly different between virtools and blender.
|
# please note light is slightly different between virtools and blender.
|
||||||
# in virtools, light is the sub class of 3d entity.
|
# in virtools, light is the sub class of 3d entity.
|
||||||
@ -414,7 +423,8 @@ def _import_virtools_groups(
|
|||||||
sector_count: int = 1
|
sector_count: int = 1
|
||||||
|
|
||||||
# prepare progress
|
# prepare progress
|
||||||
progress.enter_substeps(reader.get_group_count(), "Loading Groups")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Loading Groups', 'BBP_OT_import_virtools/execute')
|
||||||
|
progress.enter_substeps(reader.get_group_count(), tr_text)
|
||||||
|
|
||||||
for vtgroup in reader.get_groups():
|
for vtgroup in reader.get_groups():
|
||||||
# if this group do not have name, skip it
|
# if this group do not have name, skip it
|
||||||
@ -449,7 +459,8 @@ def _import_virtools_groups(
|
|||||||
progress.leave_substeps()
|
progress.leave_substeps()
|
||||||
|
|
||||||
# now we can assign 3dobject group data by reverse map
|
# now we can assign 3dobject group data by reverse map
|
||||||
progress.enter_substeps(len(reverse_map), "Applying Groups")
|
tr_text: str = bpy.app.translations.pgettext_rpt('Applying Groups', 'BBP_OT_import_virtools/execute')
|
||||||
|
progress.enter_substeps(len(reverse_map), tr_text)
|
||||||
for mapk, mapv in reverse_map.items():
|
for mapk, mapv in reverse_map.items():
|
||||||
# check object
|
# check object
|
||||||
assoc_obj = obj3d_cret_map.get(mapk, None)
|
assoc_obj = obj3d_cret_map.get(mapk, None)
|
||||||
|
@ -291,7 +291,9 @@ class VirtoolsGroupConvention():
|
|||||||
int(regex_result.group(1))
|
int(regex_result.group(1))
|
||||||
)
|
)
|
||||||
|
|
||||||
if reporter: reporter.add_error("PC_Checkpoints or PR_Resetpoints detected. But couldn't get sector from name.")
|
tr_text: str = bpy.app.translations.pgettext_rpt(
|
||||||
|
"PC_Checkpoints or PR_Resetpoints detected. But couldn't get sector from name.", 'BBP/UTIL_naming_convension.VirtoolsGroupConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -311,6 +313,9 @@ class VirtoolsGroupConvention():
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def parse_from_object(obj: bpy.types.Object, reporter: RenameErrorReporter | None) -> BallanceObjectInfo | None:
|
def parse_from_object(obj: bpy.types.Object, reporter: RenameErrorReporter | None) -> BallanceObjectInfo | None:
|
||||||
|
# declare translation string type
|
||||||
|
tr_text: str
|
||||||
|
|
||||||
# create visitor
|
# create visitor
|
||||||
with PROP_virtools_group.VirtoolsGroupsHelper(obj) as gp:
|
with PROP_virtools_group.VirtoolsGroupsHelper(obj) as gp:
|
||||||
# if no group, we should consider it is decoration or skylayer
|
# if no group, we should consider it is decoration or skylayer
|
||||||
@ -331,10 +336,14 @@ class VirtoolsGroupConvention():
|
|||||||
# these type's data should be gotten from its name
|
# these type's data should be gotten from its name
|
||||||
return VirtoolsGroupConvention.__get_pcpr_from_name(obj.name, reporter)
|
return VirtoolsGroupConvention.__get_pcpr_from_name(obj.name, reporter)
|
||||||
case _:
|
case _:
|
||||||
if reporter: reporter.add_error("The match of Unique Component lost.")
|
tr_text = bpy.app.translations.pgettext_rpt(
|
||||||
|
"The match of Unique Component lost.", 'BBP/UTIL_naming_convension.VirtoolsGroupConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
elif len(inter_gps) != 0:
|
elif len(inter_gps) != 0:
|
||||||
if reporter: reporter.add_error("A Multi-grouping Unique Component.")
|
tr_text = bpy.app.translations.pgettext_rpt(
|
||||||
|
"A Multi-grouping Unique Component.", 'BBP/UTIL_naming_convension.VirtoolsGroupConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# distinguish normal elements
|
# distinguish normal elements
|
||||||
@ -346,7 +355,9 @@ class VirtoolsGroupConvention():
|
|||||||
gotten_sector: int | None = VirtoolsGroupConvention.__get_sector_from_groups(gp.iterate_groups())
|
gotten_sector: int | None = VirtoolsGroupConvention.__get_sector_from_groups(gp.iterate_groups())
|
||||||
if gotten_sector is None:
|
if gotten_sector is None:
|
||||||
# fail to get sector
|
# fail to get sector
|
||||||
if reporter: reporter.add_error("Component detected. But couldn't get sector from CKGroup data.")
|
tr_text = bpy.app.translations.pgettext_rpt(
|
||||||
|
"Component detected. But couldn't get sector from CKGroup data.", 'BBP/UTIL_naming_convension.VirtoolsGroupConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
return BallanceObjectInfo.create_from_component(
|
return BallanceObjectInfo.create_from_component(
|
||||||
gotten_elements,
|
gotten_elements,
|
||||||
@ -354,7 +365,9 @@ class VirtoolsGroupConvention():
|
|||||||
)
|
)
|
||||||
elif len(inter_gps) != 0:
|
elif len(inter_gps) != 0:
|
||||||
# must be a weird grouping, report it
|
# must be a weird grouping, report it
|
||||||
if reporter: reporter.add_error("A Multi-grouping Component.")
|
tr_text = bpy.app.translations.pgettext_rpt(
|
||||||
|
"A Multi-grouping Component.", 'BBP/UTIL_naming_convension.VirtoolsGroupConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# distinguish road
|
# distinguish road
|
||||||
@ -370,7 +383,9 @@ class VirtoolsGroupConvention():
|
|||||||
elif len(floor_result) == 0 and len(rail_result) > 0:
|
elif len(floor_result) == 0 and len(rail_result) > 0:
|
||||||
return BallanceObjectInfo.create_from_others(BallanceObjectType.WOOD)
|
return BallanceObjectInfo.create_from_others(BallanceObjectType.WOOD)
|
||||||
else:
|
else:
|
||||||
if reporter: reporter.add_warning("Can't distinguish object between Floors and Rails. Suppose it is Floors.")
|
tr_text = bpy.app.translations.pgettext_rpt(
|
||||||
|
"Can't distinguish object between Floors and Rails. Suppose it is Floors.", 'BBP/UTIL_naming_convension.VirtoolsGroupConvention')
|
||||||
|
if reporter: reporter.add_warning(tr_text)
|
||||||
return BallanceObjectInfo.create_from_others(BallanceObjectType.FLOOR)
|
return BallanceObjectInfo.create_from_others(BallanceObjectType.FLOOR)
|
||||||
elif gp.contain_group('Phys_FloorStopper'):
|
elif gp.contain_group('Phys_FloorStopper'):
|
||||||
return BallanceObjectInfo.create_from_others(BallanceObjectType.STOPPER)
|
return BallanceObjectInfo.create_from_others(BallanceObjectType.STOPPER)
|
||||||
@ -378,7 +393,9 @@ class VirtoolsGroupConvention():
|
|||||||
return BallanceObjectInfo.create_from_others(BallanceObjectType.DEPTH_CUBE)
|
return BallanceObjectInfo.create_from_others(BallanceObjectType.DEPTH_CUBE)
|
||||||
|
|
||||||
# no matched
|
# no matched
|
||||||
if reporter: reporter.add_error("Group match lost.")
|
tr_text = bpy.app.translations.pgettext_rpt(
|
||||||
|
"Group match lost.", 'BBP/UTIL_naming_convension.VirtoolsGroupConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -427,8 +444,9 @@ class VirtoolsGroupConvention():
|
|||||||
gp.add_group(build_name_from_sector_index(typing.cast(int, info.mSector)))
|
gp.add_group(build_name_from_sector_index(typing.cast(int, info.mSector)))
|
||||||
|
|
||||||
case _:
|
case _:
|
||||||
if reporter is not None:
|
tr_text: str = bpy.app.translations.pgettext_rpt(
|
||||||
reporter.add_error('No matched info.')
|
"No matched info.", 'BBP/UTIL_naming_convension.VirtoolsGroupConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
@ -480,8 +498,9 @@ class YYCToolchainConvention():
|
|||||||
if name == 'SkyLayer':
|
if name == 'SkyLayer':
|
||||||
return BallanceObjectInfo.create_from_others(BallanceObjectType.SKYLAYER)
|
return BallanceObjectInfo.create_from_others(BallanceObjectType.SKYLAYER)
|
||||||
|
|
||||||
if reporter is not None:
|
tr_text: str = bpy.app.translations.pgettext_rpt(
|
||||||
reporter.add_error("Name match lost.")
|
"Name match lost.", 'BBP/UTIL_naming_convension.YYCToolchainConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
@ -523,8 +542,9 @@ class YYCToolchainConvention():
|
|||||||
info.mComponentType, info.mSector)
|
info.mComponentType, info.mSector)
|
||||||
|
|
||||||
case _:
|
case _:
|
||||||
if reporter is not None:
|
tr_text: str = bpy.app.translations.pgettext_rpt(
|
||||||
reporter.add_error('No matched info.')
|
"No matched info.", 'BBP/UTIL_naming_convension.YYCToolchainConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -586,8 +606,9 @@ class ImengyuConvention():
|
|||||||
if name == 'SkyLayer':
|
if name == 'SkyLayer':
|
||||||
return BallanceObjectInfo.create_from_others(BallanceObjectType.SKYLAYER)
|
return BallanceObjectInfo.create_from_others(BallanceObjectType.SKYLAYER)
|
||||||
|
|
||||||
if reporter is not None:
|
tr_text: str = bpy.app.translations.pgettext_rpt(
|
||||||
reporter.add_error("Name match lost.")
|
"Name match lost.", 'BBP/UTIL_naming_convension.ImengyuConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -631,8 +652,9 @@ class ImengyuConvention():
|
|||||||
)
|
)
|
||||||
|
|
||||||
case _:
|
case _:
|
||||||
if reporter is not None:
|
tr_text: str = bpy.app.translations.pgettext_rpt(
|
||||||
reporter.add_error('No matched info.')
|
"No matched info.", 'BBP/UTIL_naming_convension.ImengyuConvention')
|
||||||
|
if reporter: reporter.add_error(tr_text)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
Loading…
Reference in New Issue
Block a user