[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27310] trunk/blender: image editor user preference.

Campbell Barton ideasman42 at gmail.com
Sun Mar 7 10:23:58 CET 2010


Revision: 27310
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27310
Author:   campbellbarton
Date:     2010-03-07 10:23:57 +0100 (Sun, 07 Mar 2010)

Log Message:
-----------
image editor user preference.

image.py has a function image_editor_guess(), please test on windows and mac. (using 'startfile' and 'open')
this is only used when the image editor is not set.

Modified Paths:
--------------
    trunk/blender/release/scripts/op/image.py
    trunk/blender/release/scripts/op/screen_play_rendered_anim.py
    trunk/blender/release/scripts/ui/space_userpref.py
    trunk/blender/source/blender/makesdna/DNA_userdef_types.h
    trunk/blender/source/blender/makesrna/intern/rna_userdef.c

Modified: trunk/blender/release/scripts/op/image.py
===================================================================
--- trunk/blender/release/scripts/op/image.py	2010-03-07 09:13:17 UTC (rev 27309)
+++ trunk/blender/release/scripts/op/image.py	2010-03-07 09:23:57 UTC (rev 27310)
@@ -19,10 +19,26 @@
 # <pep8 compliant>
 
 import bpy
-import sys as py_sys
-platform = py_sys.platform
 
 
+def image_editor_guess(context):
+    image_editor = context.user_preferences.filepaths.image_editor
+
+    # use image editor in the preferences when available.
+    if not image_editor:
+        import platform
+        system = platform.system()
+
+        if system == 'Windows':
+            image_editor = "startfile" # not tested!
+        elif system == 'Darwin':
+            image_editor = "open"
+        else:
+            image_editor = "gimp"
+
+    return image_editor
+
+
 class SaveDirty(bpy.types.Operator):
     '''Select object matching a naming pattern'''
     bl_idname = "image.save_dirty"
@@ -44,25 +60,21 @@
         return {'FINISHED'}
 
 
-_proj_hack = [""]
 class ProjectEdit(bpy.types.Operator):
     '''Select object matching a naming pattern'''
     bl_idname = "image.project_edit"
     bl_label = "Project Edit"
     bl_options = {'REGISTER'}
+    
+    _proj_hack = [""]
 
     def execute(self, context):
         import os
         import subprocess
 
         EXT = "tga" # until we have a way to save as another format!
-        if platform == 'win32':
-            EDITOR = "C:\\Program Files\\GIMP-2.7\\bin\\gimp-2.7.exe"
-        elif platform == 'darwin':
-            EDITOR = "open"
-        else:
-            EDITOR = "gimp" # until we have a way to set a default image edior            
-        
+        image_editor = image_editor_guess(context)
+
         for image in bpy.data.images:
             image.tag = True
 
@@ -99,12 +111,12 @@
             i += 1
         
         image_new.name = os.path.basename(filename_final)
-        _proj_hack[0] = image_new.name
+        ProjectEdit._proj_hack[0] = image_new.name
         
         image_new.filename_raw = filename_final # TODO, filename raw is crummy
         image_new.save()
         
-        subprocess.Popen([EDITOR, bpy.utils.expandpath(filename_final)])
+        subprocess.Popen([image_editor, bpy.utils.expandpath(filename_final)])
         
         return {'FINISHED'}
 
@@ -116,10 +128,10 @@
     bl_options = {'REGISTER'}
 
     def execute(self, context):
-        image_name = _proj_hack[0] # TODO, deal with this nicer
+        image_name = ProjectEdit._proj_hack[0] # TODO, deal with this nicer
 
         try:
-            image = bpy.data.images[_proj_hack[0]]
+            image = bpy.data.images[image_name]
         except KeyError:
             self.report({'ERROR'}, "Could not find image '%s'" % image_name)
             return {'CANCELLED'}

