mirror of
https://github.com/Relintai/godot-resources-as-sheets-plugin.git
synced 2025-04-08 17:41:50 +02:00
parent
4873d821bb
commit
067c00779f
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
))
|
||||
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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()
|
||||
|
@ -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):
|
||||
|
@ -1,4 +1,3 @@
|
||||
class_name TextEditingUtils
|
||||
extends RefCounted
|
||||
|
||||
const non_typing_paragraph := "¶"
|
||||
|
@ -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():
|
||||
|
@ -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])
|
||||
|
@ -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)
|
||||
|
@ -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])
|
||||
|
@ -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"
|
||||
)
|
||||
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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):
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user