<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorProperty" inherits="Container" version="4.0">
	<brief_description>
		Custom control to edit properties for adding into the inspector.
	</brief_description>
	<description>
		This control allows property editing for one or multiple properties into [EditorInspector]. It is added via [EditorInspectorPlugin].
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="add_focusable">
			<return type="void">
			</return>
			<argument index="0" name="control" type="Control">
			</argument>
			<description>
				If any of the controls added can gain keyboard focus, add it here. This ensures that focus will be restored if the inspector is refreshed.
			</description>
		</method>
		<method name="emit_changed">
			<return type="void">
			</return>
			<argument index="0" name="property" type="StringName">
			</argument>
			<argument index="1" name="value" type="Variant">
			</argument>
			<argument index="2" name="field" type="StringName" default="@&quot;&quot;">
			</argument>
			<argument index="3" name="changing" type="bool" default="false">
			</argument>
			<description>
				If one or several properties have changed, this must be called. [code]field[/code] is used in case your editor can modify fields separately (as an example, Vector3.x). The [code]changing[/code] argument avoids the editor requesting this property to be refreshed (leave as [code]false[/code] if unsure).
			</description>
		</method>
		<method name="get_edited_object">
			<return type="Object">
			</return>
			<description>
				Gets the edited object.
			</description>
		</method>
		<method name="get_edited_property">
			<return type="StringName">
			</return>
			<description>
				Gets the edited property. If your editor is for a single property (added via [method EditorInspectorPlugin.parse_property]), then this will return the property.
			</description>
		</method>
		<method name="get_tooltip_text" qualifiers="const">
			<return type="String">
			</return>
			<description>
				Override if you want to allow a custom tooltip over your property.
			</description>
		</method>
		<method name="set_bottom_editor">
			<return type="void">
			</return>
			<argument index="0" name="editor" type="Control">
			</argument>
			<description>
				Adds controls with this function if you want them on the bottom (below the label).
			</description>
		</method>
		<method name="update_property" qualifiers="virtual">
			<return type="void">
			</return>
			<description>
				When this virtual function is called, you must update your editor.
			</description>
		</method>
	</methods>
	<members>
		<member name="checkable" type="bool" setter="set_checkable" getter="is_checkable" default="false">
			Used by the inspector, set when property is checkable.
		</member>
		<member name="checked" type="bool" setter="set_checked" getter="is_checked" default="false">
			Used by the inspector, when the property is checked.
		</member>
		<member name="draw_red" type="bool" setter="set_draw_red" getter="is_draw_red" default="false">
			Used by the inspector, when the property must draw with error color.
		</member>
		<member name="keying" type="bool" setter="set_keying" getter="is_keying" default="false">
			Used by the inspector, when the property can add keys for animation.
		</member>
		<member name="label" type="String" setter="set_label" getter="get_label" default="&quot;&quot;">
			Sets this property to change the label (if you want to show one).
		</member>
		<member name="read_only" type="bool" setter="set_read_only" getter="is_read_only" default="false">
			Used by the inspector, when the property is read-only.
		</member>
	</members>
	<signals>
		<signal name="multiple_properties_changed">
			<argument index="0" name="properties" type="PackedStringArray">
			</argument>
			<argument index="1" name="value" type="Array">
			</argument>
			<description>
				Emit it if you want multiple properties modified at the same time. Do not use if added via [method EditorInspectorPlugin.parse_property].
			</description>
		</signal>
		<signal name="object_id_selected">
			<argument index="0" name="property" type="StringName">
			</argument>
			<argument index="1" name="id" type="int">
			</argument>
			<description>
				Used by sub-inspectors. Emit it if what was selected was an Object ID.
			</description>
		</signal>
		<signal name="property_changed">
			<argument index="0" name="property" type="StringName">
			</argument>
			<argument index="1" name="value" type="Variant">
			</argument>
			<description>
				Do not emit this manually, use the [method emit_changed] method instead.
			</description>
		</signal>
		<signal name="property_checked">
			<argument index="0" name="property" type="StringName">
			</argument>
			<argument index="1" name="bool" type="String">
			</argument>
			<description>
				Emitted when a property was checked. Used internally.
			</description>
		</signal>
		<signal name="property_keyed">
			<argument index="0" name="property" type="StringName">
			</argument>
			<description>
				Emit it if you want to add this value as an animation key (check for keying being enabled first).
			</description>
		</signal>
		<signal name="property_keyed_with_value">
			<argument index="0" name="property" type="StringName">
			</argument>
			<argument index="1" name="value" type="Variant">
			</argument>
			<description>
				Emit it if you want to key a property with a single value.
			</description>
		</signal>
		<signal name="resource_selected">
			<argument index="0" name="path" type="String">
			</argument>
			<argument index="1" name="resource" type="Resource">
			</argument>
			<description>
				If you want a sub-resource to be edited, emit this signal with the resource.
			</description>
		</signal>
		<signal name="selected">
			<argument index="0" name="path" type="String">
			</argument>
			<argument index="1" name="focusable_idx" type="int">
			</argument>
			<description>
				Emitted when selected. Used internally.
			</description>
		</signal>
	</signals>
	<constants>
	</constants>
</class>