mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 04:31:15 -06:00 
			
		
		
		
	NEW:download plugin failure can link to wiki page
Change-Id: Ib4590b5300e03c1bcf379cb2760a860a9426987e
This commit is contained in:
		
							parent
							
								
									a73c504ea3
								
							
						
					
					
						commit
						97095e4319
					
				
					 4 changed files with 113 additions and 10 deletions
				
			
		|  | @ -31,6 +31,13 @@ namespace GUI { | |||
| DownloadProgressDialog::DownloadProgressDialog(wxString title) | ||||
|     : DPIDialog(static_cast<wxWindow *>(wxGetApp().mainframe), wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) | ||||
| { | ||||
|     wxString download_failed_url = wxT("https://wiki.bambulab.com/e/en/software/bambu-studio/failed-to-get-network-plugin"); | ||||
|     wxString install_failed_url = wxT("https://wiki.bambulab.com/e/en/software/bambu-studio/failed-to-get-network-plugin"); | ||||
| 
 | ||||
|     wxString download_failed_msg = _L("Download Failed. Please check your firewall settings and vpn software, check and retry."); | ||||
|     wxString install_failed_msg = _L("Installed failed. Check whether the plugin is deleted by the antivirus software."); | ||||
| 
 | ||||
| 
 | ||||
|     std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str(); | ||||
|     SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); | ||||
| 
 | ||||
|  | @ -39,14 +46,68 @@ DownloadProgressDialog::DownloadProgressDialog(wxString title) | |||
|     auto        m_line_top   = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); | ||||
|     m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); | ||||
|     m_sizer_main->Add(m_line_top, 0, wxEXPAND, 0); | ||||
|     m_status_bar    = std::make_shared<BBLStatusBarSend>(this); | ||||
| 
 | ||||
| 
 | ||||
|     m_simplebook_status = new wxSimplebook(this); | ||||
|     m_simplebook_status->SetSize(wxSize(FromDIP(400), FromDIP(70))); | ||||
|     m_simplebook_status->SetMinSize(wxSize(FromDIP(400), FromDIP(70))); | ||||
|     m_simplebook_status->SetMaxSize(wxSize(FromDIP(400), FromDIP(70))); | ||||
| 
 | ||||
|     //mode normal
 | ||||
|     m_status_bar    = std::make_shared<BBLStatusBarSend>(m_simplebook_status); | ||||
|     m_panel_download = m_status_bar->get_panel(); | ||||
|     m_panel_download->SetSize(wxSize(FromDIP(340), -1)); | ||||
|     m_panel_download->SetMinSize(wxSize(FromDIP(340), -1)); | ||||
|     m_panel_download->SetMaxSize(wxSize(FromDIP(340), -1)); | ||||
|     m_sizer_main->Add(m_panel_download, 0, wxALL, FromDIP(20)); | ||||
|     m_panel_download->SetSize(wxSize(FromDIP(400), FromDIP(70))); | ||||
|     m_panel_download->SetMinSize(wxSize(FromDIP(400), FromDIP(70))); | ||||
|     m_panel_download->SetMaxSize(wxSize(FromDIP(400), FromDIP(70))); | ||||
|      | ||||
| 
 | ||||
|     //mode Download Failed 
 | ||||
|     auto m_panel_download_failed = new wxPanel(m_simplebook_status, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); | ||||
| 
 | ||||
|     wxBoxSizer* sizer_download_failed = new wxBoxSizer(wxVERTICAL); | ||||
| 
 | ||||
|     auto m_statictext_download_failed = new wxStaticText(m_panel_download_failed, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); | ||||
|     m_statictext_download_failed->SetLabel(format_text(m_statictext_download_failed, download_failed_msg, FromDIP(360))); | ||||
|     m_statictext_download_failed->Wrap(FromDIP(360)); | ||||
| 
 | ||||
|     sizer_download_failed->Add(m_statictext_download_failed, 0, wxALIGN_CENTER | wxALL, 5); | ||||
| 
 | ||||
|     auto m_download_hyperlink = new wxHyperlinkCtrl(m_panel_download_failed, wxID_ANY, _L("click here to see more info"), download_failed_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); | ||||
|     sizer_download_failed->Add(m_download_hyperlink, 0, wxALIGN_CENTER | wxALL, 5); | ||||
| 
 | ||||
| 
 | ||||
|     m_panel_download_failed->SetSizer(sizer_download_failed); | ||||
|     m_panel_download_failed->Layout(); | ||||
|     sizer_download_failed->Fit(m_panel_download_failed); | ||||
| 
 | ||||
