diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..e21ee45935 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,31 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**3mf File for This Bug** +If it is related to slicing, please append the 3mf file. It could be extremely helpful to solve the issue. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS, Windows] + - Version [e.g. 22] diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md new file mode 100644 index 0000000000..50b6debdab --- /dev/null +++ b/.github/ISSUE_TEMPLATE/custom.md @@ -0,0 +1,10 @@ +--- +name: Custom issue template +about: For generic ideas such as enhancement of a feature, some questions, and etc. +title: '' +labels: '' +assignees: '' + +--- + + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000000..4fe86d5ec8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: feature +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index eddda8fa31..44450ed448 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1097,7 +1097,8 @@ void GUI_App::post_init() // std::string http_url = get_http_url(app_config->get_country_code()); // std::string language = GUI::into_u8(current_language_code()); - // this->preset_updater->sync(http_url, language, preset_bundle); + // std::string network_ver = Slic3r::NetworkAgent::get_version(); + // this->preset_updater->sync(http_url, language, network_ver, preset_bundle); // //BBS: check new version // this->check_new_version(); @@ -2225,6 +2226,7 @@ bool GUI_App::on_init_inner() Bind(EVT_USER_LOGIN, &GUI_App::on_user_login, this); + copy_network_if_available(); on_init_network(); //BBS if load user preset failed @@ -2386,6 +2388,59 @@ bool GUI_App::on_init_inner() return true; } +void GUI_App::copy_network_if_available() +{ + std::string network_library, player_library, network_library_dst, player_library_dst; + std::string data_dir_str = data_dir(); + boost::filesystem::path data_dir_path(data_dir_str); + auto plugin_folder = data_dir_path / "plugins"; + auto cache_folder = data_dir_path / "ota"; +#if defined(_MSC_VER) || defined(_WIN32) + network_library = cache_folder.string() + "/bambu_networking.dll"; + player_library = cache_folder.string() + "/BambuSource.dll"; + network_library_dst = plugin_folder.string() + "/bambu_networking.dll"; + player_library_dst = plugin_folder.string() + "/BambuSource.dll"; +#elif defined(__WXMAC__) + network_library = cache_folder.string() + "/libbambu_networking.dylib"; + player_library = cache_folder.string() + "/libBambuSource.dylib"; + network_library_dst = plugin_folder.string() + "/libbambu_networking.dylib"; + player_library_dst = plugin_folder.string() + "/libBambuSource.dylib"; +#else + network_library = cache_folder.string() + "/libbambu_networking.so"; + player_library = cache_folder.string() + "/libBambuSource.so"; + network_library_dst = plugin_folder.string() + "/libbambu_networking.so"; + player_library_dst = plugin_folder.string() + "/libBambuSource.so"; +#endif + + BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< ": checking network_library " << network_library << ", player_library " << player_library; + std::string error_message; + if (boost::filesystem::exists(network_library)) { + CopyFileResult cfr = copy_file(network_library, network_library_dst, error_message, false); + if (cfr != CopyFileResult::SUCCESS) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": Copying failed(" << cfr << "): " << error_message; + return; + } + + static constexpr const auto perms = fs::owner_read | fs::owner_write | fs::group_read | fs::others_read; + fs::permissions(network_library_dst, perms); + fs::remove(network_library); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< ": Copying network library from" << network_library << " to " << network_library_dst<<" successfully."; + } + + if (boost::filesystem::exists(player_library)) { + CopyFileResult cfr = copy_file(player_library, player_library_dst, error_message, false); + if (cfr != CopyFileResult::SUCCESS) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": Copying failed(" << cfr << "): " << error_message; + return; + } + + static constexpr const auto perms = fs::owner_read | fs::owner_write | fs::group_read | fs::others_read; + fs::permissions(player_library_dst, perms); + fs::remove(player_library); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< ": Copying player library from" << player_library << " to " << player_library_dst<<" successfully."; + } +} + bool GUI_App::on_init_network(bool try_backup) { int load_agent_dll = Slic3r::NetworkAgent::initialize_network_module(); diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 561c609db7..7c83ed45c7 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -538,6 +538,7 @@ public: private: int updating_bambu_networking(); bool on_init_inner(); + void copy_network_if_available(); bool on_init_network(bool try_backup = false); void init_networking_callbacks(); void init_app_config(); diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index d4eafae624..8399fb2936 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -230,9 +230,10 @@ struct PresetUpdater::priv void prune_tmps() const; void sync_version() const; void parse_version_string(const std::string& body) const; - void sync_resources(std::string http_url, std::map &resources); + void sync_resources(std::string http_url, std::map &resources, bool check_patch = false, std::string current_version=""); void sync_config(std::string http_url, const VendorMap vendors); void sync_tooltip(std::string http_url, std::string language); + void sync_plugins(std::string http_url, std::string plugin_version); //BBS: refine preset update logic bool install_bundles_rsrc(std::vector bundles, bool snapshot) const; @@ -349,6 +350,7 @@ bool PresetUpdater::priv::extract_file(const fs::path &source_path, const fs::pa close_zip_reader(&archive); return res; } + BOOST_LOG_TRIVIAL(info) << "[BBL Updater]successfully extract file " << stat.m_file_index << " to "< &resources) +void PresetUpdater::priv::sync_resources(std::string http_url, std::map &resources, bool check_patch, std::string current_version_str) { std::map resource_list; - BOOST_LOG_TRIVIAL(info) << boost::format("[BBL Updater]: sync_resources get preferred setting version for app version %1%, url: %2%")%SLIC3R_APP_NAME%http_url; + BOOST_LOG_TRIVIAL(info) << boost::format("[BBL Updater]: sync_resources get preferred setting version for app version %1%, url: %2%, current_version_str %3%, check_patch %4%")%SLIC3R_APP_NAME%http_url%current_version_str%check_patch; std::string query_params = "?"; bool first = true; @@ -545,7 +547,7 @@ void PresetUpdater::priv::sync_resources(std::string http_url, std::mapsecond; } + else { + BOOST_LOG_TRIVIAL(warning) << boost::format("[BBL Updater]: online version=%1%, current_version=%2%, no need to download") % online_version.to_string() % current_version.to_string(); + } } } @@ -830,6 +849,28 @@ void PresetUpdater::priv::sync_tooltip(std::string http_url, std::string languag } } +void PresetUpdater::priv::sync_plugins(std::string http_url, std::string plugin_version) +{ + if (plugin_version == "00.00.00.00") { + BOOST_LOG_TRIVIAL(info) << "non need to sync plugins for there is no plugins currently."; + return; + } + std::string curr_version = SLIC3R_VERSION; + std::string using_version = curr_version.substr(0, 9) + "00"; + + try { + std::map resources + { + {"slicer/plugins/cloud", { using_version, "", "", cache_path.string(), {"plugins"}}} + }; + sync_resources(http_url, resources, true, plugin_version); + } + catch (std::exception& e) { + BOOST_LOG_TRIVIAL(warning) << format("[BBL Updater] sync_plugins: %1%", e.what()); + } +} + + bool PresetUpdater::priv::install_bundles_rsrc(std::vector bundles, bool snapshot) const { Updates updates; @@ -1092,7 +1133,7 @@ PresetUpdater::~PresetUpdater() //BBS: change directories by design //BBS: refine the preset updater logic -void PresetUpdater::sync(std::string http_url, std::string language, PresetBundle *preset_bundle) +void PresetUpdater::sync(std::string http_url, std::string language, std::string plugin_version, PresetBundle *preset_bundle) { //p->set_download_prefs(GUI::wxGetApp().app_config); if (!p->enabled_version_check && !p->enabled_config_update) { return; } @@ -1102,7 +1143,7 @@ void PresetUpdater::sync(std::string http_url, std::string language, PresetBundl // into the closure (but perhaps the compiler can elide this). VendorMap vendors = preset_bundle->vendors; - p->thread = std::thread([this, vendors, http_url, language]() { + p->thread = std::thread([this, vendors, http_url, language, plugin_version]() { this->p->prune_tmps(); if (p->cancel) return; @@ -1112,8 +1153,12 @@ void PresetUpdater::sync(std::string http_url, std::string language, PresetBundl this->p->sync_config(http_url, std::move(vendors)); if (p->cancel) return; - this->p->sync_tooltip(http_url, language); - }); + this->p->sync_plugins(http_url, plugin_version); + //if (p->cancel) + // return; + //remove the tooltip currently + //this->p->sync_tooltip(http_url, language); + }); } void PresetUpdater::slic3r_update_notify() diff --git a/src/slic3r/Utils/PresetUpdater.hpp b/src/slic3r/Utils/PresetUpdater.hpp index 4db6772849..306c0549fa 100644 --- a/src/slic3r/Utils/PresetUpdater.hpp +++ b/src/slic3r/Utils/PresetUpdater.hpp @@ -26,7 +26,7 @@ public: ~PresetUpdater(); // If either version check or config updating is enabled, get the appropriate data in the background and cache it. - void sync(std::string http_url, std::string language, PresetBundle *preset_bundle); + void sync(std::string http_url, std::string language, std::string plugin_version, PresetBundle *preset_bundle); // If version check is enabled, check if chaced online slic3r version is newer, notify if so. void slic3r_update_notify(); diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index 90abd50800..8d5be9c52b 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -36,7 +36,7 @@ namespace BBL { #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" -#define BAMBU_NETWORK_AGENT_VERSION "01.03.00.02" +#define BAMBU_NETWORK_AGENT_VERSION "01.03.01.02" //iot preset type strings diff --git a/version.inc b/version.inc index e83442474d..19725b2281 100644 --- a/version.inc +++ b/version.inc @@ -10,5 +10,5 @@ endif() if(NOT DEFINED BBL_INTERNAL_TESTING) set(BBL_INTERNAL_TESTING "1") endif() -set(SLIC3R_VERSION "01.03.00.25") +set(SLIC3R_VERSION "01.03.01.01") set(SoftFever_VERSION "1.3.3")