43 lines
1.5 KiB
Python
43 lines
1.5 KiB
Python
import bpy
|
|
from . import UTIL_functions
|
|
from . import PROP_virtools_material, PROP_preferences
|
|
|
|
class BBP_OT_fix_all_material(bpy.types.Operator):
|
|
"""Fix All Materials by Its Referred Ballance Texture Name."""
|
|
bl_idname = "bbp.fix_all_material"
|
|
bl_label = "Fix All Materials"
|
|
bl_options = {'UNDO'}
|
|
bl_translation_context = 'BBP_OT_fix_all_material'
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
# only enable this when plugin have a valid ballance texture folder
|
|
# and we are in object mode
|
|
return PROP_preferences.get_raw_preferences().has_valid_blc_tex_folder() and UTIL_functions.is_in_object_mode()
|
|
|
|
def invoke(self, context, event):
|
|
wm = context.window_manager
|
|
return wm.invoke_confirm(self, event)
|
|
|
|
def execute(self, context):
|
|
# do work and count
|
|
counter_all: int = 0
|
|
counter_suc: int = 0
|
|
for mtl in bpy.data.materials:
|
|
counter_all += 1
|
|
if PROP_virtools_material.fix_material(mtl):
|
|
PROP_virtools_material.apply_to_blender_material(mtl)
|
|
counter_suc += 1
|
|
|
|
# report and return
|
|
tr_text: str = bpy.app.translations.pgettext_rpt(
|
|
'Fix {0}/{1} materials.', 'BBP_OT_fix_all_material/draw')
|
|
self.report({'INFO'}, tr_text.format(counter_suc, counter_all))
|
|
return {'FINISHED'}
|
|
|
|
def register() -> None:
|
|
bpy.utils.register_class(BBP_OT_fix_all_material)
|
|
|
|
def unregister() -> None:
|
|
bpy.utils.unregister_class(BBP_OT_fix_all_material)
|