2022-07-22 09:46:10 +00:00
# include "DownloadProgressDialog.hpp"
# include <wx/settings.h>
# include <wx/sizer.h>
# include <wx/stattext.h>
# include <wx/button.h>
# include <wx/statbmp.h>
# include <wx/scrolwin.h>
# include <wx/clipbrd.h>
# include <wx/checkbox.h>
# include <wx/html/htmlwin.h>
# include <boost/algorithm/string/replace.hpp>
# include "libslic3r/libslic3r.h"
# include "libslic3r/Utils.hpp"
# include "GUI.hpp"
# include "I18N.hpp"
//#include "ConfigWizard.hpp"
# include "wxExtensions.hpp"
# include "slic3r/GUI/MainFrame.hpp"
# include "GUI_App.hpp"
# define DESIGN_INPUT_SIZE wxSize(FromDIP(100), -1)
namespace Slic3r {
namespace GUI {
DownloadProgressDialog : : DownloadProgressDialog ( wxString title )
: DPIDialog ( static_cast < wxWindow * > ( wxGetApp ( ) . mainframe ) , wxID_ANY , title , wxDefaultPosition , wxDefaultSize , wxCAPTION | wxCLOSE_BOX )
{
2022-10-21 07:34:11 +00:00
wxString download_failed_url = wxT ( " https://wiki.bambulab.com/en/software/bambu-studio/failed-to-get-network-plugin " ) ;
wxString install_failed_url = wxT ( " https://wiki.bambulab.com/en/software/bambu-studio/failed-to-get-network-plugin " ) ;
2022-10-18 08:55:32 +00:00
2022-10-18 15:29:20 +00:00
wxString download_failed_msg = _L ( " Failed to download the plug-in. Please check your firewall settings and vpn software, check and retry. " ) ;
wxString install_failed_msg = _L ( " Failed to install the plug-in. Please check whether it is blocked or deleted by anti-virus software. " ) ;
2022-10-18 08:55:32 +00:00
2022-07-22 09:46:10 +00:00
std : : string icon_path = ( boost : : format ( " %1%/images/BambuStudioTitle.ico " ) % resources_dir ( ) ) . str ( ) ;
SetIcon ( wxIcon ( encode_path ( icon_path . c_str ( ) ) , wxBITMAP_TYPE_ICO ) ) ;
SetBackgroundColour ( * wxWHITE ) ;
wxBoxSizer * m_sizer_main = new wxBoxSizer ( wxVERTICAL ) ;
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 ) ;
2022-10-18 08:55:32 +00:00
m_simplebook_status = new wxSimplebook ( this ) ;
2023-04-20 07:26:07 +00:00
m_simplebook_status - > SetSize ( wxSize ( FromDIP ( 400 ) , - 1 ) ) ;
m_simplebook_status - > SetMinSize ( wxSize ( FromDIP ( 400 ) , - 1 ) ) ;
m_simplebook_status - > SetMaxSize ( wxSize ( FromDIP ( 400 ) , - 1 ) ) ;
2022-10-18 08:55:32 +00:00
//mode normal
m_status_bar = std : : make_shared < BBLStatusBarSend > ( m_simplebook_status ) ;
2022-07-22 09:46:10 +00:00
m_panel_download = m_status_bar - > get_panel ( ) ;
2022-10-18 08:55:32 +00:00
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 ) ;
2022-12-21 03:58:15 +00:00
m_statictext_download_failed - > SetForegroundColour ( * wxBLACK ) ;
2022-10-18 08:55:32 +00:00
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 ) ;
2022-12-21 03:58:15 +00:00
m_statictext_install_failed - > SetForegroundColour ( * wxBLACK ) ;
2022-10-18 08:55:32 +00:00
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 ) ;
2023-04-20 07:26:07 +00:00
m_panel_install_failed - > SetSizer ( sizer_install_failed ) ;
m_panel_install_failed - > Layout ( ) ;
2022-10-18 08:55:32 +00:00
sizer_install_failed - > Fit ( m_panel_install_failed ) ;
m_sizer_main - > Add ( m_simplebook_status , 0 , wxALL , FromDIP ( 20 ) ) ;
2022-07-22 09:46:10 +00:00
m_sizer_main - > Add ( 0 , 0 , 1 , wxBOTTOM , 10 ) ;
2022-10-18 08:55:32 +00:00
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 ) ;
2022-07-22 09:46:10 +00:00
SetSizer ( m_sizer_main ) ;
Layout ( ) ;
Fit ( ) ;
CentreOnParent ( ) ;
2022-08-19 06:26:44 +00:00
Bind ( wxEVT_CLOSE_WINDOW , & DownloadProgressDialog : : on_close , this ) ;
2022-11-04 03:28:05 +00:00
wxGetApp ( ) . UpdateDlgDarkUI ( this ) ;
2022-07-22 09:46:10 +00:00
}
2022-10-18 08:55:32 +00:00
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 ;
}
2022-07-22 09:46:10 +00:00
bool DownloadProgressDialog : : Show ( bool show )
{
if ( show ) {
2022-10-18 08:55:32 +00:00
m_simplebook_status - > SetSelection ( 0 ) ;
2022-09-19 01:50:34 +00:00
m_upgrade_job = make_job ( m_status_bar ) ;
2022-07-22 09:46:10 +00:00
m_upgrade_job - > set_event_handle ( this ) ;
m_status_bar - > set_progress ( 0 ) ;
Bind ( EVT_UPGRADE_NETWORK_SUCCESS , [ this ] ( wxCommandEvent & evt ) {
2022-11-10 03:22:21 +00:00
m_status_bar - > change_button_label ( _L ( " Close " ) ) ;
2022-09-19 01:50:34 +00:00
on_finish ( ) ;
2022-07-22 09:46:10 +00:00
m_status_bar - > set_cancel_callback_fina (
[ this ] ( ) {
this - > Close ( ) ;
}
) ;
} ) ;
2022-10-18 08:55:32 +00:00
//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 ) {
2022-07-22 09:46:10 +00:00
m_status_bar - > change_button_label ( _L ( " Close " ) ) ;
m_status_bar - > set_progress ( 0 ) ;
2022-10-18 08:55:32 +00:00
this - > m_simplebook_status - > SetSelection ( 2 ) ;
2022-07-22 09:46:10 +00:00
m_status_bar - > set_cancel_callback_fina (
[ this ] ( ) {
this - > Close ( ) ;
}
) ;
} ) ;
m_status_bar - > set_cancel_callback_fina ( [ this ] ( ) {
if ( m_upgrade_job ) {
m_upgrade_job - > cancel ( ) ;
//EndModal(wxID_CLOSE);
}
} ) ;
m_upgrade_job - > start ( ) ;
}
return DPIDialog : : Show ( show ) ;
}
2022-08-19 06:26:44 +00:00
void DownloadProgressDialog : : on_close ( wxCloseEvent & event )
{
if ( m_upgrade_job ) {
m_upgrade_job - > cancel ( ) ;
m_upgrade_job - > join ( ) ;
}
event . Skip ( ) ;
}
2022-07-22 09:46:10 +00:00
DownloadProgressDialog : : ~ DownloadProgressDialog ( ) { }
void DownloadProgressDialog : : on_dpi_changed ( const wxRect & suggested_rect ) { }
void DownloadProgressDialog : : update_release_note ( std : : string release_note , std : : string version ) { }
2022-09-19 01:50:34 +00:00
std : : shared_ptr < UpgradeNetworkJob > DownloadProgressDialog : : make_job ( std : : shared_ptr < ProgressIndicator > pri ) { return std : : make_shared < UpgradeNetworkJob > ( pri ) ; }
void DownloadProgressDialog : : on_finish ( ) { wxGetApp ( ) . restart_networking ( ) ; }
2022-07-22 09:46:10 +00:00
} } // namespace Slic3r::GUI