Modified: trunk/blender/release/scripts/op/screen_play_rendered_anim.py
===================================================================
--- trunk/blender/release/scripts/op/screen_play_rendered_anim.py	2010-03-07 09:13:17 UTC (rev 27309)
+++ trunk/blender/release/scripts/op/screen_play_rendered_anim.py	2010-03-07 09:23:57 UTC (rev 27310)
@@ -30,13 +30,14 @@
 
 def guess_player_path(preset):
     import platform
+    system = platform.system()
 
     if preset == 'BLENDER24':
         player_path = "blender"
 
-        if platform.system() == 'Darwin':
+        if system == 'Darwin':
             test_path = "/Applications/blender 2.49.app/Contents/MacOS/blender"
-        elif platform.system() == 'Windows':
+        elif system == 'Windows':
             test_path = "/Program Files/Blender Foundation/Blender/blender.exe"
 
             if os.path.exists(test_path):
@@ -45,7 +46,7 @@
     elif preset == 'DJV':
         player_path = "djv_view"
 
-        if platform.system() == 'Darwin':
+        if system == 'Darwin':
             test_path = '/Applications/djv-0.8.2.app/Contents/Resources/bin/djv_view'
             if os.path.exists(test_path):
                 player_path = test_path

Modified: trunk/blender/release/scripts/ui/space_userpref.py
===================================================================
--- trunk/blender/release/scripts/ui/space_userpref.py	2010-03-07 09:13:17 UTC (rev 27309)
+++ trunk/blender/release/scripts/ui/space_userpref.py	2010-03-07 09:23:57 UTC (rev 27310)
@@ -1004,6 +1004,7 @@
         sub.label(text="Scripts:")
         sub.label(text="Sounds:")
         sub.label(text="Temp:")
+        sub.label(text="Image Editor:")
         sub.label(text="Animation Player:")
 
         sub = col1.column()
@@ -1015,6 +1016,7 @@
         sub.prop(paths, "python_scripts_directory", text="")
         sub.prop(paths, "sounds_directory", text="")
         sub.prop(paths, "temporary_directory", text="")
+        sub.prop(paths, "image_editor", text="")
         subsplit = sub.split(percentage=0.3)
         subsplit.prop(paths, "animation_player_preset", text="")
         subsplit.prop(paths, "animation_player", text="")

Modified: trunk/blender/source/blender/makesdna/DNA_userdef_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_userdef_types.h	2010-03-07 09:13:17 UTC (rev 27309)
+++ trunk/blender/source/blender/makesdna/DNA_userdef_types.h	2010-03-07 09:23:57 UTC (rev 27310)
@@ -297,6 +297,7 @@
 	char plugseqdir[160];
 	char pythondir[160];
 	char sounddir[160];
+	char image_editor[240];	// FILE_MAX length
 	char anim_player[240];	// FILE_MAX length
 	int anim_player_preset;
 	

Modified: trunk/blender/source/blender/makesrna/intern/rna_userdef.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_userdef.c	2010-03-07 09:13:17 UTC (rev 27309)
+++ trunk/blender/source/blender/makesrna/intern/rna_userdef.c	2010-03-07 09:23:57 UTC (rev 27310)
@@ -2624,6 +2624,10 @@
 	prop= RNA_def_property(srna, "temporary_directory", PROP_STRING, PROP_DIRPATH);
 	RNA_def_property_string_sdna(prop, NULL, "tempdir");
 	RNA_def_property_ui_text(prop, "Temporary Directory", "The directory for storing temporary save files");
+
+	prop= RNA_def_property(srna, "image_editor", PROP_STRING, PROP_DIRPATH);
+	RNA_def_property_string_sdna(prop, NULL, "image_editor");
+	RNA_def_property_ui_text(prop, "Image Editor", "Path to an image editor");
 	
 	prop= RNA_def_property(srna, "animation_player", PROP_STRING, PROP_DIRPATH);
 	RNA_def_property_string_sdna(prop, NULL, "anim_player");





More information about the Bf-blender-cvs mailing list