Import images: add file handler #105274

Merged
Damien Picard merged 2 commits from pioverfour/blender-addons:dp_image_as_plane_file_handler into main 2024-04-10 10:13:45 +02:00
Showing only changes of commit 2c11dcde23 - Show all commits

View File

@ -45,6 +45,7 @@ from bpy_extras.object_utils import (
) )
from bpy_extras.image_utils import load_image from bpy_extras.image_utils import load_image
from bpy_extras.io_utils import ImportHelper
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Module-level Shared State # Module-level Shared State
@ -594,7 +595,7 @@ def setup_compositing(context, plane, img_spec):
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Operator # Operator
class IMPORT_IMAGE_OT_to_plane(Operator, AddObjectHelper): class IMPORT_IMAGE_OT_to_plane(Operator, AddObjectHelper, ImportHelper):
"""Create mesh plane(s) from image files with the appropriate aspect ratio""" """Create mesh plane(s) from image files with the appropriate aspect ratio"""
bl_idname = "import_image.to_plane" bl_idname = "import_image.to_plane"
@ -919,9 +920,7 @@ class IMPORT_IMAGE_OT_to_plane(Operator, AddObjectHelper):
self.report({'WARNING'}, self.report({'WARNING'},
tip_("Generating Cycles/EEVEE compatible material, but won't be visible with %s engine") % engine) tip_("Generating Cycles/EEVEE compatible material, but won't be visible with %s engine") % engine)
# Open file browser return self.invoke_popup(context)
context.window_manager.fileselect_add(self)
return {'RUNNING_MODAL'}
def execute(self, context): def execute(self, context):
if not bpy.data.is_saved: if not bpy.data.is_saved:
@ -1225,6 +1224,18 @@ class IMPORT_IMAGE_OT_to_plane(Operator, AddObjectHelper):
constraint.lock_axis = 'LOCK_Y' constraint.lock_axis = 'LOCK_Y'
class IMPORT_IMAGE_FH_to_plane(bpy.types.FileHandler):
bl_idname = "IMPORT_IMAGE_FH_to_plane"
bl_label = "File handler for images as planes import"
bl_import_operator = "import_image.to_plane"
bl_file_extensions = ";".join(bpy.path.extensions_image.union(bpy.path.extensions_movie))
@classmethod
def poll_drop(cls, context):
return (context.region and context.region.type == 'WINDOW'
and context.area and context.area.ui_type == 'VIEW_3D')
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------
# Register # Register
@ -1234,6 +1245,7 @@ def import_images_button(self, context):
classes = ( classes = (
IMPORT_IMAGE_OT_to_plane, IMPORT_IMAGE_OT_to_plane,
IMPORT_IMAGE_FH_to_plane,
) )