<?xml version="1.0" encoding="UTF-8" ?>
<class name="PopupMenu" inherits="Popup" version="3.3">
	<brief_description>
		PopupMenu displays a list of options.
	</brief_description>
	<description>
		[PopupMenu] is a [Control] that displays a list of options. They are popular in toolbars or context menus.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="add_check_item">
			<return type="void" />
			<argument index="0" name="label" type="String" />
			<argument index="1" name="id" type="int" default="-1" />
			<argument index="2" name="accel" type="int" default="0" />
			<description>
				Adds a new checkable item with text [code]label[/code].
				An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
				[b]Note:[/b] Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.
			</description>
		</method>
		<method name="add_check_shortcut">
			<return type="void" />
			<argument index="0" name="shortcut" type="ShortCut" />
			<argument index="1" name="id" type="int" default="-1" />
			<argument index="2" name="global" type="bool" default="false" />
			<description>
				Adds a new checkable item and assigns the specified [ShortCut] to it. Sets the label of the checkbox to the [ShortCut]'s name.
				An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
				[b]Note:[/b] Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.
			</description>
		</method>
		<method name="add_icon_check_item">
			<return type="void" />
			<argument index="0" name="texture" type="Texture" />
			<argument index="1" name="label" type="String" />
			<argument index="2" name="id" type="int" default="-1" />
			<argument index="3" name="accel" type="int" default="0" />
			<description>
				Adds a new checkable item with text [code]label[/code] and icon [code]texture[/code].
				An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
				[b]Note:[/b] Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.
			</description>
		</method>
		<method name="add_icon_check_shortcut">
			<return type="void" />
			<argument index="0" name="texture" type="Texture" />
			<argument index="1" name="shortcut" type="ShortCut" />
			<argument index="2" name="id" type="int" default="-1" />
			<argument index="3" name="global" type="bool" default="false" />
			<description>
				Adds a new checkable item and assigns the specified [ShortCut] and icon [code]texture[/code] to it. Sets the label of the checkbox to the [ShortCut]'s name.
				An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
				[b]Note:[/b] Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.
			</description>
		</method>
		<method name="add_icon_item">
			<return type="void" />
			<argument index="0" name="texture" type="Texture" />
			<argument index="1" name="label" type="String" />
			<argument index="2" name="id" type="int" default="-1" />
			<argument index="3" name="accel" type="int" default="0" />
			<description>
				Adds a new item with text [code]label[/code] and icon [code]texture[/code].
				An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
			</description>
		</method>
		<method name="add_icon_radio_check_item">
			<return type="void" />
			<argument index="0" name="texture" type="Texture" />
			<argument index="1" name="label" type="String" />
			<argument index="2" name="id" type="int" default="-1" />
			<argument index="3" name="accel" type="int" default="0" />
			<description>
				Same as [method add_icon_check_item], but uses a radio check button.
			</description>
		</method>
		<method name="add_icon_radio_check_shortcut">
			<return type="void" />
			<argument index="0" name="texture" type="Texture" />
			<argument index="1" name="shortcut" type="ShortCut" />
			<argument index="2" name="id" type="int" default="-1" />
			<argument index="3" name="global" type="bool" default="false" />
			<description>
				Same as [method add_icon_check_shortcut], but uses a radio check button.
			</description>
		</method>
		<method name="add_icon_shortcut">
			<return type="void" />
			<argument index="0" name="texture" type="Texture" />
			<argument index="1" name="shortcut" type="ShortCut" />
			<argument index="2" name="id" type="int" default="-1" />
			<argument index="3" name="global" type="bool" default="false" />
			<description>
				Adds a new item and assigns the specified [ShortCut] and icon [code]texture[/code] to it. Sets the label of the checkbox to the [ShortCut]'s name.
				An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
			</description>
		</method>
		<method name="add_item">
			<return type="void" />
			<argument index="0" name="label" type="String" />
			<argument index="1" name="id" type="int" default="-1" />
			<argument index="2" name="accel" type="int" default="0" />
			<description>
				Adds a new item with text [code]label[/code].
				An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
			</description>
		</method>
		<method name="add_multistate_item">
			<return type="void" />
			<argument index="0" name="label" type="String" />
			<argument index="1" name="max_states" type="int" />
			<argument index="2" name="default_state" type="int" default="0" />
			<argument index="3" name="id" type="int" default="-1" />
			<argument index="4" name="accel" type="int" default="0" />
			<description>
				Adds a new multistate item with text [code]label[/code].
				Contrarily to normal binary items, multistate items can have more than two states, as defined by [code]max_states[/code]. Each press or activate of the item will increase the state by one. The default value is defined by [code]default_state[/code].
				An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
			</description>
		</method>
		<method name="add_radio_check_item">
			<return type="void" />
			<argument index="0" name="label" type="String" />
			<argument index="1" name="id" type="int" default="-1" />
			<argument index="2" name="accel" type="int" default="0" />
			<description>
				Adds a new radio check button with text [code]label[/code].
				An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
				[b]Note:[/b] Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.
			</description>
		</method>
		<method name="add_radio_check_shortcut">
			<return type="void" />
			<argument index="0" name="shortcut" type="ShortCut" />
			<argument index="1" name="id" type="int" default="-1" />
			<argument index="2" name="global" type="bool" default="false" />
			<description>
				Adds a new radio check button and assigns a [ShortCut] to it. Sets the label of the checkbox to the [ShortCut]'s name.
				An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
				[b]Note:[/b] Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method set_item_checked] for more info on how to control it.
			</description>
		</method>
		<method name="add_separator">
			<return type="void" />
			<argument index="0" name="label" type="String" default="&quot;&quot;" />
			<argument index="1" name="id" type="int" default="-1" />
			<description>
				Adds a separator between items. Separators also occupy an index, which you can set by using the [code]id[/code] parameter.
				A [code]label[/code] can optionally be provided, which will appear at the center of the separator.
			</description>
		</method>
		<method name="add_shortcut">
			<return type="void" />
			<argument index="0" name="shortcut" type="ShortCut" />
			<argument index="1" name="id" type="int" default="-1" />
			<argument index="2" name="global" type="bool" default="false" />
			<description>
				Adds a [ShortCut].
				An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
			</description>
		</method>
		<method name="add_submenu_item">
			<return type="void" />
			<argument index="0" name="label" type="String" />
			<argument index="1" name="submenu" type="String" />
			<argument index="2" name="id" type="int" default="-1" />
			<description>
				Adds an item that will act as a submenu of the parent [PopupMenu] node when clicked. The [code]submenu[/code] argument is the name of the child [PopupMenu] node that will be shown when the item is clicked.
				An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
			</description>
		</method>
		<method name="clear">
			<return type="void" />
			<description>
				Removes all items from the [PopupMenu].
			</description>
		</method>
		<method name="get_current_index" qualifiers="const">
			<return type="int" />
			<description>
				Returns the index of the currently focused item. Returns [code]-1[/code] if no item is focused.
			</description>
		</method>
		<method name="get_item_accelerator" qualifiers="const">
			<return type="int" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the accelerator of the item at index [code]idx[/code]. Accelerators are special combinations of keys that activate the item, no matter which control is focused.
			</description>
		</method>
		<method name="get_item_count" qualifiers="const">
			<return type="int" />
			<description>
				Returns the number of items in the [PopupMenu].
			</description>
		</method>
		<method name="get_item_icon" qualifiers="const">
			<return type="Texture" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the icon of the item at index [code]idx[/code].
			</description>
		</method>
		<method name="get_item_id" qualifiers="const">
			<return type="int" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the id of the item at index [code]idx[/code]. [code]id[/code] can be manually assigned, while index can not.
			</description>
		</method>
		<method name="get_item_index" qualifiers="const">
			<return type="int" />
			<argument index="0" name="id" type="int" />
			<description>
				Returns the index of the item containing the specified [code]id[/code]. Index is automatically assigned to each item by the engine. Index can not be set manually.
			</description>
		</method>
		<method name="get_item_metadata" qualifiers="const">
			<return type="Variant" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the metadata of the specified item, which might be of any type. You can set it with [method set_item_metadata], which provides a simple way of assigning context data to items.
			</description>
		</method>
		<method name="get_item_shortcut" qualifiers="const">
			<return type="ShortCut" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the [ShortCut] associated with the specified [code]idx[/code] item.
			</description>
		</method>
		<method name="get_item_submenu" qualifiers="const">
			<return type="String" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the submenu name of the item at index [code]idx[/code]. See [method add_submenu_item] for more info on how to add a submenu.
			</description>
		</method>
		<method name="get_item_text" qualifiers="const">
			<return type="String" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the text of the item at index [code]idx[/code].
			</description>
		</method>
		<method name="get_item_tooltip" qualifiers="const">
			<return type="String" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns the tooltip associated with the specified index index [code]idx[/code].
			</description>
		</method>
		<method name="is_hide_on_window_lose_focus" qualifiers="const">
			<return type="bool" />
			<description>
				Returns [code]true[/code] if the popup will be hidden when the window loses focus or not.
			</description>
		</method>
		<method name="is_item_checkable" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns [code]true[/code] if the item at index [code]idx[/code] is checkable in some way, i.e. if it has a checkbox or radio button.
				[b]Note:[/b] Checkable items just display a checkmark or radio button, but don't have any built-in checking behavior and must be checked/unchecked manually.
			</description>
		</method>
		<method name="is_item_checked" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns [code]true[/code] if the item at index [code]idx[/code] is checked.
			</description>
		</method>
		<method name="is_item_disabled" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns [code]true[/code] if the item at index [code]idx[/code] is disabled. When it is disabled it can't be selected, or its action invoked.
				See [method set_item_disabled] for more info on how to disable an item.
			</description>
		</method>
		<method name="is_item_radio_checkable" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns [code]true[/code] if the item at index [code]idx[/code] has radio button-style checkability.
				[b]Note:[/b] This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.
			</description>
		</method>
		<method name="is_item_separator" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns [code]true[/code] if the item is a separator. If it is, it will be displayed as a line. See [method add_separator] for more info on how to add a separator.
			</description>
		</method>
		<method name="is_item_shortcut_disabled" qualifiers="const">
			<return type="bool" />
			<argument index="0" name="idx" type="int" />
			<description>
				Returns [code]true[/code] if the specified item's shortcut is disabled.
			</description>
		</method>
		<method name="remove_item">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<description>
				Removes the item at index [code]idx[/code] from the menu.
				[b]Note:[/b] The indices of items after the removed item will be shifted by one.
			</description>
		</method>
		<method name="set_hide_on_window_lose_focus">
			<return type="void" />
			<argument index="0" name="enable" type="bool" />
			<description>
				Hides the [PopupMenu] when the window loses focus.
			</description>
		</method>
		<method name="set_item_accelerator">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="accel" type="int" />
			<description>
				Sets the accelerator of the item at index [code]idx[/code]. Accelerators are special combinations of keys that activate the item, no matter which control is focused.
			</description>
		</method>
		<method name="set_item_as_checkable">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="enable" type="bool" />
			<description>
				Sets whether the item at index [code]idx[/code] has a checkbox. If [code]false[/code], sets the type of the item to plain text.
				[b]Note:[/b] Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually.
			</description>
		</method>
		<method name="set_item_as_radio_checkable">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="enable" type="bool" />
			<description>
				Sets the type of the item at the specified index [code]idx[/code] to radio button. If [code]false[/code], sets the type of the item to plain text.
			</description>
		</method>
		<method name="set_item_as_separator">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="enable" type="bool" />
			<description>
				Mark the item at index [code]idx[/code] as a separator, which means that it would be displayed as a line. If [code]false[/code], sets the type of the item to plain text.
			</description>
		</method>
		<method name="set_item_checked">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="checked" type="bool" />
			<description>
				Sets the checkstate status of the item at index [code]idx[/code].
			</description>
		</method>
		<method name="set_item_disabled">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="disabled" type="bool" />
			<description>
				Enables/disables the item at index [code]idx[/code]. When it is disabled, it can't be selected and its action can't be invoked.
			</description>
		</method>
		<method name="set_item_icon">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="icon" type="Texture" />
			<description>
				Replaces the [Texture] icon of the specified [code]idx[/code].
			</description>
		</method>
		<method name="set_item_id">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="id" type="int" />
			<description>
				Sets the [code]id[/code] of the item at index [code]idx[/code].
			</description>
		</method>
		<method name="set_item_metadata">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="metadata" type="Variant" />
			<description>
				Sets the metadata of an item, which may be of any type. You can later get it with [method get_item_metadata], which provides a simple way of assigning context data to items.
			</description>
		</method>
		<method name="set_item_multistate">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="state" type="int" />
			<description>
				Sets the state of a multistate item. See [method add_multistate_item] for details.
			</description>
		</method>
		<method name="set_item_shortcut">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="shortcut" type="ShortCut" />
			<argument index="2" name="global" type="bool" default="false" />
			<description>
				Sets a [ShortCut] for the specified item [code]idx[/code].
			</description>
		</method>
		<method name="set_item_shortcut_disabled">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="disabled" type="bool" />
			<description>
				Disables the [ShortCut] of the specified index [code]idx[/code].
			</description>
		</method>
		<method name="set_item_submenu">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="submenu" type="String" />
			<description>
				Sets the submenu of the item at index [code]idx[/code]. The submenu is the name of a child [PopupMenu] node that would be shown when the item is clicked.
			</description>
		</method>
		<method name="set_item_text">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="text" type="String" />
			<description>
				Sets the text of the item at index [code]idx[/code].
			</description>
		</method>
		<method name="set_item_tooltip">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<argument index="1" name="tooltip" type="String" />
			<description>
				Sets the [String] tooltip of the item at the specified index [code]idx[/code].
			</description>
		</method>
		<method name="toggle_item_checked">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<description>
				Toggles the check state of the item of the specified index [code]idx[/code].
			</description>
		</method>
		<method name="toggle_item_multistate">
			<return type="void" />
			<argument index="0" name="idx" type="int" />
			<description>
				Cycle to the next state of a multistate item. See [method add_multistate_item] for details.
			</description>
		</method>
	</methods>
	<members>
		<member name="allow_search" type="bool" setter="set_allow_search" getter="get_allow_search" default="false">
			If [code]true[/code], allows navigating [PopupMenu] with letter keys.
		</member>
		<member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" override="true" enum="Control.FocusMode" default="2" />
		<member name="hide_on_checkable_item_selection" type="bool" setter="set_hide_on_checkable_item_selection" getter="is_hide_on_checkable_item_selection" default="true">
			If [code]true[/code], hides the [PopupMenu] when a checkbox or radio button is selected.
		</member>
		<member name="hide_on_item_selection" type="bool" setter="set_hide_on_item_selection" getter="is_hide_on_item_selection" default="true">
			If [code]true[/code], hides the [PopupMenu] when an item is selected.
		</member>
		<member name="hide_on_state_item_selection" type="bool" setter="set_hide_on_state_item_selection" getter="is_hide_on_state_item_selection" default="false">
			If [code]true[/code], hides the [PopupMenu] when a state item is selected.
		</member>
		<member name="submenu_popup_delay" type="float" setter="set_submenu_popup_delay" getter="get_submenu_popup_delay" default="0.3">
			Sets the delay time in seconds for the submenu item to popup on mouse hovering. If the popup menu is added as a child of another (acting as a submenu), it will inherit the delay time of the parent menu item.
		</member>
	</members>
	<signals>
		<signal name="id_focused">
			<argument index="0" name="id" type="int" />
			<description>
				Emitted when user navigated to an item of some [code]id[/code] using [code]ui_up[/code] or [code]ui_down[/code] action.
			</description>
		</signal>
		<signal name="id_pressed">
			<argument index="0" name="id" type="int" />
			<description>
				Emitted when an item of some [code]id[/code] is pressed or its accelerator is activated.
			</description>
		</signal>
		<signal name="index_pressed">
			<argument index="0" name="index" type="int" />
			<description>
				Emitted when an item of some [code]index[/code] is pressed or its accelerator is activated.
			</description>
		</signal>
	</signals>
	<constants>
	</constants>
	<theme_items>
		<theme_item name="checked" type="Texture">
			[Texture] icon for the checked checkbox items.
		</theme_item>
		<theme_item name="font" type="Font">
			[Font] used for the menu items.
		</theme_item>
		<theme_item name="font_color" type="Color" default="Color( 0.88, 0.88, 0.88, 1 )">
			The default text [Color] for menu items' names.
		</theme_item>
		<theme_item name="font_color_accel" type="Color" default="Color( 0.7, 0.7, 0.7, 0.8 )">
			The text [Color] used for shortcuts and accelerators that show next to the menu item name when defined. See [method get_item_accelerator] for more info on accelerators.
		</theme_item>
		<theme_item name="font_color_disabled" type="Color" default="Color( 0.4, 0.4, 0.4, 0.8 )">
			[Color] used for disabled menu items' text.
		</theme_item>
		<theme_item name="font_color_hover" type="Color" default="Color( 0.88, 0.88, 0.88, 1 )">
			[Color] used for the hovered text.
		</theme_item>
		<theme_item name="font_color_separator" type="Color" default="Color( 0.88, 0.88, 0.88, 1 )">
			[Color] used for labeled separators' text. See [method add_separator].
		</theme_item>
		<theme_item name="hover" type="StyleBox">
			[StyleBox] displayed when the [PopupMenu] item is hovered.
		</theme_item>
		<theme_item name="hseparation" type="int" default="4">
			The horizontal space between the item's name and the shortcut text/submenu arrow.
		</theme_item>
		<theme_item name="labeled_separator_left" type="StyleBox">
			[StyleBox] for the left side of labeled separator. See [method add_separator].
		</theme_item>
		<theme_item name="labeled_separator_right" type="StyleBox">
			[StyleBox] for the right side of labeled separator. See [method add_separator].
		</theme_item>
		<theme_item name="panel" type="StyleBox">
			Default [StyleBox] of the [PopupMenu] items.
		</theme_item>
		<theme_item name="panel_disabled" type="StyleBox">
			[StyleBox] used when the [PopupMenu] item is disabled.
		</theme_item>
		<theme_item name="radio_checked" type="Texture">
			[Texture] icon for the checked radio button items.
		</theme_item>
		<theme_item name="radio_unchecked" type="Texture">
			[Texture] icon for the unchecked radio button items.
		</theme_item>
		<theme_item name="separator" type="StyleBox">
			[StyleBox] used for the separators. See [method add_separator].
		</theme_item>
		<theme_item name="submenu" type="Texture">
			[Texture] icon for the submenu arrow.
		</theme_item>
		<theme_item name="unchecked" type="Texture">
			[Texture] icon for the unchecked checkbox items.
		</theme_item>
		<theme_item name="vseparation" type="int" default="4">
			The vertical space between each menu item.
		</theme_item>
	</theme_items>
</class>
