diff options
Diffstat (limited to 'core/src/UI')
-rw-r--r-- | core/src/UI/UI_MainWindow.cpp | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/core/src/UI/UI_MainWindow.cpp b/core/src/UI/UI_MainWindow.cpp index 661c535..a47efab 100644 --- a/core/src/UI/UI_MainWindow.cpp +++ b/core/src/UI/UI_MainWindow.cpp @@ -15,18 +15,6 @@ namespace fs = std::filesystem; namespace { -bool LoadProjectAt(const std::filesystem::path& path) { - auto& uis = UIState::GetInstance(); - try { - auto project = Project::Load(path); - uis.SetCurrentProject(std::make_unique<Project>(std::move(project))); - - return true; - } catch (const std::exception& e) { - return false; - } -} - void ProjectTab_Normal() { auto ls = LocaleStrings::Instance.get(); auto& gs = GlobalStates::GetInstance(); @@ -100,8 +88,7 @@ void ProjectTab_NoProject() { if (ImGui::Button(ls->DialogConfirm.Get(), !dirNameIsValid || projectName.empty())) { ImGui::CloseCurrentPopup(); - auto project = Project::Create(std::move(projectName), dirPath); - uis.SetCurrentProject(std::make_unique<Project>(std::move(project))); + uis.SetCurrentProject(std::make_unique<Project>(std::move(dirPath), std::move(projectName))); // Dialog just got closed, reset states projectName = ""; @@ -123,7 +110,14 @@ void ProjectTab_NoProject() { auto selection = pfd::open_file(ls->OpenProjectDialogTitle.Get()).result(); if (!selection.empty()) { fs::path path(selection[0]); - openErrorDialog = !LoadProjectAt(path); + + try { + // Project's constructor wants a path to directory containing cplt_project.json + uis.SetCurrentProject(std::make_unique<Project>(path.parent_path())); + openErrorDialog = false; + } catch (const std::exception& e) { + openErrorDialog = true; + } } } @@ -154,7 +148,12 @@ void ProjectTab_NoProject() { ImGui::SameLine(); if (ImGui::Button(ICON_FA_FOLDER_OPEN)) { - openErrorDialog = !LoadProjectAt(path / "cplt_project.json"); + try { + uis.SetCurrentProject(std::make_unique<Project>(path)); + openErrorDialog = false; + } catch (const std::exception& e) { + openErrorDialog = true; + } } if (ImGui::IsItemHovered()) { ImGui::SetTooltip("%s", ls->OpenRecentProjectTooltip.Get()); |