| 69 | EditorDebuggerNode *EditorDebuggerNode::singleton = nullptr; |
| 70 | |
| 71 | EditorDebuggerNode::EditorDebuggerNode() { |
| 72 | if (!singleton) { |
| 73 | singleton = this; |
| 74 | } |
| 75 | |
| 76 | add_theme_constant_override("margin_left", -EditorNode::get_singleton()->get_editor_theme()->get_stylebox(SNAME("BottomPanelDebuggerOverride"), EditorStringName(EditorStyles))->get_margin(SIDE_LEFT)); |
| 77 | add_theme_constant_override("margin_right", -EditorNode::get_singleton()->get_editor_theme()->get_stylebox(SNAME("BottomPanelDebuggerOverride"), EditorStringName(EditorStyles))->get_margin(SIDE_RIGHT)); |
| 78 | add_theme_constant_override("margin_bottom", -EditorNode::get_singleton()->get_editor_theme()->get_stylebox(SNAME("BottomPanelDebuggerOverride"), EditorStringName(EditorStyles))->get_margin(SIDE_BOTTOM)); |
| 79 | |
| 80 | tabs = memnew(TabContainer); |
| 81 | tabs->set_tabs_visible(false); |
| 82 | tabs->connect("tab_changed", callable_mp(this, &EditorDebuggerNode::_debugger_changed)); |
| 83 | add_child(tabs); |
| 84 | |
| 85 | Ref<StyleBoxEmpty> empty; |
| 86 | empty.instantiate(); |
| 87 | tabs->add_theme_style_override(SceneStringName(panel), empty); |
| 88 | |
| 89 | auto_switch_remote_scene_tree = EDITOR_GET("debugger/auto_switch_to_remote_scene_tree"); |
| 90 | _add_debugger(); |
| 91 | |
| 92 | // Remote scene tree |
| 93 | remote_scene_tree = memnew(EditorDebuggerTree); |
| 94 | remote_scene_tree->connect("objects_selected", callable_mp(this, &EditorDebuggerNode::_remote_objects_requested)); |
| 95 | remote_scene_tree->connect("selection_cleared", callable_mp(this, &EditorDebuggerNode::_remote_selection_cleared)); |
| 96 | remote_scene_tree->connect("save_node", callable_mp(this, &EditorDebuggerNode::_save_node_requested)); |
| 97 | remote_scene_tree->connect("button_clicked", callable_mp(this, &EditorDebuggerNode::_remote_tree_button_pressed)); |
| 98 | SceneTreeDock::get_singleton()->add_remote_tree_editor(remote_scene_tree); |
| 99 | SceneTreeDock::get_singleton()->connect("remote_tree_selected", callable_mp(this, &EditorDebuggerNode::request_remote_tree)); |
| 100 | |
| 101 | remote_scene_tree_timeout = EDITOR_GET("debugger/remote_scene_tree_refresh_interval"); |
| 102 | inspect_edited_object_timeout = EDITOR_GET("debugger/remote_inspect_refresh_interval"); |
| 103 | |
| 104 | if (Engine::get_singleton()->is_recovery_mode_hint()) { |
| 105 | return; |
| 106 | } |
| 107 | |
| 108 | EditorRunBar::get_singleton()->get_pause_button()->connect(SceneStringName(pressed), callable_mp(this, &EditorDebuggerNode::_paused)); |
| 109 | } |
| 110 | |
| 111 | ScriptEditorDebugger *EditorDebuggerNode::_add_debugger() { |
| 112 | ScriptEditorDebugger *node = memnew(ScriptEditorDebugger); |
nothing calls this directly
no test coverage detected