Skip to content

Commit

Permalink
Add Misc->Layout options
Browse files Browse the repository at this point in the history
  • Loading branch information
limbonaut committed Jul 6, 2024
1 parent 4787413 commit da9d80d
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 4 deletions.
43 changes: 41 additions & 2 deletions editor/limbo_ai_editor_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,12 @@ void LimboAIEditor::_remove_task_from_favorite(const String &p_task) {
ProjectSettings::get_singleton()->save();
}

void LimboAIEditor::_save_and_restart() {
ProjectSettings::get_singleton()->save();
EditorNode::get_singleton()->save_all_scenes();
EditorNode::get_singleton()->restart_editor();
}

void LimboAIEditor::_extract_subtree(const String &p_path) {
Ref<BTTask> selected = task_tree->get_selected();
ERR_FAIL_COND(selected.is_null());
Expand Down Expand Up @@ -699,6 +705,16 @@ void LimboAIEditor::_misc_option_selected(int p_id) {
case MISC_PROJECT_SETTINGS: {
_edit_project_settings();
} break;
case MISC_LAYOUT_CLASSIC: {
EDITOR_SETTINGS()->set_setting("limbo_ai/editor/layout", LAYOUT_CLASSIC);
EDITOR_SETTINGS()->save();
_update_banners();
} break;
case MISC_LAYOUT_WIDESCREEN_OPTIMIZED: {
EDITOR_SETTINGS()->set_setting("limbo_ai/editor/layout", LAYOUT_WIDESCREEN_OPTIMIZED);
EDITOR_SETTINGS()->save();
_update_banners();
} break;
case MISC_CREATE_SCRIPT_TEMPLATE: {
String template_path = _get_script_template_path();
String template_dir = template_path.get_base_dir();
Expand Down Expand Up @@ -1217,6 +1233,20 @@ void LimboAIEditor::_update_misc_menu() {
#endif // LIMBOAI_MODULE
misc_menu->add_item(TTR("Project Settings..."), MISC_PROJECT_SETTINGS);

PopupMenu *layout_menu = Object::cast_to<PopupMenu>(misc_menu->get_node_or_null(NodePath("LayoutMenu")));
if (layout_menu == nullptr) {
layout_menu = memnew(PopupMenu);
layout_menu->set_name("LayoutMenu");
layout_menu->connect(LW_NAME(id_pressed), callable_mp(this, &LimboAIEditor::_misc_option_selected));
misc_menu->add_child(layout_menu);
}
layout_menu->add_radio_check_item(TTR("Classic"), MISC_LAYOUT_CLASSIC);
layout_menu->add_radio_check_item(TTR("Widescreen Optimized"), MISC_LAYOUT_WIDESCREEN_OPTIMIZED);
misc_menu->add_submenu_item(TTR("Layout"), "LayoutMenu");
EditorLayout saved_layout = (EditorLayout)(int)EDITOR_GET("limbo_ai/editor/layout");
layout_menu->set_item_checked(0, saved_layout == LAYOUT_CLASSIC);
layout_menu->set_item_checked(1, saved_layout == LAYOUT_WIDESCREEN_OPTIMIZED);

misc_menu->add_separator();
misc_menu->add_item(
FILE_EXISTS(_get_script_template_path()) ? TTR("Edit Script Template") : TTR("Create Script Template"),
Expand Down Expand Up @@ -1257,6 +1287,15 @@ void LimboAIEditor::_update_banners() {
banners->call_deferred(LW_NAME(add_child), banner);
}
}

EditorLayout saved_layout = (EditorLayout)(int)EDITOR_GET("limbo_ai/editor/layout");
if (saved_layout != editor_layout) {
ActionBanner *banner = memnew(ActionBanner);
banner->set_text(TTR("Restart required to apply changes to editor layout."));
banner->add_action(TTR("Save & Restart"), callable_mp(this, &LimboAIEditor::_save_and_restart), true);
banner->set_meta(LW_NAME(managed), Variant(true));
banners->call_deferred(LW_NAME(add_child), banner);
}
}

void LimboAIEditor::_do_update_theme_item_cache() {
Expand Down Expand Up @@ -1570,7 +1609,7 @@ LimboAIEditor::LimboAIEditor() {
hsc->add_child(task_palette);

editor_layout = (EditorLayout)(int)EDITOR_GET("limbo_ai/editor/layout");
if (editor_layout == EditorLayout::WIDESCREEN_OPTIMIZED) {
if (editor_layout == LAYOUT_WIDESCREEN_OPTIMIZED) {
// * Alternative layout optimized for wide screen.
VBoxContainer *sidebar_vbox = memnew(VBoxContainer);
hsc->add_child(sidebar_vbox);
Expand Down Expand Up @@ -1600,7 +1639,7 @@ LimboAIEditor::LimboAIEditor() {
usage_hint->reparent(editor_vbox);
}

hsc->set_split_offset((editor_layout == EditorLayout::CLASSIC ? -320 : 320) * EDSCALE);
hsc->set_split_offset((editor_layout == LAYOUT_CLASSIC ? -320 : 320) * EDSCALE);

change_type_popup = memnew(PopupPanel);
add_child(change_type_popup);
Expand Down
7 changes: 5 additions & 2 deletions editor/limbo_ai_editor_plugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ class LimboAIEditor : public Control {
MISC_DOC_INTRODUCTION,
MISC_DOC_CUSTOM_TASKS,
MISC_OPEN_DEBUGGER,
MISC_LAYOUT_CLASSIC,
MISC_LAYOUT_WIDESCREEN_OPTIMIZED,
MISC_PROJECT_SETTINGS,
MISC_CREATE_SCRIPT_TEMPLATE,
};
Expand All @@ -112,8 +114,8 @@ class LimboAIEditor : public Control {
};

enum EditorLayout {
CLASSIC,
WIDESCREEN_OPTIMIZED,
LAYOUT_CLASSIC,
LAYOUT_WIDESCREEN_OPTIMIZED,
};

struct ThemeCache {
Expand Down Expand Up @@ -201,6 +203,7 @@ class LimboAIEditor : public Control {
void _mark_as_dirty(bool p_dirty);
void _create_user_task_dir();
void _remove_task_from_favorite(const String &p_task);
void _save_and_restart();
void _extract_subtree(const String &p_path);
void _replace_task(const Ref<BTTask> &p_task, const Ref<BTTask> &p_by_task);

Expand Down

0 comments on commit da9d80d

Please sign in to comment.