| 
 | ||||
|     //mode Installed failed
 | ||||
|     auto m_panel_install_failed = new wxPanel(m_simplebook_status, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); | ||||
| 
 | ||||
|     wxBoxSizer* sizer_install_failed = new wxBoxSizer(wxVERTICAL); | ||||
| 
 | ||||
|     auto m_statictext_install_failed = new wxStaticText(m_panel_install_failed, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); | ||||
|     m_statictext_install_failed->SetLabel(format_text(m_statictext_install_failed, install_failed_msg,FromDIP(360))); | ||||
|     m_statictext_install_failed->Wrap(FromDIP(360)); | ||||
| 
 | ||||
|     sizer_install_failed->Add(m_statictext_install_failed, 0, wxALIGN_CENTER | wxALL, 5); | ||||
| 
 | ||||
|     auto m_install_hyperlink = new wxHyperlinkCtrl(m_panel_install_failed, wxID_ANY, _L("click here to see more info"), install_failed_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); | ||||
|     sizer_install_failed->Add(m_install_hyperlink, 0, wxALIGN_CENTER | wxALL, 5); | ||||
| 
 | ||||
| 
 | ||||
|     m_panel_download_failed->SetSizer(sizer_install_failed); | ||||
|     m_panel_download_failed->Layout(); | ||||
|     sizer_install_failed->Fit(m_panel_install_failed); | ||||
| 
 | ||||
|     m_sizer_main->Add(m_simplebook_status, 0, wxALL, FromDIP(20)); | ||||
|     m_sizer_main->Add(0, 0, 1, wxBOTTOM, 10); | ||||
| 
 | ||||
| 
 | ||||
|     m_simplebook_status->AddPage(m_status_bar->get_panel(), wxEmptyString, true); | ||||
|     m_simplebook_status->AddPage(m_panel_download_failed, wxEmptyString, false); | ||||
|     m_simplebook_status->AddPage(m_panel_install_failed, wxEmptyString, false); | ||||
| 
 | ||||
|     SetSizer(m_sizer_main); | ||||
|     Layout(); | ||||
|     Fit(); | ||||
|  | @ -55,9 +116,31 @@ DownloadProgressDialog::DownloadProgressDialog(wxString title) | |||
|     Bind(wxEVT_CLOSE_WINDOW, &DownloadProgressDialog::on_close, this); | ||||
| } | ||||
| 
 | ||||
| wxString DownloadProgressDialog::format_text(wxStaticText* st, wxString str, int warp) | ||||
| { | ||||
|     if (wxGetApp().app_config->get("language") != "zh_CN") { return str; } | ||||
| 
 | ||||
|     wxString out_txt = str; | ||||
|     wxString count_txt = ""; | ||||
|     int      new_line_pos = 0; | ||||
| 
 | ||||
|     for (int i = 0; i < str.length(); i++) { | ||||
|         auto text_size = st->GetTextExtent(count_txt); | ||||
|         if (text_size.x < warp) { | ||||
|             count_txt += str[i]; | ||||
|         } | ||||
|         else { | ||||
|             out_txt.insert(i - 1, '\n'); | ||||
|             count_txt = ""; | ||||
|         } | ||||
|     } | ||||
|     return out_txt; | ||||
| } | ||||
| 
 | ||||
| bool DownloadProgressDialog::Show(bool show) | ||||
| { | ||||
|     if (show) { | ||||
|         m_simplebook_status->SetSelection(0); | ||||
|         m_upgrade_job = std::make_shared<UpgradeNetworkJob>(m_status_bar); | ||||
|         m_upgrade_job->set_event_handle(this); | ||||
|         m_status_bar->set_progress(0); | ||||
|  | @ -71,9 +154,23 @@ bool DownloadProgressDialog::Show(bool show) | |||
|             ); | ||||
|         }); | ||||
| 
 | ||||
