mirror of
				https://github.com/godotengine/godot.git
				synced 2025-11-04 07:31:16 +00:00 
			
		
		
		
	Basic context menu added to connections docker w/ code cleanup.
This commit is contained in:
		
							parent
							
								
									dc7ed4b547
								
							
						
					
					
						commit
						62a858d4c9
					
				
					 2 changed files with 147 additions and 75 deletions
				
			
		| 
						 | 
					@ -35,6 +35,7 @@
 | 
				
			||||||
#include "plugins/script_editor_plugin.h"
 | 
					#include "plugins/script_editor_plugin.h"
 | 
				
			||||||
#include "print_string.h"
 | 
					#include "print_string.h"
 | 
				
			||||||
#include "scene/gui/label.h"
 | 
					#include "scene/gui/label.h"
 | 
				
			||||||
 | 
					#include "scene/gui/popup_menu.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ConnectDialogBinds : public Object {
 | 
					class ConnectDialogBinds : public Object {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -408,16 +409,26 @@ void ConnectionsDock::_connect() {
 | 
				
			||||||
	update_tree();
 | 
						update_tree();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ConnectionsDock::_connect_pressed() {
 | 
					void ConnectionsDock::_disconnect( TreeItem *item )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Connection c = item->get_metadata(0);
 | 
				
			||||||
 | 
						ERR_FAIL_COND(c.source != node); //shouldn't happen but...bugcheck
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	TreeItem *item = tree->get_selected();
 | 
						undo_redo->create_action(vformat(TTR("Disconnect '%s' from '%s'"), c.signal, c.method));
 | 
				
			||||||
	if (!item) {
 | 
						undo_redo->add_do_method(node, "disconnect", c.signal, c.target, c.method);
 | 
				
			||||||
		//no idea how this happened, but disable
 | 
						undo_redo->add_undo_method(node, "connect", c.signal, c.target, c.method, Vector<Variant>(), c.flags);
 | 
				
			||||||
		connect_button->set_disabled(true);
 | 
						undo_redo->add_do_method(this, "update_tree");
 | 
				
			||||||
		return;
 | 
						undo_redo->add_undo_method(this, "update_tree");
 | 
				
			||||||
 | 
						undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree"); //to force redraw of scene tree
 | 
				
			||||||
 | 
						undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree"); //to force redraw of scene tree
 | 
				
			||||||
 | 
						undo_redo->commit_action();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.source->disconnect(c.signal, c.target, c.method);
 | 
				
			||||||
 | 
						update_tree();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
	if (item->get_parent() == tree->get_root() || item->get_parent()->get_parent() == tree->get_root()) {
 | 
					
 | 
				
			||||||
		//a signal - connect
 | 
					void ConnectionsDock::_open_connection_dialog( TreeItem *item )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
	String signal = item->get_metadata(0).operator Dictionary()["name"];
 | 
						String signal = item->get_metadata(0).operator Dictionary()["name"];
 | 
				
			||||||
	String signalname = signal;
 | 
						String signalname = signal;
 | 
				
			||||||
	String midname = node->get_name();
 | 
						String midname = node->get_name();
 | 
				
			||||||
| 
						 | 
					@ -441,23 +452,19 @@ void ConnectionsDock::_connect_pressed() {
 | 
				
			||||||
	connect_dialog->set_title(TTR("Connecting Signal:") + " " + signalname);
 | 
						connect_dialog->set_title(TTR("Connecting Signal:") + " " + signalname);
 | 
				
			||||||
	connect_dialog->set_dst_method("_on_" + midname + "_" + signal);
 | 
						connect_dialog->set_dst_method("_on_" + midname + "_" + signal);
 | 
				
			||||||
	connect_dialog->set_dst_node(node->get_owner() ? node->get_owner() : node);
 | 
						connect_dialog->set_dst_node(node->get_owner() ? node->get_owner() : node);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConnectionsDock::_connect_pressed() {
 | 
				
			||||||
 | 
						TreeItem *item = tree->get_selected();
 | 
				
			||||||
 | 
						if (!item) {
 | 
				
			||||||
 | 
							connect_button->set_disabled(true);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (_is_item_signal( item )) {
 | 
				
			||||||
 | 
							_open_connection_dialog( item );
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		//a slot- disconnect
 | 
							_disconnect( item );
 | 
				
			||||||
		Connection c = item->get_metadata(0);
 | 
					 | 
				
			||||||
		ERR_FAIL_COND(c.source != node); //shouldn't happen but...bugcheck
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		undo_redo->create_action(vformat(TTR("Disconnect '%s' from '%s'"), c.signal, c.method));
 | 
					 | 
				
			||||||
		undo_redo->add_do_method(node, "disconnect", c.signal, c.target, c.method);
 | 
					 | 
				
			||||||
		undo_redo->add_undo_method(node, "connect", c.signal, c.target, c.method, Vector<Variant>(), c.flags);
 | 
					 | 
				
			||||||
		undo_redo->add_do_method(this, "update_tree");
 | 
					 | 
				
			||||||
		undo_redo->add_undo_method(this, "update_tree");
 | 
					 | 
				
			||||||
		undo_redo->add_do_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree"); //to force redraw of scene tree
 | 
					 | 
				
			||||||
		undo_redo->add_undo_method(EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor(), "update_tree"); //to force redraw of scene tree
 | 
					 | 
				
			||||||
		undo_redo->commit_action();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		c.source->disconnect(c.signal, c.target, c.method);
 | 
					 | 
				
			||||||
		update_tree();
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -611,7 +618,6 @@ void ConnectionsDock::update_tree() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ConnectionsDock::set_node(Node *p_node) {
 | 
					void ConnectionsDock::set_node(Node *p_node) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	node = p_node;
 | 
						node = p_node;
 | 
				
			||||||
	update_tree();
 | 
						update_tree();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -624,13 +630,11 @@ void ConnectionsDock::_something_selected() {
 | 
				
			||||||
		connect_button->set_text(TTR("Connect..."));
 | 
							connect_button->set_text(TTR("Connect..."));
 | 
				
			||||||
		connect_button->set_disabled(true);
 | 
							connect_button->set_disabled(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	} else if (item->get_parent() == tree->get_root() || item->get_parent()->get_parent() == tree->get_root()) {
 | 
						} else if (_is_item_signal( item )) {
 | 
				
			||||||
		//a signal - connect
 | 
					 | 
				
			||||||
		connect_button->set_text(TTR("Connect..."));
 | 
							connect_button->set_text(TTR("Connect..."));
 | 
				
			||||||
		connect_button->set_disabled(false);
 | 
							connect_button->set_disabled(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		//a slot- disconnect
 | 
					 | 
				
			||||||
		connect_button->set_text(TTR("Disconnect"));
 | 
							connect_button->set_text(TTR("Disconnect"));
 | 
				
			||||||
		connect_button->set_disabled(false);
 | 
							connect_button->set_disabled(false);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -643,31 +647,10 @@ void ConnectionsDock::_something_activated() {
 | 
				
			||||||
	if (!item)
 | 
						if (!item)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (item->get_parent() == tree->get_root() || item->get_parent()->get_parent() == tree->get_root()) {
 | 
						if (_is_item_signal( item )) {
 | 
				
			||||||
		// a signal - connect
 | 
							_open_connection_dialog( item );
 | 
				
			||||||
		String signal = item->get_metadata(0).operator Dictionary()["name"];
 | 
					 | 
				
			||||||
		String midname = node->get_name();
 | 
					 | 
				
			||||||
		for (int i = 0; i < midname.length(); i++) {
 | 
					 | 
				
			||||||
			CharType c = midname[i];
 | 
					 | 
				
			||||||
			if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_') {
 | 
					 | 
				
			||||||
				//all good
 | 
					 | 
				
			||||||
			} else if (c == ' ') {
 | 
					 | 
				
			||||||
				c = '_';
 | 
					 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
				midname.remove(i);
 | 
							//Go to method within script editor, if avaiable.
 | 
				
			||||||
				i--;
 | 
					 | 
				
			||||||
				continue;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			midname[i] = c;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		connect_dialog->edit(node);
 | 
					 | 
				
			||||||
		connect_dialog->popup_centered_ratio();
 | 
					 | 
				
			||||||
		connect_dialog->set_dst_method("_on_" + midname + "_" + signal);
 | 
					 | 
				
			||||||
		connect_dialog->set_dst_node(node->get_owner() ? node->get_owner() : node);
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		// a slot - go to target method
 | 
					 | 
				
			||||||
		Connection c = item->get_metadata(0);
 | 
							Connection c = item->get_metadata(0);
 | 
				
			||||||
		ERR_FAIL_COND(c.source != node); //shouldn't happen but...bugcheck
 | 
							ERR_FAIL_COND(c.source != node); //shouldn't happen but...bugcheck
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -682,11 +665,65 @@ void ConnectionsDock::_something_activated() {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ConnectionsDock::_bind_methods() {
 | 
					bool ConnectionsDock::_is_item_signal( TreeItem *item ) {
 | 
				
			||||||
 | 
						return (item->get_parent() == tree->get_root() || item->get_parent()->get_parent() == tree->get_root());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConnectionsDock::_handle_signal_option( int option ) {
 | 
				
			||||||
 | 
						TreeItem *item = tree->get_selected();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch( option )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
								case SignalMenuOption::CONNECT:
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									_open_connection_dialog(item);
 | 
				
			||||||
 | 
								} break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConnectionsDock::_handle_slot_option( int option ) {
 | 
				
			||||||
 | 
						TreeItem *item = tree->get_selected();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch( option )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							case SlotMenuOption::EDIT:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								//TODO: add edit functionality
 | 
				
			||||||
 | 
							} break;
 | 
				
			||||||
 | 
							case SlotMenuOption::DISCONNECT:
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								_disconnect(item);
 | 
				
			||||||
 | 
							} break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConnectionsDock::_rmb_pressed( Vector2 position ) {
 | 
				
			||||||
 | 
						TreeItem *item = tree->get_selected();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if( !item )
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Vector2 global_position = tree->get_global_position() + position;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if( _is_item_signal(item) )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							signal_menu->set_position( global_position );
 | 
				
			||||||
 | 
							signal_menu->popup();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							slot_menu->set_position( global_position );
 | 
				
			||||||
 | 
							slot_menu->popup();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ConnectionsDock::_bind_methods() {
 | 
				
			||||||
	ClassDB::bind_method("_connect", &ConnectionsDock::_connect);
 | 
						ClassDB::bind_method("_connect", &ConnectionsDock::_connect);
 | 
				
			||||||
	ClassDB::bind_method("_something_selected", &ConnectionsDock::_something_selected);
 | 
						ClassDB::bind_method("_something_selected", &ConnectionsDock::_something_selected);
 | 
				
			||||||
	ClassDB::bind_method("_something_activated", &ConnectionsDock::_something_activated);
 | 
						ClassDB::bind_method("_something_activated", &ConnectionsDock::_something_activated);
 | 
				
			||||||
 | 
						ClassDB::bind_method("_handle_signal_option", &ConnectionsDock::_handle_signal_option);
 | 
				
			||||||
 | 
						ClassDB::bind_method("_handle_slot_option", &ConnectionsDock::_handle_slot_option);
 | 
				
			||||||
 | 
						ClassDB::bind_method("_rmb_pressed", &ConnectionsDock::_rmb_pressed);
 | 
				
			||||||
	ClassDB::bind_method("_close", &ConnectionsDock::_close);
 | 
						ClassDB::bind_method("_close", &ConnectionsDock::_close);
 | 
				
			||||||
	ClassDB::bind_method("_connect_pressed", &ConnectionsDock::_connect_pressed);
 | 
						ClassDB::bind_method("_connect_pressed", &ConnectionsDock::_connect_pressed);
 | 
				
			||||||
	ClassDB::bind_method("update_tree", &ConnectionsDock::update_tree);
 | 
						ClassDB::bind_method("update_tree", &ConnectionsDock::update_tree);
 | 
				
			||||||
| 
						 | 
					@ -705,6 +742,7 @@ ConnectionsDock::ConnectionsDock(EditorNode *p_editor) {
 | 
				
			||||||
	tree->set_hide_root(true);
 | 
						tree->set_hide_root(true);
 | 
				
			||||||
	vbc->add_child(tree);
 | 
						vbc->add_child(tree);
 | 
				
			||||||
	tree->set_v_size_flags(SIZE_EXPAND_FILL);
 | 
						tree->set_v_size_flags(SIZE_EXPAND_FILL);
 | 
				
			||||||
 | 
						tree->set_allow_rmb_select(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	connect_button = memnew(Button);
 | 
						connect_button = memnew(Button);
 | 
				
			||||||
	connect_button->set_text(TTR("Connect"));
 | 
						connect_button->set_text(TTR("Connect"));
 | 
				
			||||||
| 
						 | 
					@ -723,6 +761,17 @@ ConnectionsDock::ConnectionsDock(EditorNode *p_editor) {
 | 
				
			||||||
	remove_confirm->set_as_toplevel(true);
 | 
						remove_confirm->set_as_toplevel(true);
 | 
				
			||||||
	add_child(remove_confirm);
 | 
						add_child(remove_confirm);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						signal_menu = memnew(PopupMenu);
 | 
				
			||||||
 | 
						add_child(signal_menu);
 | 
				
			||||||
 | 
						signal_menu->connect( "id_pressed", this, "_handle_signal_option" );
 | 
				
			||||||
 | 
						signal_menu->add_item(TTR("Connect"), SignalMenuOption::CONNECT );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						slot_menu = memnew(PopupMenu);
 | 
				
			||||||
 | 
						add_child(slot_menu);
 | 
				
			||||||
 | 
						slot_menu->connect( "id_pressed", this, "_handle_slot_option" );
 | 
				
			||||||
 | 
						slot_menu->add_item(TTR("Edit"), SlotMenuOption::EDIT);
 | 
				
			||||||
 | 
						slot_menu->add_item(TTR("Disconnect"), SlotMenuOption::DISCONNECT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	node_only->set_anchor( MARGIN_TOP, ANCHOR_END );
 | 
						node_only->set_anchor( MARGIN_TOP, ANCHOR_END );
 | 
				
			||||||
	node_only->set_anchor( MARGIN_BOTTOM, ANCHOR_END );
 | 
						node_only->set_anchor( MARGIN_BOTTOM, ANCHOR_END );
 | 
				
			||||||
| 
						 | 
					@ -736,6 +785,7 @@ ConnectionsDock::ConnectionsDock(EditorNode *p_editor) {
 | 
				
			||||||
	connect_dialog->connect("connected", this, "_connect");
 | 
						connect_dialog->connect("connected", this, "_connect");
 | 
				
			||||||
	tree->connect("item_selected", this, "_something_selected");
 | 
						tree->connect("item_selected", this, "_something_selected");
 | 
				
			||||||
	tree->connect("item_activated", this, "_something_activated");
 | 
						tree->connect("item_activated", this, "_something_activated");
 | 
				
			||||||
 | 
						tree->connect("item_rmb_selected", this, "_rmb_pressed" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	add_constant_override("separation", 3 * EDSCALE);
 | 
						add_constant_override("separation", 3 * EDSCALE);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,10 @@
 | 
				
			||||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 | 
					/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
 | 
				
			||||||
/*************************************************************************/
 | 
					/*************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					@author Juan Linietsky <reduzio@gmail.com>
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef CONNECTIONS_DIALOG_H
 | 
					#ifndef CONNECTIONS_DIALOG_H
 | 
				
			||||||
#define CONNECTIONS_DIALOG_H
 | 
					#define CONNECTIONS_DIALOG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,10 +46,7 @@
 | 
				
			||||||
#include "scene/gui/tree.h"
 | 
					#include "scene/gui/tree.h"
 | 
				
			||||||
#include "undo_redo.h"
 | 
					#include "undo_redo.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					class PopupMenu;
 | 
				
			||||||
@author Juan Linietsky <reduzio@gmail.com>
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class ConnectDialogBinds;
 | 
					class ConnectDialogBinds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ConnectDialog : public ConfirmationDialog {
 | 
					class ConnectDialog : public ConfirmationDialog {
 | 
				
			||||||
| 
						 | 
					@ -93,6 +94,15 @@ class ConnectionsDock : public VBoxContainer {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	GDCLASS(ConnectionsDock, VBoxContainer);
 | 
						GDCLASS(ConnectionsDock, VBoxContainer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						enum SignalMenuOption {
 | 
				
			||||||
 | 
							CONNECT
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						enum SlotMenuOption {
 | 
				
			||||||
 | 
							EDIT,
 | 
				
			||||||
 | 
							DISCONNECT
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Button *connect_button;
 | 
						Button *connect_button;
 | 
				
			||||||
	EditorNode *editor;
 | 
						EditorNode *editor;
 | 
				
			||||||
	Node *node;
 | 
						Node *node;
 | 
				
			||||||
| 
						 | 
					@ -100,10 +110,17 @@ class ConnectionsDock : public VBoxContainer {
 | 
				
			||||||
	ConfirmationDialog *remove_confirm;
 | 
						ConfirmationDialog *remove_confirm;
 | 
				
			||||||
	ConnectDialog *connect_dialog;
 | 
						ConnectDialog *connect_dialog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						PopupMenu *signal_menu;
 | 
				
			||||||
 | 
						PopupMenu *slot_menu;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void _close();
 | 
						void _close();
 | 
				
			||||||
	void _connect();
 | 
						void _connect();
 | 
				
			||||||
 | 
						void _disconnect( TreeItem *item );
 | 
				
			||||||
	void _something_selected();
 | 
						void _something_selected();
 | 
				
			||||||
	void _something_activated();
 | 
						void _something_activated();
 | 
				
			||||||
 | 
						void _handle_signal_option( int option );
 | 
				
			||||||
 | 
						void _handle_slot_option( int option );
 | 
				
			||||||
 | 
						void _rmb_pressed( Vector2 position );
 | 
				
			||||||
	UndoRedo *undo_redo;
 | 
						UndoRedo *undo_redo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
| 
						 | 
					@ -111,6 +128,11 @@ protected:
 | 
				
			||||||
	void _notification(int p_what);
 | 
						void _notification(int p_what);
 | 
				
			||||||
	static void _bind_methods();
 | 
						static void _bind_methods();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
						bool _is_item_signal( TreeItem *item );
 | 
				
			||||||
 | 
						void _open_connection_dialog( TreeItem *item );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	void set_undoredo(UndoRedo *p_undo_redo) { undo_redo = p_undo_redo; }
 | 
						void set_undoredo(UndoRedo *p_undo_redo) { undo_redo = p_undo_redo; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue