Check file dry run mode and lock object mode

1.5.7

- feat: check list, Specify in addon pref if you prefer a dry run (check without set)
- feat: check file can change the lock object mode state (do nothing by default)
This commit is contained in:
Pullusb
2021-07-16 18:14:31 +02:00
parent 66ef75c76d
commit 9612c84396
4 changed files with 74 additions and 13 deletions
+46 -11
View File
@@ -24,15 +24,26 @@ class GPTB_OT_file_checker(bpy.types.Operator):
# GP stroke placement/projection check
# Disabled animation
# Set onion skin filter to 'All type'
# Set filepath type
# Set Lock object mode state
def invoke(self, context, event):
self.ctrl = event.ctrl
return self.execute(context)
def execute(self, context):
prefs = get_addon_prefs()
fix = prefs.fixprops
problems = []
apply = not fix.check_only
# If Ctrl is pressed, invert behavior (invert boolean)
apply ^= self.ctrl
## Lock main cam:
if fix.lock_main_cam:
if not 'layout' in Path(bpy.data.filepath).stem.lower():#dont touch layout cameras
if not 'layout' in Path(bpy.data.filepath).stem.lower(): # dont touch layout cameras
if context.scene.camera:
cam = context.scene.camera
if cam.name == 'draw_cam' and cam.parent:
@@ -44,7 +55,8 @@ class GPTB_OT_file_checker(bpy.types.Operator):
triple = (True,True,True)
if cam.lock_location[:] != triple or cam.lock_rotation[:] != triple:
problems.append('Lock main camera')
cam.lock_location = cam.lock_rotation = triple
if apply:
cam.lock_location = cam.lock_rotation = triple
## set scene res at pref res according to addon pref
if fix.set_scene_res:
@@ -52,19 +64,22 @@ class GPTB_OT_file_checker(bpy.types.Operator):
# TODO set (rx, ry) to camera resolution if specified in camera name
if context.scene.render.resolution_x != rx or context.scene.render.resolution_y != ry:
problems.append(f'Resolution {context.scene.render.resolution_x}x{context.scene.render.resolution_y} >> {rx}x{ry}')
context.scene.render.resolution_x, context.scene.render.resolution_y = rx, ry
if apply:
context.scene.render.resolution_x, context.scene.render.resolution_y = rx, ry
## set scene percentage at 100:
if fix.set_res_percentage:
if context.scene.render.resolution_percentage != 100:
problems.append('Resolution output to 100%')
context.scene.render.resolution_percentage = 100
if apply:
context.scene.render.resolution_percentage = 100
## set fps according to preferences settings
if fix.set_fps:
if context.scene.render.fps != prefs.fps:
problems.append( (f"framerate corrected {context.scene.render.fps} >> {prefs.fps}", 'ERROR') )
context.scene.render.fps = prefs.fps
if apply:
context.scene.render.fps = prefs.fps
## set show slider and sync range
if fix.set_slider_n_sync:
@@ -74,7 +89,6 @@ class GPTB_OT_file_checker(bpy.types.Operator):
if area.type == 'DOPESHEET_EDITOR':
if hasattr(area.spaces[0], 'show_sliders'):
setattr(area.spaces[0], 'show_sliders', True)
if hasattr(area.spaces[0], 'show_locked_time'):
setattr(area.spaces[0], 'show_locked_time', True)
@@ -83,8 +97,9 @@ class GPTB_OT_file_checker(bpy.types.Operator):
tool = fix.select_active_tool
if tool != 'none':
if bpy.context.workspace.tools.from_space_view3d_mode(bpy.context.mode, create=False).idname != tool:
bpy.ops.wm.tool_set_by_id(name=tool)# Tweaktoolcode
problems.append(f'tool changed to {tool.split(".")[1]}')
if apply:
bpy.ops.wm.tool_set_by_id(name=tool) # Tweaktoolcode
# ## GP use additive drawing (else creating a frame in dopesheet makes it blank...)
# if not context.scene.tool_settings.use_gpencil_draw_additive:
@@ -119,17 +134,20 @@ class GPTB_OT_file_checker(bpy.types.Operator):
if fix.set_pivot_median_point:
if context.scene.tool_settings.transform_pivot_point != 'MEDIAN_POINT':
problems.append(f"Pivot changed from '{context.scene.tool_settings.transform_pivot_point}' to 'MEDIAN_POINT'")
context.scene.tool_settings.transform_pivot_point = 'MEDIAN_POINT'
if apply:
context.scene.tool_settings.transform_pivot_point = 'MEDIAN_POINT'
if fix.disable_guide:
if context.scene.tool_settings.gpencil_sculpt.guide.use_guide == True:
problems.append(f"Disabled Draw Guide")
context.scene.tool_settings.gpencil_sculpt.guide.use_guide = False
if apply:
context.scene.tool_settings.gpencil_sculpt.guide.use_guide = False
if fix.autokey_add_n_replace:
if context.scene.tool_settings.auto_keying_mode != 'ADD_REPLACE_KEYS':
problems.append(f"Autokey mode reset to 'Add & Replace'")
context.scene.tool_settings.auto_keying_mode = 'ADD_REPLACE_KEYS'
if apply:
context.scene.tool_settings.auto_keying_mode = 'ADD_REPLACE_KEYS'
if fix.file_path_type != 'none':
pathes = []
@@ -146,7 +164,22 @@ class GPTB_OT_file_checker(bpy.types.Operator):
print(mess)
print('\n'.join(pathes))
print('-')
if fix.lock_object_mode != 'none':
lockmode = bpy.context.scene.tool_settings.lock_object_mode
if fix.lock_object_mode == 'LOCK':
if not lockmode:
problems.append(f"Lock object mode toggled On")
if apply:
bpy.context.scene.tool_settings.lock_object_mode = True
elif fix.lock_object_mode == 'UNLOCK':
if lockmode:
problems.append(f"Lock object mode toggled Off")
if apply:
bpy.context.scene.tool_settings.lock_object_mode = False
# ## Set onion skin filter to 'All type'
# fix_kf_type = 0
# for gp in bpy.data.grease_pencils:#from data
@@ -169,8 +202,10 @@ class GPTB_OT_file_checker(bpy.types.Operator):
print(p)
else:
print(p[0])
# Show in viewport
show_message_box(problems, _title = "Changed Settings", _icon = 'INFO')
title = "Changed Settings" if apply else "Checked Settings (dry run, nothing changed)"
show_message_box(problems, _title = title, _icon = 'INFO')
else:
self.report({'INFO'}, 'All good')
return {"FINISHED"}