<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorInspector" inherits="ScrollContainer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		A control used to edit properties of an object.
	</brief_description>
	<description>
		This is the control that implements property editing in the editor's Settings dialogs, the Inspector dock, etc. To get the [EditorInspector] used in the editor's Inspector dock, use [method EditorInterface.get_inspector].
		[EditorInspector] will show properties in the same order as the array returned by [method Object.get_property_list].
		If a property's name is path-like (i.e. if it contains forward slashes), [EditorInspector] will create nested sections for "directories" along the path. For example, if a property is named [code]highlighting/gdscript/node_path_color[/code], it will be shown as "Node Path Color" inside the "GDScript" section nested inside the "Highlighting" section.
		If a property has [constant PROPERTY_USAGE_GROUP] usage, it will group subsequent properties whose name starts with the property's hint string. The group ends when a property does not start with that hint string or when a new group starts. An empty group name effectively ends the current group. [EditorInspector] will create a top-level section for each group. For example, if a property with group usage is named [code]Collide With[/code] and its hint string is [code]collide_with_[/code], a subsequent [code]collide_with_area[/code] property will be shown as "Area" inside the "Collide With" section. There is also a special case: when the hint string contains the name of a property, that property is grouped too. This is mainly to help grouping properties like [code]font[/code], [code]font_color[/code] and [code]font_size[/code] (using the hint string [code]font_[/code]).
		If a property has [constant PROPERTY_USAGE_SUBGROUP] usage, a subgroup will be created in the same way as a group, and a second-level section will be created for each subgroup.
		[b]Note:[/b] Unlike sections created from path-like property names, [EditorInspector] won't capitalize the name for sections created from groups. So properties with group usage usually use capitalized names instead of snake_cased names.
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="edit">
			<return type="void" />
			<param index="0" name="object" type="Object" />
			<description>
				Shows the properties of the given [param object] in this inspector for editing. To clear the inspector, call this method with [code]null[/code].
				[b]Note:[/b] If you want to edit an object in the editor's main inspector, use the [code]edit_*[/code] methods in [EditorInterface] instead.
			</description>
		</method>
		<method name="get_edited_object">
			<return type="Object" />
			<description>
				Returns the object currently selected in this inspector.
			</description>
		</method>
		<method name="get_selected_path" qualifiers="const">
			<return type="String" />
			<description>
				Gets the path of the currently selected property.
			</description>
		</method>
		<method name="instantiate_property_editor" qualifiers="static">
			<return type="EditorProperty" />
			<param index="0" name="object" type="Object" />
			<param index="1" name="type" type="int" enum="Variant.Type" />
			<param index="2" name="path" type="String" />
			<param index="3" name="hint" type="int" enum="PropertyHint" />
			<param index="4" name="hint_text" type="String" />
			<param index="5" name="usage" type="int" />
			<param index="6" name="wide" type="bool" default="false" />
			<description>
				Creates a property editor that can be used by plugin UI to edit the specified property of an [param object].
			</description>
		</method>
	</methods>
	<members>
		<member name="draw_focus_border" type="bool" setter="set_draw_focus_border" getter="get_draw_focus_border" overrides="ScrollContainer" default="true" />
		<member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" overrides="Control" enum="Control.FocusMode" default="2" />
		<member name="follow_focus" type="bool" setter="set_follow_focus" getter="is_following_focus" overrides="ScrollContainer" default="true" />
		<member name="horizontal_scroll_mode" type="int" setter="set_horizontal_scroll_mode" getter="get_horizontal_scroll_mode" overrides="ScrollContainer" enum="ScrollContainer.ScrollMode" default="0" />
	</members>
	<signals>
		<signal name="edited_object_changed">
			<description>
				Emitted when the object being edited by the inspector has changed.
			</description>
		</signal>
		<signal name="object_id_selected">
			<param index="0" name="id" type="int" />
			<description>
				Emitted when the Edit button of an [Object] has been pressed in the inspector. This is mainly used in the remote scene tree Inspector.
			</description>
		</signal>
		<signal name="property_deleted">
			<param index="0" name="property" type="String" />
			<description>
				Emitted when a property is removed from the inspector.
			</description>
		</signal>
		<signal name="property_edited">
			<param index="0" name="property" type="String" />
			<description>
				Emitted when a property is edited in the inspector.
			</description>
		</signal>
		<signal name="property_keyed">
			<param index="0" name="property" type="String" />
			<param index="1" name="value" type="Variant" />
			<param index="2" name="advance" type="bool" />
			<description>
				Emitted when a property is keyed in the inspector. Properties can be keyed by clicking the "key" icon next to a property when the Animation panel is toggled.
			</description>
		</signal>
		<signal name="property_selected">
			<param index="0" name="property" type="String" />
			<description>
				Emitted when a property is selected in the inspector.
			</description>
		</signal>
		<signal name="property_toggled">
			<param index="0" name="property" type="String" />
			<param index="1" name="checked" type="bool" />
			<description>
				Emitted when a boolean property is toggled in the inspector.
				[b]Note:[/b] This signal is never emitted if the internal [code]autoclear[/code] property enabled. Since this property is always enabled in the editor inspector, this signal is never emitted by the editor itself.
			</description>
		</signal>
		<signal name="resource_selected">
			<param index="0" name="resource" type="Resource" />
			<param index="1" name="path" type="String" />
			<description>
				Emitted when a resource is selected in the inspector.
			</description>
		</signal>
		<signal name="restart_requested">
			<description>
				Emitted when a property that requires a restart to be applied is edited in the inspector. This is only used in the Project Settings and Editor Settings.
			</description>
		</signal>
	</signals>
</class>
