You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Rework editor docks
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
|
||||
#include "editor/debugger/editor_debugger_node.h"
|
||||
#include "editor/debugger/editor_debugger_plugin.h"
|
||||
#include "editor/docks/editor_dock.h"
|
||||
#include "editor/docks/editor_dock_manager.h"
|
||||
#include "editor/docks/inspector_dock.h"
|
||||
#include "editor/docks/scene_tree_dock.h"
|
||||
@@ -84,24 +85,48 @@ Button *EditorPlugin::add_control_to_bottom_panel(Control *p_control, const Stri
|
||||
return EditorNode::get_bottom_panel()->add_item(p_title, p_control, p_shortcut);
|
||||
}
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
void EditorPlugin::add_control_to_dock(DockSlot p_slot, Control *p_control, const Ref<Shortcut> &p_shortcut) {
|
||||
ERR_FAIL_NULL(p_control);
|
||||
EditorDockManager::get_singleton()->add_dock(p_control, String(), EditorDockManager::DockSlot(p_slot), p_shortcut);
|
||||
ERR_FAIL_COND(legacy_docks.has(p_control));
|
||||
|
||||
EditorDock *dock = memnew(EditorDock);
|
||||
dock->set_title(p_control->get_name());
|
||||
dock->set_dock_shortcut(p_shortcut);
|
||||
dock->set_default_slot((EditorDockManager::DockSlot)p_slot);
|
||||
dock->add_child(p_control);
|
||||
legacy_docks[p_control] = dock;
|
||||
|
||||
EditorDockManager::get_singleton()->add_dock(dock);
|
||||
}
|
||||
|
||||
void EditorPlugin::remove_control_from_docks(Control *p_control) {
|
||||
ERR_FAIL_NULL(p_control);
|
||||
EditorDockManager::get_singleton()->remove_dock(p_control);
|
||||
ERR_FAIL_COND(!legacy_docks.has(p_control));
|
||||
|
||||
EditorDockManager::get_singleton()->remove_dock(legacy_docks[p_control]);
|
||||
legacy_docks[p_control]->queue_free();
|
||||
legacy_docks.erase(p_control);
|
||||
}
|
||||
|
||||
void EditorPlugin::set_dock_tab_icon(Control *p_control, const Ref<Texture2D> &p_icon) {
|
||||
ERR_FAIL_NULL(p_control);
|
||||
ERR_FAIL_COND(!legacy_docks.has(p_control));
|
||||
legacy_docks[p_control]->set_dock_icon(p_icon);
|
||||
}
|
||||
#endif
|
||||
|
||||
void EditorPlugin::remove_control_from_bottom_panel(Control *p_control) {
|
||||
ERR_FAIL_NULL(p_control);
|
||||
EditorNode::get_bottom_panel()->remove_item(p_control);
|
||||
}
|
||||
|
||||
void EditorPlugin::set_dock_tab_icon(Control *p_control, const Ref<Texture2D> &p_icon) {
|
||||
ERR_FAIL_NULL(p_control);
|
||||
EditorDockManager::get_singleton()->set_dock_tab_icon(p_control, p_icon);
|
||||
void EditorPlugin::add_dock(EditorDock *p_dock) {
|
||||
EditorDockManager::get_singleton()->add_dock(p_dock);
|
||||
}
|
||||
|
||||
void EditorPlugin::remove_dock(EditorDock *p_dock) {
|
||||
EditorDockManager::get_singleton()->remove_dock(p_dock);
|
||||
}
|
||||
|
||||
void EditorPlugin::add_control_to_container(CustomControlContainer p_location, Control *p_control) {
|
||||
@@ -588,13 +613,12 @@ void EditorPlugin::_notification(int p_what) {
|
||||
}
|
||||
|
||||
void EditorPlugin::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("add_dock", "dock"), &EditorPlugin::add_dock);
|
||||
ClassDB::bind_method(D_METHOD("remove_dock", "dock"), &EditorPlugin::remove_dock);
|
||||
ClassDB::bind_method(D_METHOD("add_control_to_container", "container", "control"), &EditorPlugin::add_control_to_container);
|
||||
ClassDB::bind_method(D_METHOD("add_control_to_bottom_panel", "control", "title", "shortcut"), &EditorPlugin::add_control_to_bottom_panel, DEFVAL(Ref<Shortcut>()));
|
||||
ClassDB::bind_method(D_METHOD("add_control_to_dock", "slot", "control", "shortcut"), &EditorPlugin::add_control_to_dock, DEFVAL(Ref<Shortcut>()));
|
||||
ClassDB::bind_method(D_METHOD("remove_control_from_docks", "control"), &EditorPlugin::remove_control_from_docks);
|
||||
ClassDB::bind_method(D_METHOD("remove_control_from_bottom_panel", "control"), &EditorPlugin::remove_control_from_bottom_panel);
|
||||
ClassDB::bind_method(D_METHOD("remove_control_from_container", "container", "control"), &EditorPlugin::remove_control_from_container);
|
||||
ClassDB::bind_method(D_METHOD("set_dock_tab_icon", "control", "icon"), &EditorPlugin::set_dock_tab_icon);
|
||||
ClassDB::bind_method(D_METHOD("add_tool_menu_item", "name", "callable"), &EditorPlugin::add_tool_menu_item);
|
||||
ClassDB::bind_method(D_METHOD("add_tool_submenu_item", "name", "submenu"), &EditorPlugin::add_tool_submenu_item);
|
||||
ClassDB::bind_method(D_METHOD("remove_tool_menu_item", "name"), &EditorPlugin::remove_tool_menu_item);
|
||||
@@ -602,6 +626,12 @@ void EditorPlugin::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("add_custom_type", "type", "base", "script", "icon"), &EditorPlugin::add_custom_type);
|
||||
ClassDB::bind_method(D_METHOD("remove_custom_type", "type"), &EditorPlugin::remove_custom_type);
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
ClassDB::bind_method(D_METHOD("add_control_to_dock", "slot", "control", "shortcut"), &EditorPlugin::add_control_to_dock, DEFVAL(Ref<Shortcut>()));
|
||||
ClassDB::bind_method(D_METHOD("remove_control_from_docks", "control"), &EditorPlugin::remove_control_from_docks);
|
||||
ClassDB::bind_method(D_METHOD("set_dock_tab_icon", "control", "icon"), &EditorPlugin::set_dock_tab_icon);
|
||||
#endif
|
||||
|
||||
ClassDB::bind_method(D_METHOD("add_autoload_singleton", "name", "path"), &EditorPlugin::add_autoload_singleton);
|
||||
ClassDB::bind_method(D_METHOD("remove_autoload_singleton", "name"), &EditorPlugin::remove_autoload_singleton);
|
||||
|
||||
@@ -688,6 +718,7 @@ void EditorPlugin::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(CONTAINER_PROJECT_SETTING_TAB_LEFT);
|
||||
BIND_ENUM_CONSTANT(CONTAINER_PROJECT_SETTING_TAB_RIGHT);
|
||||
|
||||
BIND_ENUM_CONSTANT(DOCK_SLOT_NONE);
|
||||
BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_UL);
|
||||
BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_BL);
|
||||
BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_UR);
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "core/io/config_file.h"
|
||||
#include "editor/docks/editor_dock_manager.h"
|
||||
#include "editor/inspector/editor_context_menu_plugin.h"
|
||||
#include "scene/3d/camera_3d.h"
|
||||
#include "scene/gui/control.h"
|
||||
@@ -39,6 +40,7 @@ class Node3D;
|
||||
class Button;
|
||||
class PopupMenu;
|
||||
class EditorDebuggerPlugin;
|
||||
class EditorDock;
|
||||
class EditorExport;
|
||||
class EditorExportPlugin;
|
||||
class EditorExportPlatform;
|
||||
@@ -65,6 +67,8 @@ class EditorPlugin : public Node {
|
||||
String plugin_version;
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
static inline HashMap<Control *, EditorDock *> legacy_docks;
|
||||
|
||||
void _editor_project_settings_changed();
|
||||
#endif
|
||||
|
||||
@@ -85,15 +89,16 @@ public:
|
||||
};
|
||||
|
||||
enum DockSlot {
|
||||
DOCK_SLOT_LEFT_UL,
|
||||
DOCK_SLOT_LEFT_BL,
|
||||
DOCK_SLOT_LEFT_UR,
|
||||
DOCK_SLOT_LEFT_BR,
|
||||
DOCK_SLOT_RIGHT_UL,
|
||||
DOCK_SLOT_RIGHT_BL,
|
||||
DOCK_SLOT_RIGHT_UR,
|
||||
DOCK_SLOT_RIGHT_BR,
|
||||
DOCK_SLOT_MAX
|
||||
DOCK_SLOT_NONE = EditorDockManager::DOCK_SLOT_NONE,
|
||||
DOCK_SLOT_LEFT_UL = EditorDockManager::DOCK_SLOT_LEFT_UL,
|
||||
DOCK_SLOT_LEFT_BL = EditorDockManager::DOCK_SLOT_LEFT_BL,
|
||||
DOCK_SLOT_LEFT_UR = EditorDockManager::DOCK_SLOT_LEFT_UR,
|
||||
DOCK_SLOT_LEFT_BR = EditorDockManager::DOCK_SLOT_LEFT_BR,
|
||||
DOCK_SLOT_RIGHT_UL = EditorDockManager::DOCK_SLOT_RIGHT_UL,
|
||||
DOCK_SLOT_RIGHT_BL = EditorDockManager::DOCK_SLOT_RIGHT_BL,
|
||||
DOCK_SLOT_RIGHT_UR = EditorDockManager::DOCK_SLOT_RIGHT_UR,
|
||||
DOCK_SLOT_RIGHT_BR = EditorDockManager::DOCK_SLOT_RIGHT_BR,
|
||||
DOCK_SLOT_MAX = EditorDockManager::DOCK_SLOT_MAX
|
||||
};
|
||||
|
||||
enum AfterGUIInput {
|
||||
@@ -140,6 +145,10 @@ protected:
|
||||
Button *_add_control_to_bottom_panel_compat_88081(Control *p_control, const String &p_title);
|
||||
void _add_control_to_dock_compat_88081(DockSlot p_slot, Control *p_control);
|
||||
static void _bind_compatibility_methods();
|
||||
|
||||
void add_control_to_dock(DockSlot p_slot, Control *p_control, const Ref<Shortcut> &p_shortcut = nullptr);
|
||||
void remove_control_from_docks(Control *p_control);
|
||||
void set_dock_tab_icon(Control *p_control, const Ref<Texture2D> &p_icon);
|
||||
#endif
|
||||
|
||||
public:
|
||||
@@ -148,11 +157,10 @@ public:
|
||||
void add_control_to_container(CustomControlContainer p_location, Control *p_control);
|
||||
void remove_control_from_container(CustomControlContainer p_location, Control *p_control);
|
||||
Button *add_control_to_bottom_panel(Control *p_control, const String &p_title, const Ref<Shortcut> &p_shortcut = nullptr);
|
||||
void add_control_to_dock(DockSlot p_slot, Control *p_control, const Ref<Shortcut> &p_shortcut = nullptr);
|
||||
void remove_control_from_docks(Control *p_control);
|
||||
void remove_control_from_bottom_panel(Control *p_control);
|
||||
|
||||
void set_dock_tab_icon(Control *p_control, const Ref<Texture2D> &p_icon);
|
||||
void add_dock(EditorDock *p_dock);
|
||||
void remove_dock(EditorDock *p_dock);
|
||||
|
||||
void add_tool_menu_item(const String &p_name, const Callable &p_callable);
|
||||
void add_tool_submenu_item(const String &p_name, PopupMenu *p_submenu);
|
||||
|
||||
Reference in New Issue
Block a user