-Ability to open resources in the same window
-Plenty of fixes and improvements to new inspector -Fixes that were needed to make inspector work better
This commit is contained in:
parent
3183375135
commit
4b5227ff77
26 changed files with 598 additions and 321 deletions
|
|
@ -118,8 +118,8 @@ void EditorPropertyMultilineText::_bind_methods() {
|
|||
|
||||
EditorPropertyMultilineText::EditorPropertyMultilineText() {
|
||||
HBoxContainer *hb = memnew(HBoxContainer);
|
||||
set_label_layout(LABEL_LAYOUT_TOP);
|
||||
add_child(hb);
|
||||
set_bottom_editor(hb);
|
||||
text = memnew(TextEdit);
|
||||
text->connect("text_changed", this, "_text_changed");
|
||||
add_focusable(text);
|
||||
|
|
@ -622,6 +622,7 @@ void EditorPropertyLayers::_button_pressed() {
|
|||
}
|
||||
|
||||
Rect2 gp = button->get_global_rect();
|
||||
layers->set_as_minsize();
|
||||
Vector2 popup_pos = gp.position - Vector2(layers->get_combined_minimum_size().x, 0);
|
||||
layers->set_global_position(popup_pos);
|
||||
layers->popup();
|
||||
|
|
@ -656,7 +657,7 @@ EditorPropertyLayers::EditorPropertyLayers() {
|
|||
button->set_text("..");
|
||||
button->connect("pressed", this, "_button_pressed");
|
||||
hb->add_child(button);
|
||||
set_label_layout(LABEL_LAYOUT_TOP);
|
||||
set_bottom_editor(hb);
|
||||
layers = memnew(PopupMenu);
|
||||
add_child(layers);
|
||||
layers->connect("id_pressed", this, "_menu_pressed");
|
||||
|
|
@ -1267,8 +1268,7 @@ EditorPropertyAABB::EditorPropertyAABB() {
|
|||
add_focusable(spin[i]);
|
||||
spin[i]->connect("value_changed", this, "_value_changed");
|
||||
}
|
||||
set_label_reference(spin[0]); //show text and buttons around this
|
||||
set_label_layout(LABEL_LAYOUT_TOP);
|
||||
set_bottom_editor(g);
|
||||
setting = false;
|
||||
}
|
||||
|
||||
|
|
@ -1330,8 +1330,7 @@ EditorPropertyTransform2D::EditorPropertyTransform2D() {
|
|||
add_focusable(spin[i]);
|
||||
spin[i]->connect("value_changed", this, "_value_changed");
|
||||
}
|
||||
set_label_reference(spin[0]); //show text and buttons around this
|
||||
set_label_layout(LABEL_LAYOUT_TOP);
|
||||
set_bottom_editor(g);
|
||||
setting = false;
|
||||
}
|
||||
|
||||
|
|
@ -1399,8 +1398,7 @@ EditorPropertyBasis::EditorPropertyBasis() {
|
|||
add_focusable(spin[i]);
|
||||
spin[i]->connect("value_changed", this, "_value_changed");
|
||||
}
|
||||
set_label_reference(spin[0]); //show text and buttons around this
|
||||
set_label_layout(LABEL_LAYOUT_TOP);
|
||||
set_bottom_editor(g);
|
||||
setting = false;
|
||||
}
|
||||
|
||||
|
|
@ -1474,8 +1472,7 @@ EditorPropertyTransform::EditorPropertyTransform() {
|
|||
add_focusable(spin[i]);
|
||||
spin[i]->connect("value_changed", this, "_value_changed");
|
||||
}
|
||||
set_label_reference(spin[0]); //show text and buttons around this
|
||||
set_label_layout(LABEL_LAYOUT_TOP);
|
||||
set_bottom_editor(g);
|
||||
setting = false;
|
||||
}
|
||||
|
||||
|
|
@ -1952,23 +1949,75 @@ void EditorPropertyResource::_update_menu() {
|
|||
}
|
||||
}
|
||||
|
||||
Rect2 gt = get_global_rect();
|
||||
Rect2 gt = edit->get_global_rect();
|
||||
menu->set_as_minsize();
|
||||
int ms = menu->get_combined_minimum_size().width;
|
||||
Vector2 popup_pos = gt.position + gt.size - Vector2(ms, 0);
|
||||
menu->set_position(popup_pos);
|
||||
menu->set_global_position(popup_pos);
|
||||
menu->popup();
|
||||
}
|
||||
|
||||
void EditorPropertyResource::_sub_inspector_property_keyed(const String &p_property, const Variant &p_value, bool) {
|
||||
|
||||
emit_signal("property_keyed_with_value", String(get_edited_property()) + ":" + p_property, p_value);
|
||||
}
|
||||
|
||||
void EditorPropertyResource::_sub_inspector_resource_selected(const RES &p_resource, const String &p_property) {
|
||||
|
||||
emit_signal("resource_selected", String(get_edited_property()) + ":" + p_property, p_resource);
|
||||
}
|
||||
|
||||
void EditorPropertyResource::_sub_inspector_object_id_selected(int p_id) {
|
||||
|
||||
emit_signal("object_id_selected", get_edited_property(), p_id);
|
||||
}
|
||||
|
||||
void EditorPropertyResource::update_property() {
|
||||
|
||||
RES res = get_edited_object()->get(get_edited_property());
|
||||
|
||||
if (use_sub_inspector) {
|
||||
|
||||
if (res.is_valid() != assign->is_toggle_mode()) {
|
||||
assign->set_toggle_mode(res.is_valid());
|
||||
}
|
||||
#ifdef TOOLS_ENABLED
|
||||
if (res.is_valid() && get_edited_object()->editor_is_section_unfolded(get_edited_property())) {
|
||||
|
||||
if (!sub_inspector) {
|
||||
sub_inspector = memnew(EditorInspector);
|
||||
sub_inspector->set_enable_v_scroll(false);
|
||||
|
||||
sub_inspector->connect("property_keyed", this, "_sub_inspector_property_keyed");
|
||||
sub_inspector->connect("resource_selected", this, "_sub_inspector_resource_selected");
|
||||
sub_inspector->connect("object_id_selected", this, "_sub_inspector_object_id_selected");
|
||||
sub_inspector->set_keying(is_keying());
|
||||
sub_inspector->set_read_only(is_read_only());
|
||||
sub_inspector->set_use_folding(is_using_folding());
|
||||
|
||||
add_child(sub_inspector);
|
||||
set_bottom_editor(sub_inspector);
|
||||
assign->set_pressed(true);
|
||||
}
|
||||
|
||||
if (res.ptr() != sub_inspector->get_edited_object()) {
|
||||
sub_inspector->edit(res.ptr());
|
||||
}
|
||||
|
||||
} else {
|
||||
if (sub_inspector) {
|
||||
set_bottom_editor(NULL);
|
||||
memdelete(sub_inspector);
|
||||
sub_inspector = NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (res == RES()) {
|
||||
assign->set_icon(Ref<Texture>());
|
||||
assign->set_text(TTR("[empty]"));
|
||||
assign->set_disabled(true);
|
||||
} else {
|
||||
assign->set_disabled(false);
|
||||
|
||||
Ref<Texture> icon;
|
||||
if (has_icon(res->get_class(), "EditorIcons"))
|
||||
|
|
@ -1999,7 +2048,16 @@ void EditorPropertyResource::update_property() {
|
|||
void EditorPropertyResource::_resource_selected() {
|
||||
RES res = get_edited_object()->get(get_edited_property());
|
||||
|
||||
if (!res.is_null()) {
|
||||
if (res.is_null()) {
|
||||
_update_menu();
|
||||
return;
|
||||
}
|
||||
|
||||
if (use_sub_inspector) {
|
||||
|
||||
get_edited_object()->editor_set_section_unfold(get_edited_property(), assign->is_pressed());
|
||||
update_property();
|
||||
} else {
|
||||
|
||||
emit_signal("resource_selected", get_edited_property(), res);
|
||||
}
|
||||
|
|
@ -2033,6 +2091,20 @@ void EditorPropertyResource::_viewport_selected(const NodePath &p_path) {
|
|||
emit_signal("property_changed", get_edited_property(), vt);
|
||||
update_property();
|
||||
}
|
||||
|
||||
void EditorPropertyResource::collapse_all_folding() {
|
||||
if (sub_inspector) {
|
||||
sub_inspector->collapse_all_folding();
|
||||
}
|
||||
}
|
||||
|
||||
void EditorPropertyResource::expand_all_folding() {
|
||||
|
||||
if (sub_inspector) {
|
||||
sub_inspector->expand_all_folding();
|
||||
}
|
||||
}
|
||||
|
||||
void EditorPropertyResource::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("_file_selected"), &EditorPropertyResource::_file_selected);
|
||||
|
|
@ -2041,10 +2113,15 @@ void EditorPropertyResource::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("_resource_preview"), &EditorPropertyResource::_resource_preview);
|
||||
ClassDB::bind_method(D_METHOD("_resource_selected"), &EditorPropertyResource::_resource_selected);
|
||||
ClassDB::bind_method(D_METHOD("_viewport_selected"), &EditorPropertyResource::_viewport_selected);
|
||||
ClassDB::bind_method(D_METHOD("_sub_inspector_property_keyed"), &EditorPropertyResource::_sub_inspector_property_keyed);
|
||||
ClassDB::bind_method(D_METHOD("_sub_inspector_resource_selected"), &EditorPropertyResource::_sub_inspector_resource_selected);
|
||||
ClassDB::bind_method(D_METHOD("_sub_inspector_object_id_selected"), &EditorPropertyResource::_sub_inspector_object_id_selected);
|
||||
}
|
||||
|
||||
EditorPropertyResource::EditorPropertyResource() {
|
||||
|
||||
sub_inspector = NULL;
|
||||
use_sub_inspector = !bool(EDITOR_GET("interface/inspector/open_resources_in_new_inspector"));
|
||||
HBoxContainer *hbc = memnew(HBoxContainer);
|
||||
add_child(hbc);
|
||||
assign = memnew(Button);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue