mirror of
https://github.com/godotengine/godot
synced 2024-09-05 09:26:39 +00:00
Merge pull request #92322 from groud/implement_custom_data_label
Display custom data name instead of indices in TileData inspector
This commit is contained in:
commit
f87be863ca
|
@ -78,9 +78,11 @@
|
|||
<param index="0" name="property" type="String" />
|
||||
<param index="1" name="editor" type="Control" />
|
||||
<param index="2" name="add_to_end" type="bool" default="false" />
|
||||
<param index="3" name="label" type="String" default="""" />
|
||||
<description>
|
||||
Adds a property editor for an individual property. The [param editor] control must extend [EditorProperty].
|
||||
There can be multiple property editors for a property. If [param add_to_end] is [code]true[/code], this newly added editor will be displayed after all the other editors of the property whose [param add_to_end] is [code]false[/code]. For example, the editor uses this parameter to add an "Edit Region" button for [member Sprite2D.region_rect] below the regular [Rect2] editor.
|
||||
[param label] can be used to choose a custom label for the property editor in the inspector. If left empty, the label is computed from the name of the property instead.
|
||||
</description>
|
||||
</method>
|
||||
<method name="add_property_editor_for_multiple_properties">
|
||||
|
|
41
editor/editor_inspector.compat.inc
Normal file
41
editor/editor_inspector.compat.inc
Normal file
|
@ -0,0 +1,41 @@
|
|||
/**************************************************************************/
|
||||
/* editor_inspector.compat.inc */
|
||||
/**************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* https://godotengine.org */
|
||||
/**************************************************************************/
|
||||
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
|
||||
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/**************************************************************************/
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
|
||||
void EditorInspectorPlugin::_add_property_editor_bind_compat_92322(const String &p_for_property, Control *p_prop, bool p_add_to_end) {
|
||||
add_property_editor(p_for_property, p_prop, p_add_to_end, "");
|
||||
}
|
||||
|
||||
void EditorInspectorPlugin::_bind_compatibility_methods() {
|
||||
ClassDB::bind_compatibility_method(D_METHOD("add_property_editor", "property", "editor", "add_to_end"), &EditorInspectorPlugin::_add_property_editor_bind_compat_92322, DEFVAL(false));
|
||||
}
|
||||
|
||||
#endif // DISABLE_DEPRECATED
|
|
@ -29,6 +29,7 @@
|
|||
/**************************************************************************/
|
||||
|
||||
#include "editor_inspector.h"
|
||||
#include "editor_inspector.compat.inc"
|
||||
|
||||
#include "core/os/keyboard.h"
|
||||
#include "editor/doc_tools.h"
|
||||
|
@ -1128,11 +1129,12 @@ void EditorInspectorPlugin::add_custom_control(Control *control) {
|
|||
added_editors.push_back(ae);
|
||||
}
|
||||
|
||||
void EditorInspectorPlugin::add_property_editor(const String &p_for_property, Control *p_prop, bool p_add_to_end) {
|
||||
void EditorInspectorPlugin::add_property_editor(const String &p_for_property, Control *p_prop, bool p_add_to_end, const String &p_label) {
|
||||
AddedEditor ae;
|
||||
ae.properties.push_back(p_for_property);
|
||||
ae.property_editor = p_prop;
|
||||
ae.add_to_end = p_add_to_end;
|
||||
ae.label = p_label;
|
||||
added_editors.push_back(ae);
|
||||
}
|
||||
|
||||
|
@ -1174,7 +1176,7 @@ void EditorInspectorPlugin::parse_end(Object *p_object) {
|
|||
|
||||
void EditorInspectorPlugin::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("add_custom_control", "control"), &EditorInspectorPlugin::add_custom_control);
|
||||
ClassDB::bind_method(D_METHOD("add_property_editor", "property", "editor", "add_to_end"), &EditorInspectorPlugin::add_property_editor, DEFVAL(false));
|
||||
ClassDB::bind_method(D_METHOD("add_property_editor", "property", "editor", "add_to_end", "label"), &EditorInspectorPlugin::add_property_editor, DEFVAL(false), DEFVAL(String()));
|
||||
ClassDB::bind_method(D_METHOD("add_property_editor_for_multiple_properties", "label", "properties", "editor"), &EditorInspectorPlugin::add_property_editor_for_multiple_properties);
|
||||
|
||||
GDVIRTUAL_BIND(_can_handle, "object")
|
||||
|
|
|
@ -252,9 +252,13 @@ protected:
|
|||
GDVIRTUAL7R(bool, _parse_property, Object *, Variant::Type, String, PropertyHint, String, BitField<PropertyUsageFlags>, bool)
|
||||
GDVIRTUAL1(_parse_end, Object *)
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
void _add_property_editor_bind_compat_92322(const String &p_for_property, Control *p_prop, bool p_add_to_end);
|
||||
static void _bind_compatibility_methods();
|
||||
#endif // DISABLE_DEPRECATED
|
||||
public:
|
||||
void add_custom_control(Control *control);
|
||||
void add_property_editor(const String &p_for_property, Control *p_prop, bool p_add_to_end = false);
|
||||
void add_property_editor(const String &p_for_property, Control *p_prop, bool p_add_to_end = false, const String &p_label = String());
|
||||
void add_property_editor_for_multiple_properties(const String &p_label, const Vector<String> &p_properties, Control *p_prop);
|
||||
|
||||
virtual bool can_handle(Object *p_object);
|
||||
|
|
|
@ -2938,6 +2938,18 @@ bool EditorInspectorPluginTileData::parse_property(Object *p_object, const Varia
|
|||
add_property_editor(p_path, ep);
|
||||
return true;
|
||||
}
|
||||
} else if (p_path.begins_with("custom_data_") && p_path.trim_prefix("custom_data_").is_valid_int()) {
|
||||
// Custom data layers.
|
||||
int layer_index = components[0].trim_prefix("custom_data_").to_int();
|
||||
ERR_FAIL_COND_V(layer_index < 0, false);
|
||||
EditorProperty *ep = EditorInspectorDefaultPlugin::get_editor_for_property(p_object, p_type, p_path, PROPERTY_HINT_NONE, "", PROPERTY_USAGE_DEFAULT);
|
||||
const TileSetAtlasSourceEditor::AtlasTileProxyObject *proxy_obj = Object::cast_to<TileSetAtlasSourceEditor::AtlasTileProxyObject>(p_object);
|
||||
const TileSetAtlasSource *atlas_source = *proxy_obj->get_edited_tile_set_atlas_source();
|
||||
ERR_FAIL_NULL_V(atlas_source, false);
|
||||
const TileSet *tile_set = atlas_source->get_tile_set();
|
||||
ERR_FAIL_NULL_V(tile_set, false);
|
||||
add_property_editor(p_path, ep, false, tile_set->get_custom_data_layer_name(layer_index));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -357,3 +357,10 @@ Validate extension JSON: Error: Field 'classes/RenderingServer/methods/canvas_it
|
|||
Validate extension JSON: Error: Field 'classes/RenderingServer/methods/canvas_item_add_rect/arguments': size changed value in new API, from 3 to 4.
|
||||
|
||||
Optional arguments added. Compatibility methods registered.
|
||||
|
||||
|
||||
GH-92322
|
||||
--------
|
||||
Validate extension JSON: Error: Field 'classes/EditorInspectorPlugin/methods/add_property_editor/arguments': size changed value in new API, from 3 to 4.
|
||||
|
||||
Optional arguments added. Compatibility methods registered.
|
||||
|
|
Loading…
Reference in a new issue