tool
extends HBoxContainer

signal request_refresh_plugin(p_name)
signal confirm_refresh_plugin(p_name)

onready var options = $OptionButton

func _ready():
	$RefreshButton.icon = get_icon('Reload', 'EditorIcons')

func update_items(p_plugins):
	if not options:
		return
	options.clear()
	var plugin_dirs = p_plugins.keys()
	for idx in plugin_dirs.size():
		var plugin_dirname = plugin_dirs[idx]
		var plugin_name = p_plugins[plugin_dirname]
		options.add_item(plugin_name, idx)
		options.set_item_metadata(idx, plugin_dirname)

func select_plugin(p_name):
	if not options:
		return
	if p_name == null or p_name.empty():
		return

	for idx in options.get_item_count():
		var plugin = options.get_item_metadata(idx)
		if plugin == p_name:
			options.selected = options.get_item_id(idx)
			break

func _on_RefreshButton_pressed():
	if options.selected == -1:
		return # nothing selected

	var plugin = options.get_item_metadata(options.selected)
	if not plugin or plugin.empty():
		return
	emit_signal("request_refresh_plugin", plugin)

func show_warning(p_name):
	$ConfirmationDialog.dialog_text = """
		Plugin `%s` is currently disabled.\n
		Do you want to enable it now?
	""" % [p_name]
	$ConfirmationDialog.popup_centered()

func _on_ConfirmationDialog_confirmed():
	var plugin = options.get_item_metadata(options.selected)
	emit_signal('confirm_refresh_plugin', plugin)