From 15d0932a9e1449a9d6fc0a379fc3d6dd4959ab92 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 9 May 2024 11:18:48 +0200 Subject: [PATCH] PresetArchiveDatabase: Added function to check is archive is selected --- src/slic3r/GUI/ConfigWizard.cpp | 13 +++---------- src/slic3r/GUI/PresetArchiveDatabase.cpp | 6 ++++++ src/slic3r/GUI/PresetArchiveDatabase.hpp | 1 + src/slic3r/GUI/UpdatesUIManager.cpp | 8 ++------ 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index b16944260a..500d5fa2d3 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -3413,14 +3413,12 @@ static void unselect(PagePrinters* page) { const PresetArchiveDatabase* pad = wxGetApp().plater()->get_preset_archive_database(); const ArchiveRepositoryVector& archs = pad->get_archive_repositories(); - const std::map& selected_repos = pad->get_selected_repositories_uuid(); bool unselect_all = true; for (const auto& archive : archs) { if (page->get_vendor_repo_id() == archive->get_manifest().id) { - auto selected_it = selected_repos.find(archive->get_uuid()); - if (selected_it->second) + if (pad->is_selected_archive(archive->get_uuid())) unselect_all = false; //break; ! don't break here, because there can be several archives with same repo_id } @@ -3463,18 +3461,13 @@ void ConfigWizard::priv::load_pages_from_archive() auto pad = wxGetApp().plater()->get_preset_archive_database(); - const ArchiveRepositoryVector& archs = pad->get_archive_repositories(); - const std::map& selected_repos = pad->get_selected_repositories_uuid(); - - assert(archs.size() == selected_repos.size()); + const ArchiveRepositoryVector& archs = pad->get_archive_repositories(); only_sla_mode = true; bool is_primary_printer_page_set = false; for (const auto& archive : archs) { - auto selected_it = selected_repos.find(archive->get_uuid()); - assert(selected_it != selected_repos.end()); - if (!selected_it->second) + if (!pad->is_selected_archive(archive->get_uuid())) continue; const auto& data = archive->get_manifest(); diff --git a/src/slic3r/GUI/PresetArchiveDatabase.cpp b/src/slic3r/GUI/PresetArchiveDatabase.cpp index b5b84ccc5f..1cd5736161 100644 --- a/src/slic3r/GUI/PresetArchiveDatabase.cpp +++ b/src/slic3r/GUI/PresetArchiveDatabase.cpp @@ -595,6 +595,12 @@ void PresetArchiveDatabase::read_server_manifest(const std::string& json_body) save_app_manifest_json(); } +bool PresetArchiveDatabase::is_selected_archive(const std::string& uuid) const +{ + auto selected_it = m_selected_repositories_uuid.find(uuid); + assert(selected_it != m_selected_repositories_uuid.end()); + return selected_it->second; +} void PresetArchiveDatabase::consolidate_selected_uuids_map() { diff --git a/src/slic3r/GUI/PresetArchiveDatabase.hpp b/src/slic3r/GUI/PresetArchiveDatabase.hpp index 82008d5a87..1520aa5e1f 100644 --- a/src/slic3r/GUI/PresetArchiveDatabase.hpp +++ b/src/slic3r/GUI/PresetArchiveDatabase.hpp @@ -109,6 +109,7 @@ public: void sync_blocking(); //void set_local_archives(AppConfig* app_config); void read_server_manifest(const std::string& json_body); + bool is_selected_archive(const std::string& uuid) const; const std::map& get_selected_repositories_uuid() const { assert(m_selected_repositories_uuid.size() == m_archive_repositories.size()); return m_selected_repositories_uuid; } bool set_selected_repositories(const std::vector& used_uuids, std::string& msg); std::string add_local_archive(const boost::filesystem::path path, std::string& msg); diff --git a/src/slic3r/GUI/UpdatesUIManager.cpp b/src/slic3r/GUI/UpdatesUIManager.cpp index 26f89c24f5..13a5dcb5b5 100644 --- a/src/slic3r/GUI/UpdatesUIManager.cpp +++ b/src/slic3r/GUI/UpdatesUIManager.cpp @@ -61,14 +61,10 @@ void UIManager::fill_entries(bool init_selection/* = false*/) m_online_entries.clear(); m_offline_entries.clear(); - const ArchiveRepositoryVector& archs = m_pad->get_archive_repositories(); - const std::map& selected_repos = m_pad->get_selected_repositories_uuid(); - + const ArchiveRepositoryVector& archs = m_pad->get_archive_repositories(); for (const auto& archive : archs) { const std::string& uuid = archive->get_uuid(); - auto sel_it = selected_repos.find(uuid); - assert(sel_it != selected_repos.end()); - if (init_selection && sel_it->second) + if (init_selection && m_pad->is_selected_archive(uuid)) m_selected_uuids.emplace(uuid); const bool is_selected = m_selected_uuids.find(uuid) != m_selected_uuids.end();