diff --git a/scripts/addons_core/io_curve_svg/__init__.py b/scripts/addons_core/io_curve_svg/__init__.py index e7cd30a5f52..bf06973c517 100644 --- a/scripts/addons_core/io_curve_svg/__init__.py +++ b/scripts/addons_core/io_curve_svg/__init__.py @@ -29,7 +29,10 @@ from bpy.props import ( StringProperty, CollectionProperty ) -from bpy_extras.io_utils import ImportHelper +from bpy_extras.io_utils import ( + ImportHelper, + poll_file_object_drop, +) class ImportSVG(bpy.types.Operator, ImportHelper): @@ -41,20 +44,25 @@ class ImportSVG(bpy.types.Operator, ImportHelper): filename_ext = ".svg" filter_glob: StringProperty(default="*.svg", options={'HIDDEN'}) + directory: StringProperty(subtype='DIR_PATH', options={'SKIP_SAVE', 'HIDDEN'}) files: CollectionProperty( name="File Path", type=bpy.types.OperatorFileListElement, ) + def invoke(self, context, event): + if self.properties.is_property_set("filepath"): + return self.execute(context) + context.window_manager.fileselect_add(self) + return {'RUNNING_MODAL'} def execute(self, context): from . import import_svg if self.files: ret = {'CANCELLED'} - dirname = os.path.dirname(self.filepath) for file in self.files: - path = os.path.join(dirname, file.name) + path = os.path.join(self.directory, file.name) if import_svg.load(self, context, filepath=path) == {'FINISHED'}: ret = {'FINISHED'} return ret @@ -62,20 +70,38 @@ class ImportSVG(bpy.types.Operator, ImportHelper): return import_svg.load(self, context, filepath=self.filepath) +class IO_FH_svg_as_curves(bpy.types.FileHandler): + bl_idname = "IO_FH_svg_as_curves" + bl_label = "SVG as Curves" + bl_import_operator = "import_curve.svg" + bl_file_extensions = ".svg" + + @classmethod + def poll_drop(cls, context): + return poll_file_object_drop(context) + def menu_func_import(self, context): self.layout.operator(ImportSVG.bl_idname, text="Scalable Vector Graphics (.svg)") +classes = [ + ImportSVG, + IO_FH_svg_as_curves, +] + + def register(): - bpy.utils.register_class(ImportSVG) + for cls in classes: + bpy.utils.register_class(cls) bpy.types.TOPBAR_MT_file_import.append(menu_func_import) def unregister(): - bpy.utils.unregister_class(ImportSVG) + for cls in classes: + bpy.utils.unregister_class(cls) bpy.types.TOPBAR_MT_file_import.remove(menu_func_import)