clipboard import
This commit is contained in:
+162
-88
@@ -92,6 +92,165 @@ class VSETB_OT_spreadsheet_cell_move(Operator):
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class VSETB_OT_spreadsheet_from_file(Operator):
|
||||
bl_idname = "vse_toolbox.spreadsheet_from_file"
|
||||
bl_label = "Read Spreadsheet Column"
|
||||
bl_description = "Read Spreadsheet Column"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
filepath : StringProperty()
|
||||
|
||||
def execute(self, context):
|
||||
scn = context.scene
|
||||
project = get_scene_settings().active_project
|
||||
|
||||
if not self.filepath:
|
||||
self.report({'ERROR'}, 'No filepath provided')
|
||||
return {'CANCELLED'}
|
||||
|
||||
if not Path(self.filepath).exists():
|
||||
self.report({'ERROR'}, f'Filepath {self.filepath} not exists')
|
||||
return {'CANCELLED'}
|
||||
|
||||
filepath = Path(self.filepath)
|
||||
|
||||
if filepath.suffix.lower() == '.csv':
|
||||
with open(filepath, newline='') as csvfile:
|
||||
reader = csv.reader(csvfile)
|
||||
next(reader)
|
||||
data = dict(reader)
|
||||
|
||||
|
||||
elif filepath.suffix.lower() == '.xlsx':
|
||||
raise Exception('Not Supported')
|
||||
workbook = openpyxl.load_workbook(filepath, read_only=True)
|
||||
sheet = next((ws for ws in workbook.worksheets if ws.title.lower() == 'export'), None)
|
||||
|
||||
|
||||
else:
|
||||
self.report({'ERROR'}, f'File extension {filepath.suffix} should be in [.csv, .xlsx]')
|
||||
return {'CANCELLED'}
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class VSETB_OT_spreadsheet_from_clipboard(Operator):
|
||||
bl_idname = "vse_toolbox.spreadsheet_from_clipboard"
|
||||
bl_label = "Read Spreadsheet from clipboard"
|
||||
bl_description = "Read Spreadsheet from clipboard"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
def execute(self, context):
|
||||
scn = context.scene
|
||||
project = get_scene_settings().active_project
|
||||
|
||||
spreadsheet = context.window_manager.clipboard
|
||||
|
||||
reader = list(csv.reader(spreadsheet.splitlines(), delimiter='\t'))
|
||||
header = reader[0]
|
||||
print(header)
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
class VSETB_OT_import_spreadsheet(Operator):
|
||||
bl_idname = "vse_toolbox.import_spreadsheet"
|
||||
bl_label = "Import Spreadsheet"
|
||||
bl_description = "Create strips from nb frames with casting and custom data"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
directory : StringProperty(subtype='DIR_PATH')
|
||||
filepath: StringProperty(
|
||||
name="File Path",
|
||||
description="Filepath used for importing the file",
|
||||
maxlen=1024,
|
||||
subtype='FILE_PATH',
|
||||
)
|
||||
files : CollectionProperty(type=OperatorFileListElement)
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
settings = get_scene_settings()
|
||||
return settings.active_project
|
||||
|
||||
def invoke(self, context, event):
|
||||
settings = get_scene_settings()
|
||||
project = settings.active_project
|
||||
|
||||
context.window_manager.fileselect_add(self)
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
def draw(self, context):
|
||||
scn = context.scene
|
||||
settings = get_scene_settings()
|
||||
project = settings.active_project
|
||||
spreadsheet = project.spreadsheet_import
|
||||
#options = project.spreadsheet_options
|
||||
|
||||
layout = self.layout
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.label(text='Source')
|
||||
#row.alignment='RIGHT'
|
||||
row.operator("vse_toolbox.spreadsheet_from_clipboard", text='Clipboard', icon='PASTEDOWN')
|
||||
row.operator("vse_toolbox.spreadsheet_from_file", text='File', icon='FILE')
|
||||
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(spreadsheet, 'use_custom_cells', text='Custom Cells')
|
||||
|
||||
col = layout.column(align=False)
|
||||
col.enabled = spreadsheet.use_custom_cells
|
||||
|
||||
row = col.row(align=True, heading='Custom Asset Name')
|
||||
row.use_property_split = True
|
||||
row.use_property_decorate = False
|
||||
row.prop(spreadsheet, 'use_custom_name', text='')
|
||||
sub = row.row(align=False)
|
||||
sub.enabled = spreadsheet.use_custom_name
|
||||
sub.prop(spreadsheet, 'custom_name', text='')
|
||||
sub.label(icon='BLANK1')
|
||||
|
||||
row = layout.row()
|
||||
row.enabled = spreadsheet.use_custom_cells
|
||||
row.template_list("VSETB_UL_spreadsheet_import", "spreadsheet_import", spreadsheet, "cells", spreadsheet, "cell_index", rows=8)
|
||||
|
||||
col_tool = row.column(align=True)
|
||||
|
||||
#bpy.types.VSETB_PT_presets.draw_panel_header(col_tool)
|
||||
#col_tool.operator('wm.call_menu', icon="PRESET").name = 'VSETB_MT_spreadsheet_presets'
|
||||
#col_tool.operator('vse_toolbox.load_spreadsheet_preset', icon='PRESET', text="")
|
||||
op = col_tool.operator('wm.call_panel', icon="PRESET", emboss=False, text='')
|
||||
op.name = 'VSETB_PT_presets'
|
||||
op.keep_open = False
|
||||
|
||||
#col_tool.separator()
|
||||
#col_tool.operator('vse_toolbox.spreadsheet_move', icon='TRIA_UP', text="").direction = 'UP'
|
||||
#col_tool.operator('vse_toolbox.spreadsheet_move', icon='TRIA_DOWN', text="").direction = 'DOWN'
|
||||
|
||||
col = layout.column()
|
||||
col.use_property_split = True
|
||||
col.use_property_decorate = False
|
||||
|
||||
#col.separator()
|
||||
|
||||
row = col.row(align=False)
|
||||
|
||||
col.prop(spreadsheet, "separator", expand=True, text='Separator')
|
||||
if self.filepath.endswith('.csv'):
|
||||
col.prop(spreadsheet, "delimiter", expand=True, text='Delimiter')
|
||||
|
||||
|
||||
col.prop(spreadsheet, 'import_casting', text='Import Casting')
|
||||
col.prop(spreadsheet, 'import_custom_data', text='Import Custom Data')
|
||||
col.prop(spreadsheet, 'update_edit', text='Update Edit')
|
||||
|
||||
col.separator()
|
||||
|
||||
def execute(self, context):
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class VSETB_OT_export_spreadsheet(Operator):
|
||||
bl_idname = "vse_toolbox.export_spreadsheet"
|
||||
bl_label = "Export Spreadsheet"
|
||||
@@ -133,7 +292,7 @@ class VSETB_OT_export_spreadsheet(Operator):
|
||||
sub.label(icon='BLANK1')
|
||||
|
||||
row = col.row()
|
||||
row.template_list("VSETB_UL_spreadsheet", "spreadsheet_export", spreadsheet, "cells", spreadsheet, "cell_index", rows=8)
|
||||
row.template_list("VSETB_UL_spreadsheet_export", "spreadsheet_export", spreadsheet, "cells", spreadsheet, "cell_index", rows=8)
|
||||
|
||||
col_tool = row.column(align=True)
|
||||
|
||||
@@ -276,98 +435,13 @@ class VSETB_OT_export_spreadsheet(Operator):
|
||||
open_file(export_path, select=True)
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
|
||||
class VSETB_OT_import_spreadsheet(Operator):
|
||||
bl_idname = "vse_toolbox.import_spreadsheet"
|
||||
bl_label = "Import Spreadsheet"
|
||||
bl_description = "Create strips from nb frames with casting and custom data"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
directory : StringProperty(subtype='DIR_PATH')
|
||||
filepath: StringProperty(
|
||||
name="File Path",
|
||||
description="Filepath used for importing the file",
|
||||
maxlen=1024,
|
||||
subtype='FILE_PATH',
|
||||
)
|
||||
files : CollectionProperty(type=OperatorFileListElement)
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
settings = get_scene_settings()
|
||||
return settings.active_project
|
||||
|
||||
def invoke(self, context, event):
|
||||
settings = get_scene_settings()
|
||||
project = settings.active_project
|
||||
|
||||
context.window_manager.fileselect_add(self)
|
||||
return {'RUNNING_MODAL'}
|
||||
|
||||
def draw(self, context):
|
||||
scn = context.scene
|
||||
settings = get_scene_settings()
|
||||
project = settings.active_project
|
||||
spreadsheet = project.spreadsheet_import
|
||||
#options = project.spreadsheet_options
|
||||
|
||||
layout = self.layout
|
||||
row = layout.row(align=True)
|
||||
row.prop(spreadsheet, 'use_custom_cells', text='Custom Cells')
|
||||
|
||||
col = layout.column(align=False)
|
||||
col.enabled = spreadsheet.use_custom_cells
|
||||
|
||||
row = col.row(align=True, heading='Custom Asset Name')
|
||||
row.use_property_split = True
|
||||
row.use_property_decorate = False
|
||||
row.prop(spreadsheet, 'use_custom_name', text='')
|
||||
sub = row.row(align=False)
|
||||
sub.enabled = spreadsheet.use_custom_name
|
||||
sub.prop(spreadsheet, 'custom_name', text='')
|
||||
sub.label(icon='BLANK1')
|
||||
|
||||
row = layout.row()
|
||||
row.enabled = spreadsheet.use_custom_cells
|
||||
row.template_list("VSETB_UL_spreadsheet", "spreadsheet_import", spreadsheet, "cells", spreadsheet, "cell_index", rows=8)
|
||||
|
||||
col_tool = row.column(align=True)
|
||||
|
||||
#bpy.types.VSETB_PT_presets.draw_panel_header(col_tool)
|
||||
#col_tool.operator('wm.call_menu', icon="PRESET").name = 'VSETB_MT_spreadsheet_presets'
|
||||
#col_tool.operator('vse_toolbox.load_spreadsheet_preset', icon='PRESET', text="")
|
||||
op = col_tool.operator('wm.call_panel', icon="PRESET", emboss=False, text='')
|
||||
op.name = 'VSETB_PT_presets'
|
||||
op.keep_open = False
|
||||
|
||||
col_tool.separator()
|
||||
col_tool.operator('vse_toolbox.spreadsheet_move', icon='TRIA_UP', text="").direction = 'UP'
|
||||
col_tool.operator('vse_toolbox.spreadsheet_move', icon='TRIA_DOWN', text="").direction = 'DOWN'
|
||||
|
||||
col = layout.column()
|
||||
col.use_property_split = True
|
||||
row.use_property_decorate = False
|
||||
|
||||
#col.separator()
|
||||
|
||||
row = col.row(align=False)
|
||||
|
||||
col.prop(spreadsheet, "separator", expand=True, text='Separator')
|
||||
if self.filepath.endwith('.csv'):
|
||||
col.prop(spreadsheet, "delimiter", expand=True, text='Delimiter')
|
||||
|
||||
col.separator()
|
||||
|
||||
def execute(self, context):
|
||||
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
classes = (
|
||||
VSETB_OT_add_export_spreadsheet_preset,
|
||||
VSETB_MT_export_spreadsheet_presets,
|
||||
VSETB_OT_spreadsheet_from_file,
|
||||
VSETB_OT_spreadsheet_from_clipboard,
|
||||
VSETB_OT_spreadsheet_cell_move,
|
||||
VSETB_OT_export_spreadsheet,
|
||||
VSETB_OT_import_spreadsheet
|
||||
|
||||
Reference in New Issue
Block a user