1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
extends Button class_name GridMenuButton onready var popup :Popup = $Popup onready var gridmenu :GridMenu= $Popup/GridMenu signal selected(index) var selected := 0 setget set_selected var items := [] func add_item(icon, tooltip := "", size:=Vector2(40, 30)): items.append(icon) gridmenu.add_item(icon, tooltip, size) func _on_GridMenu_pressed(index:int): set_selected(index) emit_signal("selected", index) popup.hide() func set_selected(index:int): selected = index icon = items[index] func _pressed() -> void: popup.rect_size=Vector2.ZERO var rect := popup.get_global_rect() rect.position = rect_global_position - Vector2(50, 50) popup.popup(rect) gridmenu.open()