Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release/scripts/startup/bl_operators/object.py29
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py4
2 files changed, 33 insertions, 0 deletions
diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py
index 30a9943df71..98d3d0c8c6d 100644
--- a/release/scripts/startup/bl_operators/object.py
+++ b/release/scripts/startup/bl_operators/object.py
@@ -869,12 +869,41 @@ class DupliOffsetFromCursor(Operator):
return {'FINISHED'}
+class LoadImageAsEmpty(Operator):
+ """Select an image file and create a new image empty with it"""
+ bl_idname = "object.load_image_as_empty"
+ bl_label = "Load Image as Empty"
+ bl_options = {'REGISTER'}
+
+ filepath: StringProperty(
+ subtype='FILE_PATH'
+ )
+
+ filter_image: BoolProperty(default=True, options={'HIDDEN', 'SKIP_SAVE'})
+ filter_folder: BoolProperty(default=True, options={'HIDDEN', 'SKIP_SAVE'})
+
+ def invoke(self, context, event):
+ context.window_manager.fileselect_add(self)
+ return {'RUNNING_MODAL'}
+
+ def execute(self, context):
+ try:
+ image = bpy.data.images.load(self.filepath, check_existing=True)
+ except RuntimeError:
+ self.report({"ERROR"}, "cannot load image")
+ return {"CANCELLED"}
+
+ bpy.ops.object.empty_add(type='IMAGE', location=context.scene.cursor_location)
+ context.active_object.data = image
+ return {'FINISHED'}
+
classes = (
ClearAllRestrictRender,
DupliOffsetFromCursor,
IsolateTypeRender,
JoinUVs,
+ LoadImageAsEmpty,
MakeDupliFace,
SelectCamera,
SelectHierarchy,
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 328ed854044..898f22a8ca9 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -1518,6 +1518,10 @@ class VIEW3D_MT_add(Menu):
layout.menu("VIEW3D_MT_armature_add", icon='OUTLINER_OB_ARMATURE')
layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE'
layout.operator_menu_enum("object.empty_add", "type", text="Empty", icon='OUTLINER_OB_EMPTY')
+
+ sublayout = layout.column()
+ sublayout.operator_context = 'INVOKE_DEFAULT'
+ sublayout.operator("object.load_image_as_empty", text="Image", icon="IMAGE_DATA")
layout.separator()
layout.operator("object.speaker_add", text="Speaker", icon='OUTLINER_OB_SPEAKER')