[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4162] trunk/py/scripts/addons/ render_povray: add userprefs for povray binary location.
Campbell Barton
ideasman42 at gmail.com
Mon Jan 14 11:55:00 CET 2013
Revision: 4162
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4162
Author: campbellbarton
Date: 2013-01-14 10:54:57 +0000 (Mon, 14 Jan 2013)
Log Message:
-----------
add userprefs for povray binary location.
Modified Paths:
--------------
trunk/py/scripts/addons/render_povray/__init__.py
trunk/py/scripts/addons/render_povray/render.py
Modified: trunk/py/scripts/addons/render_povray/__init__.py
===================================================================
--- trunk/py/scripts/addons/render_povray/__init__.py 2013-01-14 10:22:23 UTC (rev 4161)
+++ trunk/py/scripts/addons/render_povray/__init__.py 2013-01-14 10:54:57 UTC (rev 4162)
@@ -40,6 +40,9 @@
else:
import bpy
+ from bpy.types import (AddonPreferences,
+ PropertyGroup,
+ )
from bpy.props import (StringProperty,
BoolProperty,
IntProperty,
@@ -57,7 +60,7 @@
###############################################################################
# Scene POV properties.
###############################################################################
-class RenderPovSettingsScene(bpy.types.PropertyGroup):
+class RenderPovSettingsScene(PropertyGroup):
# File Options
tempfiles_enable = BoolProperty(
name="Enable Tempfiles",
@@ -290,7 +293,7 @@
###############################################################################
# Material POV properties.
###############################################################################
-class RenderPovSettingsMaterial(bpy.types.PropertyGroup):
+class RenderPovSettingsMaterial(PropertyGroup):
irid_enable = BoolProperty(
name="Enable Iridescence",
description="Newton's thin film interference (like an oil slick on a puddle of "
@@ -393,7 +396,7 @@
###############################################################################
# Texture POV properties.
###############################################################################
-class RenderPovSettingsTexture(bpy.types.PropertyGroup):
+class RenderPovSettingsTexture(PropertyGroup):
#Custom texture gamma
tex_gamma_enable = BoolProperty(
name="Enable custom texture gamma",
@@ -419,7 +422,7 @@
###############################################################################
# Object POV properties.
###############################################################################
-class RenderPovSettingsObject(bpy.types.PropertyGroup):
+class RenderPovSettingsObject(PropertyGroup):
# Importance sampling
importance_value = FloatProperty(
name="Radiosity Importance",
@@ -456,7 +459,7 @@
###############################################################################
# Camera POV properties.
###############################################################################
-class RenderPovSettingsCamera(bpy.types.PropertyGroup):
+class RenderPovSettingsCamera(PropertyGroup):
#DOF Toggle
dof_enable = BoolProperty(
name="Depth Of Field", description="EnablePOV-Ray Depth Of Field ",
@@ -504,13 +507,29 @@
###############################################################################
# Text POV properties.
###############################################################################
-class RenderPovSettingsText(bpy.types.PropertyGroup):
+class RenderPovSettingsText(PropertyGroup):
custom_code = BoolProperty(
name="Custom Code",
description="Add this text at the top of the exported POV-Ray file",
default=False)
+###############################################################################
+# Povray Preferences.
+###############################################################################
+class PovrayPreferences(AddonPreferences):
+ bl_idname = __name__
+
+ filepath_povray = StringProperty(
+ name="Povray Location",
+ description="Path to renderer executable",
+ subtype='FILE_PATH',
+ )
+ def draw(self, context):
+ layout = self.layout
+ layout.prop(self, "filepath_povray")
+
+
def register():
bpy.utils.register_module(__name__)
Modified: trunk/py/scripts/addons/render_povray/render.py
===================================================================
--- trunk/py/scripts/addons/render_povray/render.py 2013-01-14 10:22:23 UTC (rev 4161)
+++ trunk/py/scripts/addons/render_povray/render.py 2013-01-14 10:54:57 UTC (rev 4162)
@@ -2042,6 +2042,7 @@
write_pov(self._temp_file_in, scene, info_callback)
def _render(self, scene):
+ addon_prefs = bpy.context.user_preferences.addons[__package__].preferences
try:
os.remove(self._temp_file_out) # so as not to load the old file
@@ -2052,7 +2053,16 @@
print ("***-STARTING-***")
- pov_binary = "povray"
+ # Use the system preference if its set.
+ pov_binary = addon_prefs.filepath_povray
+ pov_binary_default = "povray"
+ if pov_binary:
+ pov_binary_found = os.path.exists(pov_binary)
+ else:
+ pov_binary = pov_binary_default
+ pov_binary_found = False
+
+
extra_args = []
@@ -2079,7 +2089,8 @@
# 64 bits blender
if bitness == 64:
try:
- pov_binary = winreg.QueryValueEx(regKey, "Home")[0] + "\\bin\\pvengine64"
+ if not pov_binary_found:
+ pov_binary = winreg.QueryValueEx(regKey, "Home")[0] + "\\bin\\pvengine64"
self._process = subprocess.Popen(
[pov_binary, self._temp_file_ini] + extra_args,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
@@ -2089,7 +2100,8 @@
except OSError:
# someone might run povray 32 bits on a 64 bits blender machine
try:
- pov_binary = winreg.QueryValueEx(regKey, "Home")[0] + "\\bin\\pvengine"
+ if not pov_binary_found:
+ pov_binary = winreg.QueryValueEx(regKey, "Home")[0] + "\\bin\\pvengine"
self._process = subprocess.Popen(
[pov_binary, self._temp_file_ini] + extra_args,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
@@ -2116,7 +2128,8 @@
#32 bits blender
else:
try:
- pov_binary = winreg.QueryValueEx(regKey, "Home")[0] + "\\bin\\pvengine"
+ if not pov_binary_found:
+ pov_binary = winreg.QueryValueEx(regKey, "Home")[0] + "\\bin\\pvengine"
self._process = subprocess.Popen(
[pov_binary, self._temp_file_ini] + extra_args,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
@@ -2124,7 +2137,8 @@
# someone might also run povray 64 bits with a 32 bits build of blender.
except OSError:
try:
- pov_binary = winreg.QueryValueEx(regKey, "Home")[0] + "\\bin\\pvengine64"
+ if not pov_binary_found:
+ pov_binary = winreg.QueryValueEx(regKey, "Home")[0] + "\\bin\\pvengine64"
self._process = subprocess.Popen(
[pov_binary, self._temp_file_ini] + extra_args,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
@@ -2153,21 +2167,24 @@
# DH - added -d option to prevent render window popup which leads to segfault on linux
extra_args.append("-d")
- isExists = False
- sysPathList = os.getenv("PATH").split(':')
- sysPathList.append("")
+ if not pov_binary_found:
+ pov_binary_found = False
+ sysPathList = os.getenv("PATH").split(':')
+ sysPathList.append("")
- for dirName in sysPathList:
- if (os.path.exists(os.path.join(dirName, pov_binary))):
- isExists = True
- break
+ for dirName in sysPathList:
+ fn = os.path.join(dirName, pov_binary_default)
+ if os.path.exists(fn):
+ pov_binary = fn
+ pov_binary_found = True
+ break
- if not isExists:
- print("POV-Ray 3.7: could not found execute '%s' - not if PATH" % pov_binary)
- import traceback
- traceback.print_exc()
- print ("***-DONE-***")
- return False
+ if not pov_binary_found:
+ print("POV-Ray 3.7: could not found execute '%s' - not if PATH" % pov_binary)
+ import traceback
+ traceback.print_exc()
+ print ("***-DONE-***")
+ return False
try:
self._process = subprocess.Popen([pov_binary, self._temp_file_ini] + extra_args,
More information about the Bf-extensions-cvs
mailing list