fix: add error report for invalid file path when importing or exporting virtools file.
- add error report for invalid file path when importing or exporting virtools to avoid BMapException was thrown. Reported by SongRui
This commit is contained in:
@ -44,10 +44,16 @@ class BBP_OT_export_virtools(bpy.types.Operator, UTIL_file_browser.ExportVirtool
|
|||||||
self.report({'ERROR'}, 'You must specify at least one encoding for file saving (e.g. cp1252, gbk)!')
|
self.report({'ERROR'}, 'You must specify at least one encoding for file saving (e.g. cp1252, gbk)!')
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
# check file name
|
||||||
|
filename = self.general_get_filename()
|
||||||
|
if not os.path.isfile(filename):
|
||||||
|
self.report({'ERROR'}, 'No file was selected!')
|
||||||
|
return {'CANCELLED'}
|
||||||
|
|
||||||
# start exporting
|
# start exporting
|
||||||
with UTIL_ioport_shared.ExportEditModeBackup() as editmode_guard:
|
with UTIL_ioport_shared.ExportEditModeBackup() as editmode_guard:
|
||||||
_export_virtools(
|
_export_virtools(
|
||||||
self.general_get_filename(),
|
filename,
|
||||||
encodings,
|
encodings,
|
||||||
texture_save_opt,
|
texture_save_opt,
|
||||||
self.general_get_use_compress(),
|
self.general_get_use_compress(),
|
||||||
@ -74,7 +80,7 @@ _TTexturePair = tuple[bpy.types.Image, bmap.BMTexture]
|
|||||||
|
|
||||||
def _export_virtools(
|
def _export_virtools(
|
||||||
file_name_: str,
|
file_name_: str,
|
||||||
encodings_: tuple[str],
|
encodings_: tuple[str, ...],
|
||||||
texture_save_opt_: UTIL_virtools_types.CK_TEXTURE_SAVEOPTIONS,
|
texture_save_opt_: UTIL_virtools_types.CK_TEXTURE_SAVEOPTIONS,
|
||||||
use_compress_: bool,
|
use_compress_: bool,
|
||||||
compress_level_: int,
|
compress_level_: int,
|
||||||
|
@ -32,8 +32,14 @@ class BBP_OT_import_virtools(bpy.types.Operator, UTIL_file_browser.ImportVirtool
|
|||||||
self.report({'ERROR'}, 'You must specify at least one encoding for file loading (e.g. cp1252, gbk)!')
|
self.report({'ERROR'}, 'You must specify at least one encoding for file loading (e.g. cp1252, gbk)!')
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
|
# check file name
|
||||||
|
filename = self.general_get_filename()
|
||||||
|
if not os.path.isfile(filename):
|
||||||
|
self.report({'ERROR'}, 'No file was selected!')
|
||||||
|
return {'CANCELLED'}
|
||||||
|
|
||||||
_import_virtools(
|
_import_virtools(
|
||||||
self.general_get_filename(),
|
filename,
|
||||||
encodings,
|
encodings,
|
||||||
self.general_get_conflict_resolver()
|
self.general_get_conflict_resolver()
|
||||||
)
|
)
|
||||||
@ -46,7 +52,7 @@ class BBP_OT_import_virtools(bpy.types.Operator, UTIL_file_browser.ImportVirtool
|
|||||||
self.draw_virtools_params(context, layout, True)
|
self.draw_virtools_params(context, layout, True)
|
||||||
self.draw_ballance_params(layout, True)
|
self.draw_ballance_params(layout, True)
|
||||||
|
|
||||||
def _import_virtools(file_name_: str, encodings_: tuple[str], resolver: UTIL_ioport_shared.ConflictResolver) -> None:
|
def _import_virtools(file_name_: str, encodings_: tuple[str, ...], resolver: UTIL_ioport_shared.ConflictResolver) -> None:
|
||||||
# create temp folder
|
# create temp folder
|
||||||
with tempfile.TemporaryDirectory() as vt_temp_folder:
|
with tempfile.TemporaryDirectory() as vt_temp_folder:
|
||||||
tr_text: str = bpy.app.translations.pgettext_rpt(
|
tr_text: str = bpy.app.translations.pgettext_rpt(
|
||||||
|
Reference in New Issue
Block a user