diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index f0b479d733..efc2846661 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2516,24 +2516,16 @@ bool GUI_App::on_init_inner() skip_this_version = false; } } - if (!skip_this_version - || evt.GetInt() != 0) { - UpdateVersionDialog dialog(this->mainframe); + if (!skip_this_version || evt.GetInt() != 0) { wxString extmsg = wxString::FromUTF8(version_info.description); - dialog.update_version_info(extmsg, version_info.version_str); + m_updateDialog->update_version_info(extmsg, version_info.version_str); if (evt.GetInt() != 0) { - dialog.m_button_skip_version->Hide(); - } - switch (dialog.ShowModal()) - { - case wxID_YES: - wxLaunchDefaultBrowser(version_info.url); - break; - case wxID_NO: - break; - default: - ; + m_updateDialog->m_button_skip_version->Hide(); } + m_updateDialog->Raise(); + m_updateDialog->Show(); + m_updateDialog->setUrl(version_info.url); + } } }); @@ -2669,6 +2661,13 @@ bool GUI_App::on_init_inner() BOOST_LOG_TRIVIAL(info) << "create the main window"; mainframe = new MainFrame(); + m_updateDialog = new UpdateVersionDialog(mainframe); + m_updateDialog->Hide(); + m_updateDialog->Bind(EVT_DOWN_URL_PACK, [this](wxCommandEvent& event) { + auto downloadUlr = m_updateDialog->getUrl(); + wxLaunchDefaultBrowser(downloadUlr); + }); + // hide settings tabs after first Layout if (is_editor()) { mainframe->select_tab(size_t(0)); @@ -4859,7 +4858,6 @@ void GUI_App::check_new_version_sf(bool show_tips, bool by_user) return; } - //if (true) if (isForceUpgrade) { wxGetApp().app_config->set_bool("force_upgrade", version_info.force_upgrade); diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 6052f68401..40c61dd0c1 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -57,7 +57,13 @@ class wxBookCtrlBase; class Notebook; struct wxLanguageInfo; +namespace Slic3r { +namespace GUI { + class UpdateVersionDialog; +}; +}; +// namespace Slice3rnamespace GUI::Slice3rnamespace GUI namespace Slic3r { class AppConfig; @@ -719,6 +725,7 @@ private: PresetUpdater* preset_updater{ nullptr }; MainFrame* mainframe{ nullptr }; Plater* plater_{ nullptr }; + UpdateVersionDialog* m_updateDialog{nullptr}; PresetUpdater* get_preset_updater() { return preset_updater; } diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 10fb57d653..351ae4c16a 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -44,6 +44,7 @@ wxDEFINE_EVENT(EVT_UPDATE_NOZZLE, wxCommandEvent); wxDEFINE_EVENT(EVT_JUMP_TO_HMS, wxCommandEvent); wxDEFINE_EVENT(EVT_JUMP_TO_LIVEVIEW, wxCommandEvent); wxDEFINE_EVENT(EVT_UPDATE_TEXT_MSG, wxCommandEvent); +wxDEFINE_EVENT(EVT_DOWN_URL_PACK, wxCommandEvent); ReleaseNoteDialog::ReleaseNoteDialog(Plater *plater /*= nullptr*/) : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, _L("Release Note"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) @@ -333,7 +334,13 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) m_button_download->SetCursor(wxCURSOR_HAND); m_button_download->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { - EndModal(wxID_YES); + wxCommandEvent event(EVT_DOWN_URL_PACK); + + wxPostEvent(this, event); + if (isModal) + EndModal(wxID_NO); + else + Close(); }); m_button_skip_version = new Button(this, _L("Skip this Version")); @@ -347,7 +354,10 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) m_button_skip_version->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { wxGetApp().set_skip_version(true); - EndModal(wxID_NO); + if (isModal) + EndModal(wxID_NO); + else + Close(); }); m_cb_stable_only = new CheckBox(this); @@ -377,7 +387,11 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent) m_button_cancel->SetCursor(wxCURSOR_HAND); m_button_cancel->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { - EndModal(wxID_NO); + if (isModal) + EndModal(wxID_NO); + else + Close(); + }); m_sizer_main->Add(m_line_top, 0, wxEXPAND | wxBOTTOM, 0); diff --git a/src/slic3r/GUI/ReleaseNote.hpp b/src/slic3r/GUI/ReleaseNote.hpp index 9f211c86db..765a84cffd 100644 --- a/src/slic3r/GUI/ReleaseNote.hpp +++ b/src/slic3r/GUI/ReleaseNote.hpp @@ -51,6 +51,7 @@ wxDECLARE_EVENT(EVT_LOAD_VAMS_TRAY, wxCommandEvent); wxDECLARE_EVENT(EVT_JUMP_TO_HMS, wxCommandEvent); wxDECLARE_EVENT(EVT_JUMP_TO_LIVEVIEW, wxCommandEvent); wxDECLARE_EVENT(EVT_UPDATE_TEXT_MSG, wxCommandEvent); +wxDECLARE_EVENT(EVT_DOWN_URL_PACK, wxCommandEvent); class ReleaseNoteDialog : public DPIDialog { @@ -95,6 +96,10 @@ public: void update_version_info(wxString release_note, wxString version); std::vector splitWithStl(std::string str, std::string pattern); + void setDialogMode(bool mode) { isModal = mode; } + std::string getUrl() { return m_url; } + void setUrl(const std::string downloadUrl) { m_url = downloadUrl; } + std::string m_url{""}; wxStaticBitmap* m_brand{nullptr}; Label * m_text_up_info{nullptr}; wxWebView* m_vebview_release_note{nullptr}; @@ -108,6 +113,7 @@ public: Button* m_button_download; Button* m_button_cancel; std::string url_line; + bool isModal = true; }; class SecondaryCheckDialog : public DPIFrame diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index fcf0491eea..5e2cffceb0 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1428,8 +1428,7 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version } } - bool version_match = ((vendor_ver.maj() == cache_ver.maj()) && (vendor_ver.min() == cache_ver.min())); - if (version_match && (vendor_ver < cache_ver)) { + if (vendor_ver < cache_ver) { Semver min_ver = get_min_version_from_json(file_path); Semver soft_ver = Semver(std::string(Snapmaker_VERSION));