Skip to content

Commit cd7cff8

Browse files
committed
Merge pull request #113257 from KoBeWi/the_most_important_dock
Improvements to ResourcePreloader editor
2 parents c54c8b7 + 3fcf980 commit cd7cff8

File tree

2 files changed

+45
-47
lines changed

2 files changed

+45
-47
lines changed

editor/scene/resource_preloader_editor_plugin.cpp

Lines changed: 38 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,26 @@
3131
#include "resource_preloader_editor_plugin.h"
3232

3333
#include "core/io/resource_loader.h"
34+
#include "editor/docks/editor_dock_manager.h"
3435
#include "editor/editor_interface.h"
3536
#include "editor/editor_node.h"
3637
#include "editor/editor_undo_redo_manager.h"
37-
#include "editor/gui/editor_bottom_panel.h"
3838
#include "editor/gui/editor_file_dialog.h"
3939
#include "editor/settings/editor_command_palette.h"
4040
#include "editor/settings/editor_settings.h"
4141
#include "editor/themes/editor_scale.h"
42+
#include "scene/gui/dialogs.h"
43+
#include "scene/gui/tree.h"
44+
#include "scene/main/resource_preloader.h"
4245

4346
void ResourcePreloaderEditor::_notification(int p_what) {
4447
switch (p_what) {
48+
case NOTIFICATION_TRANSLATION_CHANGED: {
49+
if (preloader) {
50+
_update_library();
51+
}
52+
} break;
53+
4554
case NOTIFICATION_THEME_CHANGED: {
4655
load->set_button_icon(get_editor_theme_icon(SNAME("Folder")));
4756
} break;
@@ -56,12 +65,9 @@ void ResourcePreloaderEditor::_files_load_request(const Vector<String> &p_paths)
5665
resource = ResourceLoader::load(path);
5766

5867
if (resource.is_null()) {
59-
dialog->set_text(TTR("ERROR: Couldn't load resource!"));
60-
dialog->set_title(TTR("Error!"));
61-
//dialog->get_cancel()->set_text("Close");
62-
dialog->set_ok_button_text(TTR("Close"));
68+
dialog->set_text(TTRC("ERROR: Couldn't load resource!"));
6369
dialog->popup_centered();
64-
return; ///beh should show an error i guess
70+
return; /// Beh, should show an error I guess.
6571
}
6672

6773
String basename = path.get_file().get_basename();
@@ -142,11 +148,9 @@ void ResourcePreloaderEditor::_remove_resource(const String &p_to_remove) {
142148
void ResourcePreloaderEditor::_paste_pressed() {
143149
Ref<Resource> r = EditorSettings::get_singleton()->get_resource_clipboard();
144150
if (r.is_null()) {
145-
dialog->set_text(TTR("Resource clipboard is empty!"));
146-
dialog->set_title(TTR("Error!"));
147-
dialog->set_ok_button_text(TTR("Close"));
151+
dialog->set_text(TTRC("Resource clipboard is empty!"));
148152
dialog->popup_centered();
149-
return; ///beh should show an error i guess
153+
return; /// Beh, should show an error I guess.
150154
}
151155

152156
String name = r->get_name();
@@ -175,7 +179,10 @@ void ResourcePreloaderEditor::_paste_pressed() {
175179

176180
void ResourcePreloaderEditor::_update_library() {
177181
tree->clear();
178-
tree->set_hide_root(true);
182+
if (!preloader) {
183+
return;
184+
}
185+
179186
TreeItem *root = tree->create_item(nullptr);
180187

181188
List<StringName> rnames;
@@ -215,8 +222,6 @@ void ResourcePreloaderEditor::_update_library() {
215222
}
216223
ti->add_button(1, get_editor_theme_icon(SNAME("Remove")), BUTTON_REMOVE, false, TTR("Remove"));
217224
}
218-
219-
//player->add_resource("default",resource);
220225
}
221226

222227
void ResourcePreloaderEditor::_cell_button_pressed(Object *p_item, int p_column, int p_id, MouseButton p_button) {
@@ -242,13 +247,7 @@ void ResourcePreloaderEditor::_cell_button_pressed(Object *p_item, int p_column,
242247

243248
void ResourcePreloaderEditor::edit(ResourcePreloader *p_preloader) {
244249
preloader = p_preloader;
245-
246-
if (p_preloader) {
247-
_update_library();
248-
} else {
249-
hide();
250-
set_physics_process(false);
251-
}
250+
_update_library();
252251
}
253252

254253
Variant ResourcePreloaderEditor::get_drag_data_fw(const Point2 &p_point, Control *p_from) {
@@ -346,7 +345,15 @@ void ResourcePreloaderEditor::_bind_methods() {
346345
}
347346

348347
ResourcePreloaderEditor::ResourcePreloaderEditor() {
349-
//add_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_stylebox("panel","Panel"));
348+
set_name(TTRC("ResourcePreloader"));
349+
set_icon_name("ResourcePreloader");
350+
set_dock_shortcut(ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_resource_preloader_bottom_panel", TTRC("Toggle ResourcePreloader Dock")));
351+
set_default_slot(DockConstants::DOCK_SLOT_BOTTOM);
352+
set_available_layouts(EditorDock::DOCK_LAYOUT_ALL);
353+
set_global(false);
354+
set_transient(true);
355+
356+
set_custom_minimum_size(Size2(0, 250 * EDSCALE));
350357

351358
VBoxContainer *vbc = memnew(VBoxContainer);
352359
add_child(vbc);
@@ -355,11 +362,11 @@ ResourcePreloaderEditor::ResourcePreloaderEditor() {
355362
vbc->add_child(hbc);
356363

357364
load = memnew(Button);
358-
load->set_tooltip_text(TTR("Load Resource"));
365+
load->set_tooltip_text(TTRC("Load Resource"));
359366
hbc->add_child(load);
360367

361368
paste = memnew(Button);
362-
paste->set_text(TTR("Paste"));
369+
paste->set_text(TTRC("Paste"));
363370
hbc->add_child(paste);
364371

365372
file = memnew(EditorFileDialog);
@@ -368,19 +375,20 @@ ResourcePreloaderEditor::ResourcePreloaderEditor() {
368375
tree = memnew(Tree);
369376
tree->connect("button_clicked", callable_mp(this, &ResourcePreloaderEditor::_cell_button_pressed));
370377
tree->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
378+
tree->set_hide_root(true);
371379
tree->set_columns(2);
372380
tree->set_column_expand_ratio(0, 2);
373381
tree->set_column_clip_content(0, true);
374382
tree->set_column_expand_ratio(1, 3);
375383
tree->set_column_clip_content(1, true);
376-
tree->set_column_expand(0, true);
377-
tree->set_column_expand(1, true);
378384
tree->set_v_size_flags(SIZE_EXPAND_FILL);
379385

380386
SET_DRAG_FORWARDING_GCD(tree, ResourcePreloaderEditor);
381387
vbc->add_child(tree);
382388

383389
dialog = memnew(AcceptDialog);
390+
dialog->set_title(TTRC("Error!"));
391+
dialog->set_ok_button_text(TTRC("Close"));
384392
add_child(dialog);
385393

386394
load->connect(SceneStringName(pressed), callable_mp(this, &ResourcePreloaderEditor::_load_pressed));
@@ -400,29 +408,19 @@ void ResourcePreloaderEditorPlugin::edit(Object *p_object) {
400408
}
401409

402410
bool ResourcePreloaderEditorPlugin::handles(Object *p_object) const {
403-
return p_object->is_class("ResourcePreloader");
411+
return Object::cast_to<ResourcePreloader>(p_object);
404412
}
405413

406414
void ResourcePreloaderEditorPlugin::make_visible(bool p_visible) {
407415
if (p_visible) {
408-
//preloader_editor->show();
409-
button->show();
410-
EditorNode::get_bottom_panel()->make_item_visible(preloader_editor);
411-
//preloader_editor->set_process(true);
416+
preloader_editor->make_visible();
412417
} else {
413-
if (preloader_editor->is_visible_in_tree()) {
414-
EditorNode::get_bottom_panel()->hide_bottom_panel();
415-
}
416-
button->hide();
417-
//preloader_editor->hide();
418-
//preloader_editor->set_process(false);
418+
preloader_editor->close();
419419
}
420420
}
421421

422422
ResourcePreloaderEditorPlugin::ResourcePreloaderEditorPlugin() {
423423
preloader_editor = memnew(ResourcePreloaderEditor);
424-
preloader_editor->set_custom_minimum_size(Size2(0, 250) * EDSCALE);
425-
426-
button = EditorNode::get_bottom_panel()->add_item(TTRC("ResourcePreloader"), preloader_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_resource_preloader_bottom_panel", TTRC("Toggle ResourcePreloader Bottom Panel")));
427-
button->hide();
424+
EditorDockManager::get_singleton()->add_dock(preloader_editor);
425+
preloader_editor->close();
428426
}

editor/scene/resource_preloader_editor_plugin.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,17 @@
3030

3131
#pragma once
3232

33+
#include "editor/docks/editor_dock.h"
3334
#include "editor/plugins/editor_plugin.h"
34-
#include "scene/gui/dialogs.h"
35-
#include "scene/gui/panel_container.h"
36-
#include "scene/gui/tree.h"
37-
#include "scene/main/resource_preloader.h"
3835

36+
class AcceptDialog;
37+
class Button;
3938
class EditorFileDialog;
39+
class ResourcePreloader;
40+
class Tree;
4041

41-
class ResourcePreloaderEditor : public PanelContainer {
42-
GDCLASS(ResourcePreloaderEditor, PanelContainer);
42+
class ResourcePreloaderEditor : public EditorDock {
43+
GDCLASS(ResourcePreloaderEditor, EditorDock);
4344

4445
enum {
4546
BUTTON_OPEN_SCENE,
@@ -84,7 +85,6 @@ class ResourcePreloaderEditorPlugin : public EditorPlugin {
8485
GDCLASS(ResourcePreloaderEditorPlugin, EditorPlugin);
8586

8687
ResourcePreloaderEditor *preloader_editor = nullptr;
87-
Button *button = nullptr;
8888

8989
public:
9090
virtual String get_plugin_name() const override { return "ResourcePreloader"; }

0 commit comments

Comments
 (0)