diff --git a/addons/resources_spreadsheet_view/editor_view.gd b/addons/resources_spreadsheet_view/editor_view.gd index 47fdff0..99b1a6a 100644 --- a/addons/resources_spreadsheet_view/editor_view.gd +++ b/addons/resources_spreadsheet_view/editor_view.gd @@ -3,7 +3,7 @@ extends Control signal grid_updated() -const SettingsGrid := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") +const TablesPluginSettingsClass := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") @export @onready var node_folder_path : LineEdit = $"HeaderContentSplit/VBoxContainer/HBoxContainer/HBoxContainer/Path" @export @onready var node_recent_paths : OptionButton = $"HeaderContentSplit/VBoxContainer/HBoxContainer/HBoxContainer2/RecentPaths" @@ -11,8 +11,8 @@ const SettingsGrid := preload("res://addons/resources_spreadsheet_view/settings_ @export @onready var node_columns : HBoxContainer = $"HeaderContentSplit/VBoxContainer/Columns/Columns" @export @onready var node_page_manager : Control = $"HeaderContentSplit/VBoxContainer/HBoxContainer3/Pages" -@onready var _on_cell_gui_input = $"InputHandler"._on_cell_gui_input -@onready var _selection = $"SelectionManager" +@onready var _on_cell_gui_input : Callable = $"InputHandler"._on_cell_gui_input +@onready var _selection := $"SelectionManager" var editor_interface : EditorInterface var editor_plugin : EditorPlugin @@ -185,7 +185,7 @@ func _update_table(columns_changed : bool): node_table_root.get_child(0).free() to_free -= 1 - var color_rows = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "color_rows") + var color_rows = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "color_rows") _update_row_range( first_row, @@ -325,13 +325,16 @@ func get_last_selected_row(): func get_edited_cells_values() -> Array: - var arr = _selection.edited_cells.duplicate() - var column_index = _selection.get_cell_column(_selection.edited_cells[0]) - var cell_editor = _selection.column_editors[column_index] - for i in arr.size(): - arr[i] = io.get_value(rows[_selection.get_cell_row(arr[i])], columns[column_index]) + var cells : Array = _selection.edited_cells.duplicate() + var column_index : int = _selection.get_cell_column(_selection.edited_cells[0]) + var cell_editor : Object = _selection.column_editors[column_index] - return arr + var result := [] + result.resize(cells.size()) + for i in cells.size(): + result[i] = io.get_value(rows[_selection.get_cell_row(cells[i])], columns[column_index]) + + return result func _update_resources(update_rows : Array, update_row_indices : Array[int], update_column : int, values : Array): @@ -422,7 +425,3 @@ func _on_File_pressed(): func _on_SearchProcess_pressed(): $"HeaderContentSplit/VBoxContainer/Search".visible = !$"HeaderContentSplit/VBoxContainer/Search".visible - - -func _on_cells_context(cells): - pass # Replace with function body. diff --git a/addons/resources_spreadsheet_view/main_screen/column_header_manager.gd b/addons/resources_spreadsheet_view/main_screen/column_header_manager.gd index 9c459ec..c4f2c4c 100644 --- a/addons/resources_spreadsheet_view/main_screen/column_header_manager.gd +++ b/addons/resources_spreadsheet_view/main_screen/column_header_manager.gd @@ -1,7 +1,7 @@ @tool extends Control -const SettingsGrid := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") +const TablesPluginSettingsClass := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") @export var table_header_scene : PackedScene @@ -64,7 +64,7 @@ func _update_column_sizes(): editor_view.refresh() return - var clip_text : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "clip_headers") + var clip_text : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "clip_headers") var min_width := 0 var cell : Control diff --git a/addons/resources_spreadsheet_view/main_screen/input_handler.gd b/addons/resources_spreadsheet_view/main_screen/input_handler.gd index b174436..b6e54b3 100644 --- a/addons/resources_spreadsheet_view/main_screen/input_handler.gd +++ b/addons/resources_spreadsheet_view/main_screen/input_handler.gd @@ -1,11 +1,12 @@ @tool extends Node -const EditorView = preload("res://addons/resources_spreadsheet_view/editor_view.gd") -const SelectionManager = preload("res://addons/resources_spreadsheet_view/main_screen/selection_manager.gd") +const TablesPluginEditorViewClass = preload("res://addons/resources_spreadsheet_view/editor_view.gd") +const TablesPluginSelectionManagerClass = preload("res://addons/resources_spreadsheet_view/main_screen/selection_manager.gd") +const TextEditingUtilsClass := preload("res://addons/resources_spreadsheet_view/text_editing_utils.gd") -@onready var editor_view : EditorView = get_parent() -@onready var selection : SelectionManager = get_node("../SelectionManager") +@onready var editor_view : TablesPluginEditorViewClass = get_parent() +@onready var selection : TablesPluginSelectionManagerClass = get_node("../SelectionManager") func _on_cell_gui_input(event : InputEvent, cell : Control): @@ -92,12 +93,12 @@ func _key_specific_action(event : InputEvent): # CURSOR MOVEMENT if event.keycode == KEY_LEFT: - TextEditingUtils.multi_move_left( + TextEditingUtilsClass.multi_move_left( selection.edited_cells_text, selection.edit_cursor_positions, ctrl_pressed ) elif event.keycode == KEY_RIGHT: - TextEditingUtils.multi_move_right( + TextEditingUtilsClass.multi_move_right( selection.edited_cells_text, selection.edit_cursor_positions, ctrl_pressed ) @@ -111,7 +112,7 @@ func _key_specific_action(event : InputEvent): # Ctrl + C (so you can edit in a proper text editor instead of this wacky nonsense) elif ctrl_pressed and event.keycode == KEY_C: - TextEditingUtils.multi_copy(selection.edited_cells_text) + TextEditingUtilsClass.multi_copy(selection.edited_cells_text) get_viewport().set_input_as_handled() # The following actions do not work on non-editable cells. @@ -120,31 +121,31 @@ func _key_specific_action(event : InputEvent): # Ctrl + V elif ctrl_pressed and event.keycode == KEY_V: - editor_view.set_edited_cells_values(TextEditingUtils.multi_paste( + editor_view.set_edited_cells_values(TextEditingUtilsClass.multi_paste( selection.edited_cells_text, selection.edit_cursor_positions )) get_viewport().set_input_as_handled() # ERASING elif event.keycode == KEY_BACKSPACE: - editor_view.set_edited_cells_values(TextEditingUtils.multi_erase_left( + editor_view.set_edited_cells_values(TextEditingUtilsClass.multi_erase_left( selection.edited_cells_text, selection.edit_cursor_positions, ctrl_pressed )) elif event.keycode == KEY_DELETE: - editor_view.set_edited_cells_values(TextEditingUtils.multi_erase_right( + editor_view.set_edited_cells_values(TextEditingUtilsClass.multi_erase_right( selection.edited_cells_text, selection.edit_cursor_positions, ctrl_pressed )) get_viewport().set_input_as_handled() # And finally, text typing. elif event.keycode == KEY_ENTER: - editor_view.set_edited_cells_values(TextEditingUtils.multi_input( + editor_view.set_edited_cells_values(TextEditingUtilsClass.multi_input( "\n", selection.edited_cells_text, selection.edit_cursor_positions )) elif event.unicode != 0 and event.unicode != 127: - editor_view.set_edited_cells_values(TextEditingUtils.multi_input( + editor_view.set_edited_cells_values(TextEditingUtilsClass.multi_input( char(event.unicode), selection.edited_cells_text, selection.edit_cursor_positions )) diff --git a/addons/resources_spreadsheet_view/main_screen/selection_actions.gd b/addons/resources_spreadsheet_view/main_screen/selection_actions.gd index cdd8511..dd0f196 100644 --- a/addons/resources_spreadsheet_view/main_screen/selection_actions.gd +++ b/addons/resources_spreadsheet_view/main_screen/selection_actions.gd @@ -7,7 +7,8 @@ enum { EDITBOX_DELETE, } -const SettingsGrid := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") +const TextEditingUtilsClass := preload("res://addons/resources_spreadsheet_view/text_editing_utils.gd") +const TablesPluginSettingsClass := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") @export @onready var editor_view := $"../.." @export @onready var selection := $"../../SelectionManager" @@ -34,7 +35,7 @@ func _on_grid_cells_rightclicked(cells): func _on_grid_cells_selected(cells): - if ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "context_menu_on_leftclick"): + if ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "context_menu_on_leftclick"): open(cells, true) else: hide() @@ -109,12 +110,12 @@ func _on_Duplicate_pressed(): func _on_CbCopy_pressed(): - TextEditingUtils.multi_copy(selection.edited_cells_text) + TextEditingUtilsClass.multi_copy(selection.edited_cells_text) func _on_CbPaste_pressed(): editor_view.set_edited_cells_values( - TextEditingUtils.multi_paste( + TextEditingUtilsClass.multi_paste( selection.edited_cells_text, selection.edit_cursor_positions ) diff --git a/addons/resources_spreadsheet_view/main_screen/selection_manager.gd b/addons/resources_spreadsheet_view/main_screen/selection_manager.gd index b5261a9..173ef4d 100644 --- a/addons/resources_spreadsheet_view/main_screen/selection_manager.gd +++ b/addons/resources_spreadsheet_view/main_screen/selection_manager.gd @@ -4,21 +4,21 @@ extends Control signal cells_selected(cells) signal cells_rightclicked(cells) -const EditorView = preload("res://addons/resources_spreadsheet_view/editor_view.gd") +const EditorViewClass = preload("res://addons/resources_spreadsheet_view/editor_view.gd") @export var cell_editor_classes : Array[Script] = [] @export @onready var node_property_editors : VBoxContainer = $"../HeaderContentSplit/MarginContainer/FooterContentSplit/Footer/PropertyEditors" @export @onready var scrollbar : ScrollContainer = $"../HeaderContentSplit/MarginContainer/FooterContentSplit/Panel/Scroll" -@onready var editor_view : EditorView = get_parent() +@onready var editor_view : EditorViewClass = get_parent() -var edited_cells := [] -var edited_cells_text := [] +var edited_cells : Array = [] +var edited_cells_text : Array[String] = [] var edit_cursor_positions : Array[int] = [] -var all_cell_editors : Array[Object] -var column_editors := [] +var all_cell_editors : Array = [] +var column_editors : Array[Object] = [] var inspector_resource : Resource @@ -136,14 +136,14 @@ func select_cells_to(cell : Control): if column_index != get_cell_column(edited_cells[edited_cells.size() - 1]): return - var row_start = get_cell_row(edited_cells[edited_cells.size() - 1]) - editor_view.first_row + var row_start := get_cell_row(edited_cells[edited_cells.size() - 1]) - editor_view.first_row var row_end := get_cell_row(cell) - editor_view.first_row - var edge_shift = -1 if row_start > row_end else 1 + var edge_shift := -1 if row_start > row_end else 1 row_start += edge_shift row_end += edge_shift for i in range(row_start, row_end, edge_shift): - var cur_cell := editor_view.node_table_root.get_child(i * editor_view.columns.size() + column_index) + var cur_cell : Control = editor_view.node_table_root.get_child(i * editor_view.columns.size() + column_index) if !cur_cell.visible: # When search is active, some cells will be hidden. continue @@ -232,7 +232,7 @@ func _on_inspector_property_edited(property : String): if inspector_resource == null: return if editor_view.columns[get_cell_column(edited_cells[0])] != property: - var columns = editor_view.columns + var columns := editor_view.columns var previously_edited = edited_cells.duplicate() var new_column := columns.find(property) deselect_all_cells() diff --git a/addons/resources_spreadsheet_view/settings_grid.gd b/addons/resources_spreadsheet_view/settings_grid.gd index fc8a211..c09fe3d 100644 --- a/addons/resources_spreadsheet_view/settings_grid.gd +++ b/addons/resources_spreadsheet_view/settings_grid.gd @@ -1,12 +1,12 @@ @tool extends GridContainer -const SETTING_PREFIX = "addons/resources_spreadsheet_view/" +const PREFIX = "addons/resources_spreadsheet_view/" func _ready(): for x in get_children(): - var setting = SETTING_PREFIX + x.name.to_snake_case() + var setting = PREFIX + x.name.to_snake_case() if x is BaseButton: x.toggled.connect(_set_setting.bind(setting)) if !ProjectSettings.has_setting(setting): diff --git a/addons/resources_spreadsheet_view/text_editing_utils.gd b/addons/resources_spreadsheet_view/text_editing_utils.gd index 5e348cd..907426f 100644 --- a/addons/resources_spreadsheet_view/text_editing_utils.gd +++ b/addons/resources_spreadsheet_view/text_editing_utils.gd @@ -1,4 +1,3 @@ -class_name TextEditingUtils extends RefCounted const non_typing_paragraph := "ΒΆ" diff --git a/addons/resources_spreadsheet_view/typed_cells/cell_editor.gd b/addons/resources_spreadsheet_view/typed_cells/cell_editor.gd index 580e67b..6575220 100644 --- a/addons/resources_spreadsheet_view/typed_cells/cell_editor.gd +++ b/addons/resources_spreadsheet_view/typed_cells/cell_editor.gd @@ -1,6 +1,8 @@ class_name SheetsCellEditor extends RefCounted +const TextEditingUtilsClass := preload("res://addons/resources_spreadsheet_view/text_editing_utils.gd") + const CELL_SCENE_DIR = "res://addons/resources_spreadsheet_view/typed_cells/" var hint_strings_array := [] @@ -21,7 +23,7 @@ func set_selected(node : Control, selected : bool): ## Override to change how the value is displayed. func set_value(node : Control, value): - node.text = TextEditingUtils.show_non_typing(str(value)) + node.text = TextEditingUtilsClass.show_non_typing(str(value)) ## Override to prevent the cell from being edited as text. func is_text(): diff --git a/addons/resources_spreadsheet_view/typed_cells/cell_editor_array.gd b/addons/resources_spreadsheet_view/typed_cells/cell_editor_array.gd index 061541b..9186cb3 100644 --- a/addons/resources_spreadsheet_view/typed_cells/cell_editor_array.gd +++ b/addons/resources_spreadsheet_view/typed_cells/cell_editor_array.gd @@ -1,6 +1,6 @@ extends SheetsCellEditor -const SettingsGrid := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") +const TablesPluginSettingsClass := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") func can_edit_value(value, type, property_hint, column_index) -> bool: @@ -12,9 +12,9 @@ func create_cell(caller : Control) -> Control: func set_value(node : Control, value): - var children = node.get_node("Box").get_children() - node.custom_minimum_size.x = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "array_min_width") - var colored = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "color_arrays") + var children := node.get_node("Box").get_children() + node.custom_minimum_size.x = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "array_min_width") + var colored = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "color_arrays") while children.size() < value.size(): children.append(Label.new()) node.get_node("Box").add_child(children[children.size() - 1]) diff --git a/addons/resources_spreadsheet_view/typed_cells/cell_editor_color.gd b/addons/resources_spreadsheet_view/typed_cells/cell_editor_color.gd index 77cb749..51e49b7 100644 --- a/addons/resources_spreadsheet_view/typed_cells/cell_editor_color.gd +++ b/addons/resources_spreadsheet_view/typed_cells/cell_editor_color.gd @@ -26,7 +26,7 @@ func can_edit_value(value, type, property_hint, property_hint_string) -> bool: func set_value(node : Control, value): if value is String: - node.text = TextEditingUtils.show_non_typing(str(value)) + node.text = TextEditingUtilsClass.show_non_typing(str(value)) else: node.text = value.to_html(true) diff --git a/addons/resources_spreadsheet_view/typed_cells/cell_editor_dict.gd b/addons/resources_spreadsheet_view/typed_cells/cell_editor_dict.gd index 08f1cf9..2c1a3fa 100644 --- a/addons/resources_spreadsheet_view/typed_cells/cell_editor_dict.gd +++ b/addons/resources_spreadsheet_view/typed_cells/cell_editor_dict.gd @@ -11,8 +11,8 @@ func create_cell(caller : Control) -> Control: func set_value(node : Control, value): var children = node.get_node("Box").get_children() - node.custom_minimum_size.x = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "array_min_width") - var colored = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "color_arrays") + node.custom_minimum_size.x = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "array_min_width") + var colored = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "color_arrays") while children.size() < value.size(): children.append(Label.new()) node.get_node("Box").add_child(children[children.size() - 1]) diff --git a/addons/resources_spreadsheet_view/typed_cells/cell_editor_resource.gd b/addons/resources_spreadsheet_view/typed_cells/cell_editor_resource.gd index ea7c7bc..c662bf5 100644 --- a/addons/resources_spreadsheet_view/typed_cells/cell_editor_resource.gd +++ b/addons/resources_spreadsheet_view/typed_cells/cell_editor_resource.gd @@ -1,6 +1,6 @@ extends SheetsCellEditor -const SettingsGrid := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") +const TablesPluginSettingsClass := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") var previewer : EditorResourcePreview @@ -41,7 +41,7 @@ func set_value(node : Control, value): previewer.queue_resource_preview(value.resource_path, self, &"_on_preview_loaded", node) node.get_node("Box/Tex").custom_minimum_size = Vector2.ONE * ProjectSettings.get_setting( - SettingsGrid.SETTING_PREFIX + "resource_preview_size" + TablesPluginSettingsClass.PREFIX + "resource_preview_size" ) diff --git a/addons/resources_spreadsheet_view/typed_editors/dock_array.gd b/addons/resources_spreadsheet_view/typed_editors/dock_array.gd index ef232eb..ef6beaa 100644 --- a/addons/resources_spreadsheet_view/typed_editors/dock_array.gd +++ b/addons/resources_spreadsheet_view/typed_editors/dock_array.gd @@ -69,7 +69,7 @@ func _add_value(value): _stored_value.append(value) var values = sheet.get_edited_cells_values() var cur_value - var dupe_array : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_array : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_array: @@ -85,7 +85,7 @@ func _remove_value(value): _stored_value.remove_at(_stored_value.find(value)) var values = sheet.get_edited_cells_values() var cur_value : Array - var dupe_array : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_array : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_array: @@ -148,7 +148,7 @@ func _on_RemoveLast_pressed(): _stored_value.pop_back() var values = sheet.get_edited_cells_values() var cur_value : Array - var dupe_array : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_array : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_array: diff --git a/addons/resources_spreadsheet_view/typed_editors/dock_base.gd b/addons/resources_spreadsheet_view/typed_editors/dock_base.gd index a63eb74..65b6eb2 100644 --- a/addons/resources_spreadsheet_view/typed_editors/dock_base.gd +++ b/addons/resources_spreadsheet_view/typed_editors/dock_base.gd @@ -2,7 +2,7 @@ class_name SheetsDockEditor extends Control -const SettingsGrid := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") +const TablesPluginSettingsClass := preload("res://addons/resources_spreadsheet_view/settings_grid.gd") @export var path_property_name := NodePath("Header/Label") diff --git a/addons/resources_spreadsheet_view/typed_editors/dock_dict.gd b/addons/resources_spreadsheet_view/typed_editors/dock_dict.gd index 75d388e..b25b19c 100644 --- a/addons/resources_spreadsheet_view/typed_editors/dock_dict.gd +++ b/addons/resources_spreadsheet_view/typed_editors/dock_dict.gd @@ -40,7 +40,7 @@ func _add_value(value): var values = sheet.get_edited_cells_values() var cur_value - var dupe_value : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_value : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_value and (_stored_type == TYPE_DICTIONARY or cur_value.resource_path.rfind("::") != -1): @@ -59,7 +59,7 @@ func _remove_value(_value): var values = sheet.get_edited_cells_values() var cur_value - var dupe_value : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_value : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_value and (_stored_type == TYPE_DICTIONARY or cur_value.resource_path.rfind("::") != -1): @@ -103,7 +103,7 @@ func _on_Replace_pressed(): var values = sheet.get_edited_cells_values() var cur_value - var dupe_value : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_value : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_value and (_stored_type == TYPE_DICTIONARY or cur_value.resource_path.rfind("::") != -1): diff --git a/addons/resources_spreadsheet_view/typed_editors/dock_enum_array.gd b/addons/resources_spreadsheet_view/typed_editors/dock_enum_array.gd index 2418c96..5e6d3d2 100644 --- a/addons/resources_spreadsheet_view/typed_editors/dock_enum_array.gd +++ b/addons/resources_spreadsheet_view/typed_editors/dock_enum_array.gd @@ -52,7 +52,7 @@ func _add_value(option_value): _stored_value.append(option_value) var values = sheet.get_edited_cells_values() var cur_value - var dupe_array : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_array : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_array: @@ -68,7 +68,7 @@ func _remove_value(option_value): _stored_value.append(option_value) var values = sheet.get_edited_cells_values() var cur_value - var dupe_array : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_array : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_array: @@ -95,7 +95,7 @@ func _on_Remove_pressed(): _stored_value.remove_at(_stored_value.size() - 1) var values = sheet.get_edited_cells_values() var cur_value - var dupe_array : bool = ProjectSettings.get_setting(SettingsGrid.SETTING_PREFIX + "dupe_arrays") + var dupe_array : bool = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "dupe_arrays") for i in values.size(): cur_value = values[i] if dupe_array: