diff --git a/loom.py b/loom.py index 6a940ef..1d67f49 100644 --- a/loom.py +++ b/loom.py @@ -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) @@ -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' @@ -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) @@ -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) @@ -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 @@ -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) @@ -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) @@ -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: @@ -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): @@ -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: