Files
GGJ26/addons/resources_spreadsheet_view/main_screen/table_header.gd
minimata 158e18f1fe
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 8s
Create tag and build when new code gets to main / Export (push) Successful in 1m13s
Added resource table plugin
2026-01-31 10:23:20 +01:00

73 lines
2.0 KiB
GDScript

@tool
extends HBoxContainer
var manager : Control
func set_label(label : String):
$"Button".text = label.capitalize()
$"Button".tooltip_text = label + "\nClick to sort."
func _ready():
$"Button".gui_input.connect(_on_main_gui_input)
$"Button2".about_to_popup.connect(_on_about_to_popup)
$"Button2".get_popup().id_pressed.connect(_on_list_id_pressed)
func _on_about_to_popup():
var menu_popup : PopupMenu = $"Button2".get_popup()
menu_popup.clear()
menu_popup.add_item("Select All", 0)
menu_popup.add_item("Hide", 1)
if !manager.editor_view.column_can_solo_open(get_index()):
menu_popup.add_item("(not a Resource property)", 2)
menu_popup.set_item_disabled(2, true)
menu_popup.add_separator("", 3)
else:
menu_popup.add_item("Open Sub-Resources of Column", 2)
if manager.editor_view.get_edited_cells_values().size() == 0 or manager.editor_view.get_selected_column() != get_index():
menu_popup.add_item("(none selected)", 3)
menu_popup.set_item_disabled(3, true)
else:
menu_popup.add_item("Open Sub-Resources in Selection", 3)
func _on_main_gui_input(event : InputEvent):
if event is InputEventMouseButton and event.pressed:
var popup : Popup = $"Button2".get_popup()
if event.button_index == MOUSE_BUTTON_RIGHT:
_on_about_to_popup()
popup.visible = !popup.visible
popup.size = Vector2.ZERO
popup.position = Vector2i(get_global_mouse_position()) + get_viewport().position
else:
popup.visible = false
func _on_list_id_pressed(id : int):
match id:
0:
manager.select_column(get_index())
1:
manager.hide_column(get_index())
2:
manager.editor_view.column_solo_open(get_index())
3:
var resources_to_open_unique := {}
for x in manager.editor_view.get_edited_cells_values():
if x is Array:
for y in x:
resources_to_open_unique[y] = true
if x is Resource:
resources_to_open_unique[x] = true
if resources_to_open_unique.size() > 0:
manager.editor_view.display_resources(resources_to_open_unique.keys())