Added resource table plugin
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
@tool
|
||||
extends ColorRect
|
||||
|
||||
const TablesPluginSettingsClass := preload("res://addons/resources_spreadsheet_view/settings_grid.gd")
|
||||
|
||||
@onready var editor_view : Control = $"../../../../../.."
|
||||
@onready var grid_scroll : ScrollContainer = $"../../Scroll"
|
||||
@onready var grid : Container = $"../../Scroll/MarginContainer/TableGrid"
|
||||
|
||||
var children : Array[Control] = []
|
||||
var children_copy_cells : Array[Control] = []
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
grid_scroll.get_h_scroll_bar().value_changed.connect(_on_scroll_updated, CONNECT_DEFERRED)
|
||||
grid_scroll.get_v_scroll_bar().value_changed.connect(_on_scroll_updated, CONNECT_DEFERRED)
|
||||
|
||||
|
||||
func _on_grid_updated() -> void:
|
||||
if editor_view.rows.size() == 0:
|
||||
hide()
|
||||
return
|
||||
|
||||
visible = ProjectSettings.get_setting(TablesPluginSettingsClass.PREFIX + "freeze_first_column")
|
||||
for x in get_children():
|
||||
x.queue_free()
|
||||
|
||||
children.clear()
|
||||
children_copy_cells.clear()
|
||||
size.x = 0.0
|
||||
|
||||
await get_tree().process_frame
|
||||
|
||||
var first_visible_column := 0
|
||||
for i in editor_view.columns.size():
|
||||
if grid.get_child(i).visible:
|
||||
first_visible_column = i
|
||||
break
|
||||
|
||||
var total_column_count : int = editor_view.columns.size()
|
||||
children.resize(grid.get_child_count() / total_column_count)
|
||||
children_copy_cells.resize(children.size())
|
||||
for i in children.size():
|
||||
children_copy_cells[i] = grid.get_child(total_column_count * i + first_visible_column)
|
||||
children[i] = children_copy_cells[i].duplicate()
|
||||
children[i].mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
add_child(children[i])
|
||||
size.x = maxf(size.x, children_copy_cells[i].size.x)
|
||||
|
||||
size.y = grid.size.y
|
||||
color = get_theme_color(&"background", &"Editor")
|
||||
color.a *= 0.9
|
||||
_on_scroll_updated(0.0)
|
||||
|
||||
|
||||
func _on_scroll_updated(_new_value : float):
|
||||
position = Vector2(0.0, -grid_scroll.scroll_vertical)
|
||||
for i in children.size():
|
||||
children[i].size = children_copy_cells[i].size
|
||||
children[i].position = children_copy_cells[i].position
|
||||
Reference in New Issue
Block a user