fix refacto
This commit is contained in:
+47
-45
@@ -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,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user