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

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Lovato <nathan@gdquest.com>2020-02-09 04:59:08 +0300
committerNathan Lovato <nathan@gdquest.com>2020-02-13 18:19:35 +0300
commitcf9fde2568aa81197d0f36019ee429880430906d (patch)
treeb74875c507001fa41ca979bc689cfd4a0dee0f13 /power_sequencer/addon_preferences.py
parent47d56e88240dc330e9173c668f1ee9fee39fb36c (diff)
power_sequencer: update to the latest master
This commit brings Power Sequencer to the current rolling version, that is commit 9562eb58d164e234f61225250d6ac5ca858ada7b on https://github.com/GDQuest/blender-power-sequencer/. I had already made an intermediate commit that added new features and fixed some bugs. This commit brings bug fixes and many quality of life improvements. - Human-readable changelog: https://github.com/GDQuest/blender-power-sequencer/blob/master/CHANGELOG.md - 1.4.0 release post: https://github.com/GDQuest/blender-power-sequencer/releases/tag/1.4.0 - All the commits since v1.3.0 (previous update + this one in this repository): https://github.com/GDQuest/blender-power-sequencer/compare/1.3.0...master
Diffstat (limited to 'power_sequencer/addon_preferences.py')
-rw-r--r--power_sequencer/addon_preferences.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/power_sequencer/addon_preferences.py b/power_sequencer/addon_preferences.py
index 0e8e7d71..fcc67e9c 100644
--- a/power_sequencer/addon_preferences.py
+++ b/power_sequencer/addon_preferences.py
@@ -17,12 +17,16 @@
"""
Add-on preferences and interface in the Blender preferences window.
"""
+import subprocess
+
import bpy
+from bpy.props import BoolProperty, StringProperty
def get_preferences(context):
return context.preferences.addons[__package__].preferences
+
class PowerSequencerPreferences(bpy.types.AddonPreferences):
bl_idname = __package__
@@ -31,6 +35,32 @@ class PowerSequencerPreferences(bpy.types.AddonPreferences):
proxy_75: bpy.props.BoolProperty(name="75%", default=False)
proxy_100: bpy.props.BoolProperty(name="100%", default=False)
+ # Code adapted from Krzysztof TrzciƄski's work
+ ffmpeg_executable: StringProperty(
+ name="Path to ffmpeg executable",
+ default="",
+ update=lambda self, context: self.update_ffmpeg_executable(context),
+ subtype="FILE_PATH",
+ )
+ ffmpeg_status: StringProperty(default="")
+ ffmpeg_is_executable_valid: BoolProperty(default=False)
+
+ def update_ffmpeg_executable(self, context):
+ error_message, info = self._try_run_ffmpeg(self.ffmpeg_executable)
+ self.ffmpeg_is_executable_valid = error_message == ""
+ self.ffmpeg_status = error_message if error_message != "" else info
+
+ def _try_run_ffmpeg(self, path):
+ """Runs ffmpeg -version, and returns an error message if it failed"""
+ error_message, info = "", ""
+ try:
+ info: str = subprocess.check_output([path, "-version"]).decode("utf-8")
+ info = info[:info.find("Copyright")]
+ print(info)
+ except (OSError, subprocess.CalledProcessError):
+ error_message = "Path `{}` is not a valid ffmpeg executable".format(path)
+ return error_message, info
+
def draw(self, context):
layout = self.layout
@@ -42,6 +72,16 @@ class PowerSequencerPreferences(bpy.types.AddonPreferences):
row.prop(self, "proxy_75")
row.prop(self, "proxy_100")
+ text = [
+ "(Optional) FFMpeg executable to use for multithread renders and proxy generation. "
+ "Use this to render with a version of ffmpeg that's not on your system's PATH variable."
+ ]
+ for line in text:
+ layout.label(text=line)
+ layout.prop(self, "ffmpeg_executable")
+ icon = "INFO" if self.ffmpeg_is_executable_valid else "ERROR"
+ layout.label(text=self.ffmpeg_status, icon=icon)
+
register_preferences, unregister_preferences = bpy.utils.register_classes_factory(
[PowerSequencerPreferences]