Skip to content

Commit

Permalink
Custom render display types #78
Browse files Browse the repository at this point in the history
  • Loading branch information
p2or authored Jan 28, 2024
1 parent cf7ae28 commit ee78f51
Showing 1 changed file with 35 additions and 15 deletions.
50 changes: 35 additions & 15 deletions loom.py
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,22 @@ class LOOM_AP_preferences(bpy.types.AddonPreferences):
name="Index",
default=0)

render_presets_path: bpy.props.StringProperty(
subtype = "FILE_PATH",
default = bpy.utils.user_resource(
'SCRIPTS',
path=os.path.join("presets", "loom", "render_presets")))

render_display_type: bpy.props.EnumProperty(
name="Render Display Type",
description="Location where rendered images will be displayed to",
items=[ ('NONE', "Keep User Interface", ""),
('AREA', "Image Editor", ""),
('WINDOW', "New Window", "")
],
default='WINDOW'
)

display_general: bpy.props.BoolProperty(
default=True)

Expand All @@ -471,12 +487,6 @@ class LOOM_AP_preferences(bpy.types.AddonPreferences):

display_hotkeys: bpy.props.BoolProperty(
default=True)

render_presets_path: bpy.props.StringProperty(
subtype = "FILE_PATH",
default = bpy.utils.user_resource(
'SCRIPTS',
path=os.path.join("presets", "loom", "render_presets")))

def draw_state(self, prop):
return 'RADIOBUT_OFF' if not prop else 'RADIOBUT_ON'
Expand Down Expand Up @@ -1243,7 +1253,6 @@ def draw(self, context):
lum = scn.loom
prefs = context.preferences.addons[__name__].preferences
layout = self.layout #layout.label(text="Render Image Sequence")
pref_view = context.preferences.view
split_factor = .17

split = layout.split(factor=split_factor)
Expand All @@ -1265,7 +1274,7 @@ def draw(self, context):
col = split.column(align=True)
sub = col.row(align=True)
sub.active = not lum.command_line
sub.prop(pref_view, "render_display_type", text="")
sub.prop(prefs, "render_display_type", text="") #context.preferences.view
sub.prop(scn.render, "use_lock_interface", icon_only=True)

row = layout.row(align=True)
Expand Down Expand Up @@ -3680,7 +3689,7 @@ class LOOM_OT_render_image_sequence(bpy.types.Operator):
_rendered_frames, _skipped_frames = [], []
_timer = _frames = _stop = _rendering = _dec = _log = None
_output_path = _folder = _filename = _extension = None
_subframe_flag = False
_subframe_flag = _temp_display_type = False
_output_nodes = {}

@classmethod
Expand Down Expand Up @@ -3847,8 +3856,9 @@ def final_report(self):

def execute(self, context):
scn = context.scene
prefs = context.preferences.addons[__name__].preferences
glob_vars = prefs.global_variable_coll
prefs = context.preferences
loom_prefs = prefs.addons[__name__].preferences
glob_vars = loom_prefs.global_variable_coll

""" Filter user input """
self._frames = filter_frames(self.frames, scn.frame_step, self.isolate_numbers)
Expand All @@ -3868,7 +3878,7 @@ def execute(self, context):
self._filename = self.safe_filename(self._filename)
#self._output_path = os.path.join(self._folder, self._filename)

# Replace globals in main output path
""" Replace globals in main output path """
if any(ext in self._folder for ext in glob_vars.keys()):
self._folder = replace_globals(self._folder)
bpy.ops.loom.create_directory(directory=self._folder)
Expand Down Expand Up @@ -3901,14 +3911,14 @@ def execute(self, context):
self._subframe_flag = True

""" Logging """
if prefs.log_render: self.log_sequence(scn, prefs.log_render_limit)
if loom_prefs.log_render: self.log_sequence(scn, loom_prefs.log_render_limit)

""" Render silent """
if self.render_silent:
""" Apply custom Render Preset """
if self.render_preset and self.render_preset != "EMPTY":
bpy.ops.script.execute_preset(
filepath=os.path.join(prefs.render_presets_path,self.render_preset),
filepath=os.path.join(loom_prefs.render_presets_path,self.render_preset),
menu_idname=LOOM_PT_render_presets.__name__)

for frame_number in self._frames:
Expand All @@ -3930,6 +3940,12 @@ def execute(self, context):
wm = context.window_manager
self._timer = wm.event_timer_add(0.3, window=context.window)
wm.modal_handler_add(self)

""" Set render display type, see: #78 """
#if prefs.view.render_display_type == 'SCREEN': #'WINDOW'
self._temp_display_type = prefs.view.render_display_type
prefs.view.render_display_type = loom_prefs.render_display_type

return {"RUNNING_MODAL"}

def modal(self, context, event):
Expand All @@ -3943,9 +3959,13 @@ def modal(self, context, event):
bpy.app.handlers.render_post.remove(self.post_render)
bpy.app.handlers.render_cancel.remove(self.cancel_render)

""" Reset output path & display results """
""" Reset output path & display type"""
self.reset_output_paths(scn)
context.preferences.view.render_display_type = self._temp_display_type

""" Display results """
self.final_report()

return {"FINISHED"}

elif self._rendering is False:
Expand Down

0 comments on commit ee78f51

Please sign in to comment.