-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathhandlers.py
85 lines (62 loc) · 2.76 KB
/
handlers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
"""
Copyright (C) 2023 Spencer Magnusson
Created by Spencer Magnusson
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import bpy
from bpy.app.handlers import persistent
from .layers import copy_settings, set_layer_name
@persistent
def save_pre_layer_settings(dummy):
def save_layer(scene, layer_name, sm_layer, sm_layer_type):
if layer_name == '':
return
if sm_layer_type == 'video':
layer_dict = scene.sm_settings_movieclips
else:
layer_dict = scene.sm_settings_images
current_index = layer_dict.find(layer_name)
copy_settings(sm_layer, layer_dict[current_index].setting)
for scene in bpy.data.scenes:
save_layer(scene, scene.sm_bg_name, scene.sm_background, scene.sm_bg_type)
save_layer(scene, scene.sm_fg_name, scene.sm_foreground, scene.sm_fg_type)
@persistent
def load_post_purge_settings(dummy):
def purge_layer(settings_list, data_list, print_type):
index = 0
name_list = []
while index < len(settings_list):
if settings_list[index].name not in data_list:
name_list.append(settings_list[index].name)
settings_list.remove(index)
else:
index += 1
if len(name_list) > 0:
print('{} layer settings have been removed for the following {}:'.format(len(name_list), print_type))
for name in name_list:
print('\t{}'.format(name))
for scene in bpy.data.scenes:
purge_layer(scene.sm_settings_movieclips, bpy.data.movieclips, 'movieclips')
purge_layer(scene.sm_settings_images, bpy.data.images, 'images')
def get_bg_name(self):
return self.get('sm_bg_name', '')
def get_fg_name(self):
return self.get('sm_fg_name', '')
def set_bg_name(self, value):
set_layer_name(self, 'sm_bg_name', self.sm_bg_name, value, self.sm_background, self.sm_bg_type)
def set_fg_name(self, value):
set_layer_name(self, 'sm_fg_name', self.sm_fg_name, value, self.sm_foreground, self.sm_fg_type)
def bg_update(self, context):
context.scene.sm_bg_name = ''
def fg_update(self, context):
context.scene.sm_fg_name = ''