From 7c163338500dd0727be898fa5ca6259a80bf0f24 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 22 Mar 2024 11:42:00 +0300 Subject: [PATCH] menus::delete_world --- src/files/engine_paths.cpp | 4 ++++ src/files/engine_paths.h | 1 + src/frontend/menu/menu.cpp | 10 ++++++++++ src/frontend/menu/menu.h | 5 +++++ 4 files changed, 20 insertions(+) diff --git a/src/files/engine_paths.cpp b/src/files/engine_paths.cpp index 2f716f97..59975a25 100644 --- a/src/files/engine_paths.cpp +++ b/src/files/engine_paths.cpp @@ -48,6 +48,10 @@ fs::path EnginePaths::getWorldFolder() { return worldFolder; } +fs::path EnginePaths::getWorldFolder(const std::string& name) { + return getWorldsFolder()/fs::path(name); +} + std::vector EnginePaths::scanForWorlds() { std::vector folders; diff --git a/src/files/engine_paths.h b/src/files/engine_paths.h index cc9ee863..7efef2e6 100644 --- a/src/files/engine_paths.h +++ b/src/files/engine_paths.h @@ -27,6 +27,7 @@ public: fs::path getScreenshotFile(std::string ext); fs::path getWorldsFolder(); fs::path getWorldFolder(); + fs::path getWorldFolder(const std::string& name); bool isWorldNameUsed(std::string name); void setUserfiles(fs::path folder); diff --git a/src/frontend/menu/menu.cpp b/src/frontend/menu/menu.cpp index 9ad58c13..e3d8d4eb 100644 --- a/src/frontend/menu/menu.cpp +++ b/src/frontend/menu/menu.cpp @@ -234,6 +234,16 @@ void menus::open_world(std::string name, Engine* engine, bool confirmConvert) { } } +void menus::delete_world(std::string name, Engine* engine) { + fs::path folder = engine->getPaths()->getWorldFolder(name); + guiutil::confirm(engine->getGUI(), langs::get(L"delete-confirm", L"world")+ + L" ("+util::str2wstr_utf8(folder.u8string())+L")", [=]() { + std::cout << "deleting " << folder.u8string() << std::endl; + fs::remove_all(folder); + menus::refresh_menus(engine); + }); +} + std::shared_ptr create_worlds_panel(Engine* engine) { auto panel = std::dynamic_pointer_cast(guiutil::create( "" diff --git a/src/frontend/menu/menu.h b/src/frontend/menu/menu.h index c505b3a6..07bae264 100644 --- a/src/frontend/menu/menu.h +++ b/src/frontend/menu/menu.h @@ -42,6 +42,11 @@ namespace menus { /// @param confirmConvert automatically confirm convert if requested void open_world(std::string name, Engine* engine, bool confirmConvert); + /// @brief Show world removal confirmation dialog + /// @param name world name + /// @param engine engine instance + void delete_world(std::string name, Engine* engine); + /// @brief Create development version label at the top-right screen corner void create_version_label(Engine* engine); void create_menus(Engine* engine);