forked from bartvdbraak/blender
External image operators.
- use bpy.data.is_saved (was using a workaround from when before this attribute was added) - fixed a bug where editing relative paths could fail.
This commit is contained in:
parent
5132be21d1
commit
3e91de7ffd
@ -16,7 +16,7 @@
|
|||||||
#
|
#
|
||||||
# ##### END GPL LICENSE BLOCK #####
|
# ##### END GPL LICENSE BLOCK #####
|
||||||
|
|
||||||
# <pep8 compliant>
|
# <pep8-80 compliant>
|
||||||
|
|
||||||
import bpy
|
import bpy
|
||||||
from bpy.props import StringProperty
|
from bpy.props import StringProperty
|
||||||
@ -28,7 +28,11 @@ class EditExternally(bpy.types.Operator):
|
|||||||
bl_label = "Image Edit Externally"
|
bl_label = "Image Edit Externally"
|
||||||
bl_options = {'REGISTER'}
|
bl_options = {'REGISTER'}
|
||||||
|
|
||||||
filepath = StringProperty(name="File Path", description="Path to an image file", maxlen=1024, default="")
|
filepath = StringProperty(
|
||||||
|
name="File Path",
|
||||||
|
description="Path to an image file",
|
||||||
|
maxlen=1024,
|
||||||
|
)
|
||||||
|
|
||||||
def _editor_guess(self, context):
|
def _editor_guess(self, context):
|
||||||
import sys
|
import sys
|
||||||
@ -57,10 +61,13 @@ class EditExternally(bpy.types.Operator):
|
|||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
filepath = bpy.path.abspath(self.filepath)
|
filepath = os.path.normpath(bpy.path.abspath(self.filepath))
|
||||||
|
|
||||||
if not os.path.exists(filepath):
|
if not os.path.exists(filepath):
|
||||||
self.report({'ERROR'}, "Image path %r not found, image may be packed or unsaved." % filepath)
|
self.report({'ERROR'},
|
||||||
|
"Image path %r not found, image may be packed or "
|
||||||
|
"unsaved." % filepath)
|
||||||
|
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
cmd = self._editor_guess(context) + [filepath]
|
cmd = self._editor_guess(context) + [filepath]
|
||||||
@ -70,7 +77,10 @@ class EditExternally(bpy.types.Operator):
|
|||||||
except:
|
except:
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
self.report({'ERROR'}, "Image editor not found, please specify in User Preferences > File")
|
self.report({'ERROR'},
|
||||||
|
"Image editor not found, "
|
||||||
|
"please specify in User Preferences > File")
|
||||||
|
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
|
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
@ -104,7 +114,9 @@ class SaveDirty(bpy.types.Operator):
|
|||||||
if "\\" not in filepath and "/" not in filepath:
|
if "\\" not in filepath and "/" not in filepath:
|
||||||
self.report({'WARNING'}, "Invalid path: " + filepath)
|
self.report({'WARNING'}, "Invalid path: " + filepath)
|
||||||
elif filepath in unique_paths:
|
elif filepath in unique_paths:
|
||||||
self.report({'WARNING'}, "Path used by more then one image: " + filepath)
|
self.report({'WARNING'},
|
||||||
|
"Path used by more then one image: %r" %
|
||||||
|
filepath)
|
||||||
else:
|
else:
|
||||||
unique_paths.add(filepath)
|
unique_paths.add(filepath)
|
||||||
image.save()
|
image.save()
|
||||||
@ -142,14 +154,14 @@ class ProjectEdit(bpy.types.Operator):
|
|||||||
|
|
||||||
filepath = os.path.basename(bpy.data.filepath)
|
filepath = os.path.basename(bpy.data.filepath)
|
||||||
filepath = os.path.splitext(filepath)[0]
|
filepath = os.path.splitext(filepath)[0]
|
||||||
# filepath = bpy.path.clean_name(filepath) # fixes <memory> rubbish, needs checking
|
# fixes <memory> rubbish, needs checking
|
||||||
|
# filepath = bpy.path.clean_name(filepath)
|
||||||
|
|
||||||
if filepath.startswith(".") or filepath == "":
|
if bpy.data.is_saved:
|
||||||
# TODO, have a way to check if the file is saved, assume startup.blend
|
filepath = "//" + filepath
|
||||||
|
else:
|
||||||
tmpdir = context.user_preferences.filepaths.temporary_directory
|
tmpdir = context.user_preferences.filepaths.temporary_directory
|
||||||
filepath = os.path.join(tmpdir, "project_edit")
|
filepath = os.path.join(tmpdir, "project_edit")
|
||||||
else:
|
|
||||||
filepath = "//" + filepath
|
|
||||||
|
|
||||||
obj = context.object
|
obj = context.object
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user