tool
extends Control

var editor
var paint_canvas

func _ready():
	editor = owner
	paint_canvas = editor.find_node("PaintCanvas")
	
	for i in get_node("Buttons").get_children():
		i.connect("item_pressed", self, "button_pressed")


func button_pressed(button_name, button_item, id):
#	print("pressed: ", button_name)
#	print("pressed item is: '%s'" % button_item)
	
	match button_name:
		"File":
			handle_file_menu(button_item, id)
		"Edit":
			handle_edit_menu(button_item, id)
		"Canvas":
			handle_canvas_menu(button_item, id)
		"Layer":
			handle_layer_menu(button_item, id)
		"Grid":
			handle_grid_menu(button_item, id)
		"Magic":
			handle_magic_menu(button_item, id)
		"Editor":
			handle_editor_menu(button_item, id)


func handle_file_menu(pressed_item: String, id):
	match pressed_item:
		"Save":
			owner.get_node("SaveFileDialog").show()
		"Load":
			owner.get_node("LoadFileDialog").show()
		"New":
			owner.get_node("ConfirmationDialog").show()


func handle_edit_menu(pressed_item: String, id):
	match pressed_item:
		"Add Layer":
			editor.add_new_layer()


func handle_canvas_menu(pressed_item: String, id):
	match pressed_item:
		"Change Size":
			owner.get_node("ChangeCanvasSize").show()
		"Crop To Content":
			owner.paint_canvas.crop_to_content()


func handle_layer_menu(pressed_item: String, id):
	match pressed_item:
		"Add Layer":
			editor.add_new_layer()
		"Delete Layer":
			editor.remove_active_layer()
		"Duplicate Layer":
			editor.duplicate_active_layer()
		"Clear Layer":
			owner.paint_canvas.clear_active_layer()
		"Toggle Alpha Locked":
			owner.paint_canvas.active_layer.toggle_alpha_locked()
			$Buttons/Layer.get_popup().set_item_checked(id, not $Buttons/Layer.get_popup().is_item_checked(id))
			owner.find_node("LockAlpha").pressed = $Buttons/Layer.get_popup().is_item_checked(id)


func handle_grid_menu(pressed_item: String, id):
	match pressed_item:
		"Change Grid Size":
			owner.get_node("ChangeGridSizeDialog").show()
		"Toggle Grid":
			owner.paint_canvas.toggle_grid()


func handle_magic_menu(pressed_item: String, id):
	match pressed_item:
		"Add Layer":
			editor.add_new_layer()


func handle_editor_menu(pressed_item: String, id):
	match pressed_item:
		"Settings":
			owner.get_node("Settings").show()
		"Toggle Grid":
			var grids_node = owner.find_node("Grids")
			grids_node.visible = !grids_node.visible
		"Reset Canvas Position":
			owner.paint_canvas_node.rect_position = Vector2(0, 0)


func is_any_menu_open() -> bool:
	for child in $Buttons.get_children():
		if child.get_popup().visible:
			return true
	return false