Reorganized connection dialog for much improved ease of use.

-Removed dest path field
-Added a "Source" signal
-Added an "Advanced" button to hide complexity
-Fix bug on Tree to make sure "ensure visible" works on hidden trees
-Fix bug on TextEdit to ensure signals created with script not open sill focus the right line
This commit is contained in:
Juan Linietsky
2019-04-11 23:21:48 -03:00
parent da65d54649
commit 9f4b5a91c0
7 changed files with 153 additions and 41 deletions

View File

@ -48,6 +48,9 @@ Node *SceneTreeEditor::get_scene_node() {
void SceneTreeEditor::_cell_button_pressed(Object *p_item, int p_column, int p_id) {
if (connect_to_script_mode) {
return; //dont do anything in this mode
}
TreeItem *item = Object::cast_to<TreeItem>(p_item);
ERR_FAIL_COND(!item);
@ -190,7 +193,25 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) {
item->set_icon(0, icon);
item->set_metadata(0, p_node->get_path());
if (part_of_subscene) {
if (connect_to_script_mode) {
Color accent = get_color("accent_color", "Editor");
if (!p_node->get_script().is_null()) {
//has script
item->add_button(0, get_icon("Script", "EditorIcons"), BUTTON_SCRIPT);
} else {
//has no script
item->set_custom_color(0, get_color("disabled_font_color", "Editor"));
item->set_selectable(0, false);
accent.a *= 0.7;
}
if (marked.has(p_node)) {
item->set_text(0, String(p_node->get_name()) + " " + TTR("(Connecting From)"));
item->set_custom_color(0, accent);
}
} else if (part_of_subscene) {
//item->set_selectable(0,marked_selectable);
if (valid_types.size() == 0) {
@ -199,7 +220,9 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) {
} else if (marked.has(p_node)) {
item->set_selectable(0, marked_selectable);
if (!connect_to_script_mode) {
item->set_selectable(0, marked_selectable);
}
item->set_custom_color(0, get_color("error_color", "Editor"));
} else if (!marked_selectable && !marked_children_selectable) {
@ -620,6 +643,7 @@ void SceneTreeEditor::set_selected(Node *p_node, bool p_emit_selected) {
item->set_as_cursor(0);
selected = p_node;
tree->ensure_cursor_is_visible();
} else {
if (!p_node)
selected = NULL;
@ -974,6 +998,11 @@ void SceneTreeEditor::_warning_changed(Node *p_for_node) {
update_timer->start();
}
void SceneTreeEditor::set_connect_to_script_mode(bool p_enable) {
connect_to_script_mode = p_enable;
update_tree();
}
void SceneTreeEditor::_bind_methods() {
ClassDB::bind_method("_tree_changed", &SceneTreeEditor::_tree_changed);
@ -1016,6 +1045,7 @@ void SceneTreeEditor::_bind_methods() {
SceneTreeEditor::SceneTreeEditor(bool p_label, bool p_can_rename, bool p_can_open_instance) {
connect_to_script_mode = false;
undo_redo = NULL;
tree_dirty = true;
selected = NULL;