diff --git a/operators/operators.py b/operators/operators.py index 9a24834..4be1d13 100644 --- a/operators/operators.py +++ b/operators/operators.py @@ -29,7 +29,7 @@ from vse_toolbox.sequencer_utils import (clean_sequencer, get_strips, set_active get_channel_index, new_text_strip, get_strip_render_path, get_strip_sequence_name) from vse_toolbox.bl_utils import (get_addon_prefs, get_scene_settings, get_strip_settings) -from vse_toolbox.file_utils import (install_module, norm_name, norm_str, open_file) +from vse_toolbox.file_utils import (install_module, norm_name, norm_str, open_file, read_file) class VSETB_OT_tracker_connect(Operator): @@ -643,11 +643,10 @@ class VSETB_OT_load_projects(Operator): project.set_spreadsheet() for project in settings.projects: - #print(project.name, project.name.replace(' ', '_').upper(), old_project_name) if project.name.replace(' ', '_').upper() == old_project_name: - - #print('Restore Project Name') settings.project_name = project.name + + load_settings() #else: # print('Could Not restore Project Name') @@ -737,7 +736,8 @@ class VSETB_OT_rename(Operator): @classmethod def poll(cls, context): - return True + settings = get_scene_settings() + return settings.active_project def invoke(self, context, event): scn = context.scene @@ -746,32 +746,45 @@ class VSETB_OT_rename(Operator): return context.window_manager.invoke_props_dialog(self) def draw(self, context): + layout = self.layout scn = context.scene settings = get_scene_settings() + project = settings.active_project - layout = self.layout col = layout.column() - col.use_property_split = True + col.use_property_split = True + col.use_property_decorate = False + if self.channel_name == 'Shots': - col.prop(settings, 'shot_template') - col.prop(settings, 'shot_start_number') - col.prop(settings, 'reset_by_sequence') - elif self.channel_name == 'Shots': - col.prop(settings, 'sequence_template') - col.prop(settings, 'sequence_start_number') + col.prop(project, 'shot_template', text='Shot Name') + col.prop(project, 'shot_start_number', text='Start Number') + col.prop(project, 'shot_increment', text='Increment') + col.prop(project, 'reset_by_sequence') + elif self.channel_name == 'Sequences': + col.prop(project, 'sequence_template' ,text='Sequence Name') + col.prop(project, 'sequence_start_number', text='Start Number') + col.prop(project, 'sequence_increment', text='Increment') col.prop(self, 'selected_only') def execute(self, context): - scn = context.scene - #strips = get_strips(channel=self.channel_name, selected_only=self.selected_only) + scn = context.scene + settings = get_scene_settings() + project = settings.active_project + strips = get_strips(channel=self.channel_name, selected_only=self.selected_only) - - rename_strips( - strips, self.template, - increment=self.increment, start_number=self.start_number, - by_sequence=self.by_sequence - ) + if self.channel_name == 'Shots': + rename_strips(strips, + template=project.shot_template, + increment=project.shot_increment, start_number=project.shot_start_number, + by_sequence=project.reset_by_sequence + ) + + if self.channel_name == 'Sequences': + rename_strips(strips, + template=project.sequence_template, + increment=project.sequence_increment, start_number=project.sequence_start_number + ) return {"FINISHED"} @@ -1279,6 +1292,63 @@ class VSETB_OT_set_stamps(Operator): return {"FINISHED"} +def load_settings(): + prefs = get_addon_prefs() + settings = get_scene_settings() + project = settings.active_project + + prefs_config_file = prefs.config_path + + if not prefs_config_file: + return + + prefs_datas = read_file(os.path.expandvars(prefs_config_file)) + + prefs_datas['trackers'] = prefs_datas.get('trackers') + prefs_datas['spreadsheet'] = prefs_datas.get('spreadsheet') + + #print(prefs_datas) + trackers = prefs_datas.pop('trackers') + spreadsheet = prefs_datas.pop('spreadsheet') + + project_name = prefs_datas.get('project_name') + if project_name: + settings.project_name = project_name + + # Project Properties + for k, v in prefs_datas.items(): + try: + setattr(project, k, v) + except Exception: + print(f'Could not set property {k} with value {v} to project {settings.project_name}') + + if spreadsheet.get('cells'): + #project.spreadsheet.clear() + + for i, cell_data in enumerate(spreadsheet['cells']): + if not 'name' in cell_data: + print(f'cell_data {cell_data} need to have a attribute name') + continue + + cell = project.spreadsheet.get(cell_data['name']) + + if not cell: + print(f"cell {cell_data['name']} not in spreadsheet") + continue + + project.spreadsheet.move(list(project.spreadsheet).index(cell), i) + + for prop_name in ('export_name', 'enabled'): + if prop_name in cell_data: + setattr(cell, prop_name, cell_data[prop_name]) + + if spreadsheet.get('options'): + for k, v in spreadsheet['options'].items(): + try: + setattr(project.spreadsheet_options, k, v) + except Exception: + print(f'Could not set option {k} with value {v} to spreadsheet') + classes = ( VSETB_OT_auto_select_files, VSETB_OT_casting_add, diff --git a/panels.py b/panels.py index 0e9ab1a..6c96bab 100644 --- a/panels.py +++ b/panels.py @@ -91,7 +91,6 @@ class VSETB_PT_sequencer(VSETB_main, Panel): project = settings.active_project col = layout.column() - col.operator('vse_toolbox.set_sequencer', text='Set-Up Sequencer', icon='SEQ_SEQUENCER') #row = col.row() @@ -119,17 +118,8 @@ class VSETB_PT_sequencer(VSETB_main, Panel): row.enabled = False op = row.operator('vse_toolbox.strips_rename', text=f'Rename {channel_name} ( {label} )', icon='SORTALPHA') - if project: - op.channel_name = channel_name - if channel_name == 'Shots': - op.start_number = project.shot_start_number - op.template = project.shot_template - op.increment = project.shot_increment - else: - op.start_number = project.sequence_start_number - op.template = project.sequence_template - op.increment = project.sequence_increment - + op.channel_name = channel_name + col.operator('vse_toolbox.set_stamps', text='Set Stamps', icon='COLOR') diff --git a/preferences.py b/preferences.py index 00a78c5..2101441 100644 --- a/preferences.py +++ b/preferences.py @@ -143,10 +143,6 @@ def register(): load_trackers() prefs = get_addon_prefs() - - #tracker_name = os.getenv('TRACKER_NAME') - #if tracker_name is not None: - # prefs['tracker_name'] = os.path.expandvars(norm_str(tracker_name, format=str.upper)) config_path = os.getenv('VSE_TOOLBOX_CONFIG') if config_path: diff --git a/properties.py b/properties.py index 369f86a..19e85b6 100644 --- a/properties.py +++ b/properties.py @@ -436,17 +436,6 @@ classes = ( from bpy.app.handlers import persistent -def load_settings(): - prefs = get_addon_prefs() - prefs_config_file = prefs.config_path - - if not prefs_config_file: - return - - prefs_datas = read_file(os.path.expandvars(prefs_config_file)) - - #for cell in prefs_datas.get('spreadsheet', {}).get('cells', []): - @persistent