fix refacto

This commit is contained in:
“christopheseux”
2023-05-02 20:46:45 +02:00
parent 41a4c7a3a4
commit 4a3042030f
6 changed files with 94 additions and 75 deletions
+47 -45
View File
@@ -17,21 +17,21 @@ from vse_toolbox.bl_utils import (get_addon_prefs, get_scene_settings)
from vse_toolbox.file_utils import open_file, install_module
class VSETB_MT_spreadsheet_presets(Menu):
class VSETB_MT_export_spreadsheet_presets(Menu):
bl_label = 'Presets'
preset_subdir = 'vse_toolbox'
preset_operator = 'script.execute_preset'
draw = Menu.draw_preset
class VSETB_OT_add_spreadsheet_preset(AddPresetBase, Operator):
class VSETB_OT_add_export_spreadsheet_preset(AddPresetBase, Operator):
bl_idname = "vse_toolbox.add_spreadsheet_preset"
bl_label = "Add Spreadsheet Preset"
bl_description = "Add Spreadsheet Preset"
bl_options = {"REGISTER", "UNDO"}
preset_menu = 'VSETB_MT_spreadsheet_presets'
preset_menu = 'VSETB_MT_export_spreadsheet_presets'
#preset_menu = 'VSETB_OT_MT_spreadsheet_presets'
@@ -45,16 +45,15 @@ class VSETB_OT_add_spreadsheet_preset(AddPresetBase, Operator):
# Properties to store in the preset
preset_values = [
'project.spreadsheet',
'project.spreadsheet_options'
'project.spreadsheet_export',
]
# Directory to store the presets
preset_subdir = 'vse_toolbox'
preset_subdir = 'vse_toolbox/spreadsheet_export'
class VSETB_OT_spreadsheet_move(Operator):
class VSETB_OT_spreadsheet_cell_move(Operator):
bl_idname = "vse_toolbox.spreadsheet_move"
bl_label = "Move Spreadsheet items"
bl_description = "Move Spreadsheet items"
@@ -71,22 +70,24 @@ class VSETB_OT_spreadsheet_move(Operator):
scn = context.scene
project = get_scene_settings().active_project
idx = project.spreadsheet_index
spreadsheet = project.spreadsheet_export
cells = spreadsheet.cells
idx = spreadsheet.cell_index
try:
item = project.spreadsheet[idx]
item = cells[idx]
except IndexError:
pass
else:
if self.direction == 'DOWN' and idx < len(project.spreadsheet) - 1:
item_next = project.spreadsheet[idx+1].name
project.spreadsheet.move(idx, idx+1)
project.spreadsheet_index += 1
if self.direction == 'DOWN' and idx < len(cells) - 1:
item_next = cells[idx+1].name
cells.move(idx, idx+1)
spreadsheet.cell_index += 1
elif self.direction == 'UP' and idx >= 1:
item_prev = project.spreadsheet[idx-1].name
project.spreadsheet.move(idx, idx-1)
project.spreadsheet_index -= 1
item_prev = cells[idx-1].name
cells.move(idx, idx-1)
spreadsheet.cell_index -= 1
return {"FINISHED"}
@@ -112,12 +113,13 @@ class VSETB_OT_export_spreadsheet(Operator):
scn = context.scene
settings = get_scene_settings()
project = settings.active_project
options = project.spreadsheet_options
spreadsheet = project.spreadsheet_export
#options = project.spreadsheet_options
layout = self.layout
row = layout.row()
row.template_list("VSETB_UL_spreadsheet", "spreadsheet", project, "spreadsheet", project, "spreadsheet_index", rows=8)
row.template_list("VSETB_UL_spreadsheet", "spreadsheet_export", spreadsheet, "cells", spreadsheet, "cell_index", rows=8)
col_tool = row.column(align=True)
@@ -137,31 +139,31 @@ class VSETB_OT_export_spreadsheet(Operator):
row = col.row(align=True, heading='Custom Name')
#row.use_property_split = True
row.prop(options, 'use_custom_name', text='')
row.prop(spreadsheet, 'use_custom_name', text='')
sub = row.row(align=True)
sub.enabled = options.use_custom_name
sub.prop(options, 'custom_name', text='')
sub.enabled = spreadsheet.use_custom_name
sub.prop(spreadsheet, 'custom_name', text='')
col.separator()
row = col.row(align=False)
row.prop(options, "format", expand=True, text='Format')
row.prop(options, 'show_settings', text='', icon='PREFERENCES')
if options.show_settings:
col.prop(options, "separator", expand=True, text='Separator')
if options.format == 'CSV':
col.prop(options, "delimiter", expand=True, text='Delimiter')
row.prop(spreadsheet, "format", expand=True, text='Format')
row.prop(spreadsheet, 'show_settings', text='', icon='PREFERENCES')
if spreadsheet.show_settings:
col.prop(spreadsheet, "separator", expand=True, text='Separator')
if spreadsheet.format == 'CSV':
col.prop(spreadsheet, "delimiter", expand=True, text='Delimiter')
col.separator()
col.prop(options, 'open_folder', text='Open Folder')
col.prop(options, 'export_path', text='Export Path')
col.prop(spreadsheet, 'open_folder', text='Open Folder')
col.prop(spreadsheet, 'export_path', text='Export Path')
def execute(self, context):
#self.report({'ERROR'}, f'Export not implemented yet.')
prefs = get_addon_prefs()
settings = get_scene_settings()
project = settings.active_project
options = project.spreadsheet_options
spreadsheet = project.spreadsheet_export
episode = settings.active_episode
cells = [cell for cell in project.spreadsheet if cell.enabled]
@@ -170,8 +172,8 @@ class VSETB_OT_export_spreadsheet(Operator):
# Header
rows.append([cell.export_name for cell in cells])
separator = options.separator.replace('\\n', '\n').replace('\\t', '\t').replace('\\r', '\r')
delimiter = options.delimiter.replace('\\n', '\n').replace('\\t', '\t').replace('\\r', '\r')
separator = spreadsheet.separator.replace('\\n', '\n').replace('\\t', '\t').replace('\\r', '\r')
delimiter = spreadsheet.delimiter.replace('\\n', '\n').replace('\\t', '\t').replace('\\r', '\r')
for strip in get_strips('Shots'):
row = []
@@ -185,11 +187,11 @@ class VSETB_OT_export_spreadsheet(Operator):
if not asset.asset_type == cell.name:
continue
if options.use_custom_name:
if asset.get('metadata', {}).get(options.custom_name):
asset_castings.append(asset['metadata'][options.custom_name])
if spreadsheet.use_custom_name:
if asset.get('metadata', {}).get(spreadsheet.custom_name):
asset_castings.append(asset['metadata'][spreadsheet.custom_name])
else:
self.report({'ERROR'}, f'The asset {asset.tracker_name} has no data {options.custom_name}')
self.report({'ERROR'}, f'The asset {asset.tracker_name} has no data {spreadsheet.custom_name}')
else:
asset_castings.append(asset.tracker_name)
@@ -209,7 +211,7 @@ class VSETB_OT_export_spreadsheet(Operator):
#print(rows)
export_path = Path(os.path.abspath(bpy.path.abspath(options.export_path)))
export_path = Path(os.path.abspath(bpy.path.abspath(spreadsheet.export_path)))
export_name = export_path.name
if export_path.suffix or export_name.endswith('{ext}'):
@@ -224,7 +226,7 @@ class VSETB_OT_export_spreadsheet(Operator):
date = datetime.now().strftime('%Y_%m_%d')
project_name = project.name.replace(' ', '_').lower()
episode_name = episode.name.replace(' ', '_').lower() if episode else 'episode'
ext = options.format.lower()
ext = spreadsheet.format.lower()
export_name = export_name.format(date=date, project=project_name,
episode=episode_name, tracker=settings.tracker_name.lower(), ext=ext)
@@ -234,14 +236,14 @@ class VSETB_OT_export_spreadsheet(Operator):
#2023_04_11_kitsu_boris_ep01_shots
export_path.parent.mkdir(parents=True, exist_ok=True)
if options.format == 'CSV':
if spreadsheet.format == 'CSV':
print('Writing .csv file to', export_path)
with open(str(export_path), 'w', newline='\n', encoding='utf-8') as f:
writer = csv.writer(f, delimiter=options.delimiter)
writer = csv.writer(f, delimiter=spreadsheet.delimiter)
for row in rows:
writer.writerow(row)
elif options.format == 'XLSX':
elif spreadsheet.format == 'XLSX':
try:
import openpyxl
except ModuleNotFoundError:
@@ -262,7 +264,7 @@ class VSETB_OT_export_spreadsheet(Operator):
# Save the file
workbook.save(str(export_path))
if options.open_folder:
if spreadsheet.open_folder:
open_file(export_path, select=True)
return {"FINISHED"}
@@ -304,9 +306,9 @@ class VSETB_OT_import_spreadsheet(Operator):
classes = (
VSETB_OT_add_spreadsheet_preset,
VSETB_MT_spreadsheet_presets,
VSETB_OT_spreadsheet_move,
VSETB_OT_add_export_spreadsheet_preset,
VSETB_MT_export_spreadsheet_presets,
VSETB_OT_spreadsheet_cell_move,
VSETB_OT_export_spreadsheet,
)