|         Bind(EVT_UPGRADE_NETWORK_FAILED, [this](wxCommandEvent& evt) { | ||||
|         //download failed
 | ||||
|         Bind(EVT_DOWNLOAD_NETWORK_FAILED, [this](wxCommandEvent& evt) { | ||||
|             m_status_bar->change_button_label(_L("Close")); | ||||
|             m_status_bar->set_progress(0); | ||||
|             this->m_simplebook_status->SetSelection(1); | ||||
|             m_status_bar->set_cancel_callback_fina( | ||||
|                 [this]() { | ||||
|                     this->Close(); | ||||
|                 } | ||||
|             ); | ||||
|         }); | ||||
| 
 | ||||
|         //install failed
 | ||||
|         Bind(EVT_INSTALL_NETWORK_FAILED, [this](wxCommandEvent& evt) { | ||||
|             m_status_bar->change_button_label(_L("Close")); | ||||
|             m_status_bar->set_progress(0); | ||||
|             this->m_simplebook_status->SetSelection(2); | ||||
|             m_status_bar->set_cancel_callback_fina( | ||||
|                 [this]() { | ||||
|                     this->Close(); | ||||
|  |  | |||
|  | @ -12,6 +12,7 @@ | |||
| #include <wx/richmsgdlg.h> | ||||
| #include <wx/textctrl.h> | ||||
| #include <wx/statline.h> | ||||
| #include <wx/simplebook.h> | ||||
| #include "Widgets/Button.hpp" | ||||
| #include "BBLStatusBar.hpp" | ||||
| #include "BBLStatusBarSend.hpp" | ||||
|  | @ -37,11 +38,14 @@ protected: | |||
| 
 | ||||
| public: | ||||
|     DownloadProgressDialog(wxString title); | ||||
|     wxString format_text(wxStaticText* st, wxString str, int warp); | ||||
|     ~DownloadProgressDialog(); | ||||
| 
 | ||||
|     void on_dpi_changed(const wxRect &suggested_rect) override; | ||||
|     void update_release_note(std::string release_note, std::string version); | ||||
| 
 | ||||
|     wxSimplebook* m_simplebook_status{nullptr}; | ||||
| 
 | ||||
| 	std::shared_ptr<BBLStatusBarSend> m_status_bar; | ||||
|     std::shared_ptr<UpgradeNetworkJob> m_upgrade_job { nullptr }; | ||||
|     wxPanel *                         m_panel_download; | ||||
|  |  | |||
|  | @ -9,7 +9,8 @@ namespace GUI { | |||
| 
 | ||||
| wxDEFINE_EVENT(EVT_UPGRADE_UPDATE_MESSAGE, wxCommandEvent); | ||||
| wxDEFINE_EVENT(EVT_UPGRADE_NETWORK_SUCCESS, wxCommandEvent); | ||||
| wxDEFINE_EVENT(EVT_UPGRADE_NETWORK_FAILED, wxCommandEvent); | ||||
| wxDEFINE_EVENT(EVT_DOWNLOAD_NETWORK_FAILED, wxCommandEvent); | ||||
| wxDEFINE_EVENT(EVT_INSTALL_NETWORK_FAILED, wxCommandEvent); | ||||
| 
 | ||||
| 
 | ||||
| UpgradeNetworkJob::UpgradeNetworkJob(std::shared_ptr<ProgressIndicator> pri) | ||||
|  | @ -88,7 +89,7 @@ void UpgradeNetworkJob::process() | |||
| 
 | ||||
|     if (result < 0) { | ||||
|         update_status(0, _L("Download failed")); | ||||
|         wxCommandEvent event(EVT_UPGRADE_NETWORK_FAILED); | ||||
|         wxCommandEvent event(EVT_DOWNLOAD_NETWORK_FAILED); | ||||
|         event.SetEventObject(m_event_handle); | ||||
|         wxPostEvent(m_event_handle, event); | ||||
|         return; | ||||
|  | @ -112,7 +113,7 @@ void UpgradeNetworkJob::process() | |||
| 
 | ||||
|     if (result != 0) { | ||||
|         update_status(0, _L("Install failed")); | ||||
|         wxCommandEvent event(EVT_UPGRADE_NETWORK_FAILED); | ||||
|         wxCommandEvent event(EVT_INSTALL_NETWORK_FAILED); | ||||
|         event.SetEventObject(m_event_handle); | ||||
|         wxPostEvent(m_event_handle, event); | ||||
|         return; | ||||
|  |  | |||
|  | @ -49,7 +49,8 @@ public: | |||
| 
 | ||||
| wxDECLARE_EVENT(EVT_UPGRADE_UPDATE_MESSAGE, wxCommandEvent); | ||||
| wxDECLARE_EVENT(EVT_UPGRADE_NETWORK_SUCCESS, wxCommandEvent); | ||||
| wxDECLARE_EVENT(EVT_UPGRADE_NETWORK_FAILED, wxCommandEvent); | ||||
| wxDECLARE_EVENT(EVT_DOWNLOAD_NETWORK_FAILED, wxCommandEvent); | ||||
| wxDECLARE_EVENT(EVT_INSTALL_NETWORK_FAILED, wxCommandEvent); | ||||
| 
 | ||||
| }} // namespace Slic3r::GUI
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 tao wang
						tao wang