export background
This commit is contained in:
+53
-14
@@ -171,6 +171,40 @@ class VSETB_OT_spreadsheet_from_clipboard(Operator):
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class VSETB_OT_spreadsheet_to_clipboard(Operator):
|
||||
bl_idname = "vse_toolbox.spreadsheet_to_clipboard"
|
||||
bl_label = "Copy Spreadsheet to clipboard"
|
||||
bl_description = "Copy Spreadsheet to clipboard"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
def execute(self, context):
|
||||
scn = context.scene
|
||||
project = get_scene_settings().active_project
|
||||
import_cells = project.spreadsheet_import.cells
|
||||
import_cells.clear()
|
||||
|
||||
SPREADSHEET.clear()
|
||||
|
||||
spreadsheet = context.window_manager.clipboard
|
||||
|
||||
cell_types = project.get_cell_types()
|
||||
rows = list(csv.reader(StringIO(spreadsheet), delimiter='\t'))
|
||||
for cell_name in rows[0]:
|
||||
if not cell_name:
|
||||
continue
|
||||
|
||||
cell = import_cells.add()
|
||||
cell.name = cell_name
|
||||
cell.import_name = max(cell_types.keys(), key=lambda x: fuzzy_match(cell_name, x))
|
||||
cell.enabled = True
|
||||
|
||||
project.spreadsheet_import.use_custom_cells = True
|
||||
|
||||
SPREADSHEET.extend(rows)
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class VSETB_OT_import_spreadsheet(Operator):
|
||||
bl_idname = "vse_toolbox.import_spreadsheet"
|
||||
bl_label = "Import Spreadsheet"
|
||||
@@ -368,13 +402,7 @@ class VSETB_OT_import_spreadsheet(Operator):
|
||||
|
||||
strip_settings.casting.update()
|
||||
else:
|
||||
self.report({'WARNING'}, f'Asset {asset_name} not found in Project')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
self.report({'WARNING'}, f'Asset {asset_name} not found in Project')
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
@@ -446,12 +474,13 @@ class VSETB_OT_export_spreadsheet(Operator):
|
||||
row.prop(spreadsheet, 'show_settings', text='', icon='PREFERENCES')
|
||||
if spreadsheet.show_settings:
|
||||
col.prop(spreadsheet, "separator", expand=True, text='Separator')
|
||||
if spreadsheet.format == 'CSV':
|
||||
if spreadsheet.format == 'csv':
|
||||
col.prop(spreadsheet, "delimiter", expand=True, text='Delimiter')
|
||||
|
||||
col.separator()
|
||||
col.prop(spreadsheet, 'open_folder', text='Open Folder')
|
||||
col.prop(spreadsheet, 'export_path', text='Export Path')
|
||||
if spreadsheet.format != 'Clipboard':
|
||||
col.separator()
|
||||
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.')
|
||||
@@ -499,7 +528,7 @@ class VSETB_OT_export_spreadsheet(Operator):
|
||||
row += [strip.name]
|
||||
elif cell.field_name == 'DESCRIPTION':
|
||||
row += [strip.vsetb_strip_settings.description]
|
||||
elif cell.field_name == 'FRAMES':
|
||||
elif cell.field_name == 'NB_FRAMES':
|
||||
row += [strip.frame_final_duration]
|
||||
|
||||
rows.append(row)
|
||||
@@ -531,14 +560,14 @@ class VSETB_OT_export_spreadsheet(Operator):
|
||||
#2023_04_11_kitsu_boris_ep01_shots
|
||||
export_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
if spreadsheet.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=spreadsheet.delimiter)
|
||||
for row in rows:
|
||||
writer.writerow(row)
|
||||
|
||||
elif spreadsheet.format == 'XLSX':
|
||||
elif spreadsheet.format == 'xlsx':
|
||||
try:
|
||||
import openpyxl
|
||||
except ModuleNotFoundError:
|
||||
@@ -558,6 +587,15 @@ class VSETB_OT_export_spreadsheet(Operator):
|
||||
|
||||
# Save the file
|
||||
workbook.save(str(export_path))
|
||||
|
||||
elif spreadsheet.format == 'Clipboard':
|
||||
csv_buffer = StringIO()
|
||||
|
||||
# Write CSV data to the StringIO buffer
|
||||
csv_writer = csv.writer(csv_buffer, delimiter='\t')
|
||||
csv_writer.writerows(rows)
|
||||
|
||||
context.window_manager.clipboard = csv_buffer.getvalue()
|
||||
|
||||
if spreadsheet.open_folder:
|
||||
open_file(export_path, select=True)
|
||||
@@ -570,6 +608,7 @@ classes = (
|
||||
VSETB_MT_export_spreadsheet_presets,
|
||||
VSETB_OT_spreadsheet_from_file,
|
||||
VSETB_OT_spreadsheet_from_clipboard,
|
||||
VSETB_OT_spreadsheet_to_clipboard,
|
||||
VSETB_OT_spreadsheet_cell_move,
|
||||
VSETB_OT_export_spreadsheet,
|
||||
VSETB_OT_import_spreadsheet
|
||||
|
||||
Reference in New Issue
Block a user