FIX:the checkbox in MsgDislog displays error on linux

GITHUB: #2711
Change-Id: Ie0bb6325aa064d7ed05e25240a6e1b351712fb0b
This commit is contained in:
MackBambu 2024-10-23 14:57:20 +08:00 committed by Lane.Wei
parent 7697eb3dc8
commit ec8d3ebaf9
4 changed files with 33 additions and 26 deletions

View File

@ -2345,6 +2345,8 @@ void GUI_App::init_app_config()
std::string error = app_config->load(); std::string error = app_config->load();
if (!error.empty()) { if (!error.empty()) {
// Error while parsing config file. We'll customize the error message and rethrow to be displayed. // Error while parsing config file. We'll customize the error message and rethrow to be displayed.
BOOST_LOG_TRIVIAL(error) << __FUNCTION__
<< "Configuration file may be corrupted and is not able to be parsed.Please delete the file and try again.";
throw Slic3r::RuntimeError( throw Slic3r::RuntimeError(
_u8L("BambuStudio configuration file may be corrupted and is not able to be parsed." _u8L("BambuStudio configuration file may be corrupted and is not able to be parsed."
"Please delete the file and try again.") + "Please delete the file and try again.") +

View File

@ -93,7 +93,7 @@ void MsgDialog::show_dsa_button(wxString const &title)
Fit(); Fit();
} }
bool MsgDialog::get_checkbox_state() bool MsgDialog::get_checkbox_state()
{ {
if (m_checkbox_dsa) { if (m_checkbox_dsa) {
return m_checkbox_dsa->GetValue(); return m_checkbox_dsa->GetValue();
@ -101,7 +101,7 @@ bool MsgDialog::get_checkbox_state()
return false; return false;
} }
void MsgDialog::on_dpi_changed(const wxRect &suggested_rect) void MsgDialog::on_dpi_changed(const wxRect &suggested_rect)
{ {
if (m_buttons.size() > 0) { if (m_buttons.size() > 0) {
MsgButtonsHash::iterator i = m_buttons.begin(); MsgButtonsHash::iterator i = m_buttons.begin();
@ -124,7 +124,7 @@ void MsgDialog::on_dpi_changed(const wxRect &suggested_rect)
} }
} }
void MsgDialog::SetButtonLabel(wxWindowID btn_id, const wxString& label, bool set_focus/* = false*/) void MsgDialog::SetButtonLabel(wxWindowID btn_id, const wxString& label, bool set_focus/* = false*/)
{ {
if (Button* btn = get_button(btn_id)) { if (Button* btn = get_button(btn_id)) {
btn->SetLabel(label); btn->SetLabel(label);
@ -148,7 +148,7 @@ Button* MsgDialog::add_button(wxWindowID btn_id, bool set_focus /*= false*/, con
type = ButtonSizeLong; type = ButtonSizeLong;
btn->SetMinSize(MSG_DIALOG_LONG_BUTTON_SIZE); btn->SetMinSize(MSG_DIALOG_LONG_BUTTON_SIZE);
} }
btn->SetCornerRadius(FromDIP(12)); btn->SetCornerRadius(FromDIP(12));
StateColor btn_bg_green( StateColor btn_bg_green(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
@ -271,7 +271,7 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin
wxSize page_size; wxSize page_size;
int em = wxGetApp().em_unit(); int em = wxGetApp().em_unit();
if (!wxGetApp().mainframe) { if (!wxGetApp().mainframe) {
// If mainframe is nullptr, it means that GUI_App::on_init_inner() isn't completed // If mainframe is nullptr, it means that GUI_App::on_init_inner() isn't completed
// (We just show information dialog about configuration version now) // (We just show information dialog about configuration version now)
// And as a result the em_unit value wasn't created yet // And as a result the em_unit value wasn't created yet
// So, calculate it from the scale factor of Dialog // So, calculate it from the scale factor of Dialog
@ -297,10 +297,12 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin
page_size = wxSize(68 * em, page_height); page_size = wxSize(68 * em, page_height);
} }
else { else {
#ifdef __WINDOWS__
Label* wrapped_text = new Label(html, msg); Label* wrapped_text = new Label(html, msg);
wrapped_text->Wrap(68 * em); wrapped_text->Wrap(68 * em);
msg = wrapped_text->GetLabel(); msg = wrapped_text->GetLabel();
wrapped_text->Destroy(); wrapped_text->Destroy();
#endif //__WINDOWS__
wxClientDC dc(parent); wxClientDC dc(parent);
wxSize msg_sz = dc.GetMultiLineTextExtent(msg); wxSize msg_sz = dc.GetMultiLineTextExtent(msg);
@ -323,7 +325,7 @@ static void add_msg_content(wxWindow* parent, wxBoxSizer* content_sizer, wxStrin
// ErrorDialog // ErrorDialog
ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, bool monospaced_font) ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg, bool monospaced_font)
: MsgDialog(parent, wxString::Format(_(L("%s error")), SLIC3R_APP_FULL_NAME), : MsgDialog(parent, wxString::Format(_(L("%s error")), SLIC3R_APP_FULL_NAME),
wxString::Format(_(L("%s has encountered an error")), SLIC3R_APP_FULL_NAME), wxOK) wxString::Format(_(L("%s has encountered an error")), SLIC3R_APP_FULL_NAME), wxOK)
, msg(msg) , msg(msg)
{ {
@ -343,7 +345,7 @@ WarningDialog::WarningDialog(wxWindow *parent,
const wxString& message, const wxString& message,
const wxString& caption/* = wxEmptyString*/, const wxString& caption/* = wxEmptyString*/,
long style/* = wxOK*/) long style/* = wxOK*/)
: MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s warning"), SLIC3R_APP_FULL_NAME) : caption, : MsgDialog(parent, caption.IsEmpty() ? wxString::Format(_L("%s warning"), SLIC3R_APP_FULL_NAME) : caption,
wxString::Format(_L("%s has a warning")+":", SLIC3R_APP_FULL_NAME), style) wxString::Format(_L("%s has a warning")+":", SLIC3R_APP_FULL_NAME), style)
{ {
add_msg_content(this, content_sizer, message); add_msg_content(this, content_sizer, message);
@ -375,25 +377,28 @@ RichMessageDialog::RichMessageDialog(wxWindow* parent,
{ {
add_msg_content(this, content_sizer, message); add_msg_content(this, content_sizer, message);
m_checkBox = new wxCheckBox(this, wxID_ANY, m_checkBoxText);
wxGetApp().UpdateDarkUI(m_checkBox);
m_checkBox->Bind(wxEVT_CHECKBOX, [this](wxCommandEvent&) { m_checkBoxValue = m_checkBox->GetValue(); });
btn_sizer->Insert(0, m_checkBox, wxALIGN_CENTER_VERTICAL);
finalize(); finalize();
} }
int RichMessageDialog::ShowModal() int RichMessageDialog::ShowModal()
{ {
if (m_checkBoxText.IsEmpty()) if (!m_checkBoxText.IsEmpty()) {
m_checkBox->Hide(); show_dsa_button(m_checkBoxText);
else m_checkbox_dsa->SetValue(m_checkBoxValue);
m_checkBox->SetLabelText(m_checkBoxText); }
Layout(); Layout();
return wxDialog::ShowModal(); return wxDialog::ShowModal();
} }
bool RichMessageDialog::IsCheckBoxChecked() const
{
if (m_checkbox_dsa)
return m_checkbox_dsa->GetValue();
return m_checkBoxValue;
}
#endif #endif
// InfoDialog // InfoDialog
@ -411,12 +416,12 @@ DownloadDialog::DownloadDialog(wxWindow *parent, const wxString &msg, const wxSt
{ {
add_button(wxID_YES, true, _L("Download")); add_button(wxID_YES, true, _L("Download"));
add_button(wxID_CANCEL, true, _L("Skip")); add_button(wxID_CANCEL, true, _L("Skip"));
finalize(); finalize();
} }
void DownloadDialog::SetExtendedMessage(const wxString &extendedMessage) void DownloadDialog::SetExtendedMessage(const wxString &extendedMessage)
{ {
add_msg_content(this, content_sizer, msg + "\n" + extendedMessage, false, false); add_msg_content(this, content_sizer, msg + "\n" + extendedMessage, false, false);
Layout(); Layout();
@ -520,13 +525,13 @@ wxBoxSizer *Newer3mfVersionDialog::get_msg_sizer()
wxStaticText *text1; wxStaticText *text1;
wxBoxSizer * horizontal_sizer = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer * horizontal_sizer = new wxBoxSizer(wxHORIZONTAL);
wxString msg_str; wxString msg_str;
if (file_version_newer) { if (file_version_newer) {
text1 = new wxStaticText(this, wxID_ANY, _L("The 3mf file version is in Beta and it is newer than the current Bambu Studio version.")); text1 = new wxStaticText(this, wxID_ANY, _L("The 3mf file version is in Beta and it is newer than the current Bambu Studio version."));
wxStaticText * text2 = new wxStaticText(this, wxID_ANY, _L("If you would like to try Bambu Studio Beta, you may click to")); wxStaticText * text2 = new wxStaticText(this, wxID_ANY, _L("If you would like to try Bambu Studio Beta, you may click to"));
wxHyperlinkCtrl *github_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Download Beta Version"), "https://github.com/bambulab/BambuStudio/releases"); wxHyperlinkCtrl *github_link = new wxHyperlinkCtrl(this, wxID_ANY, _L("Download Beta Version"), "https://github.com/bambulab/BambuStudio/releases");
horizontal_sizer->Add(text2, 0, wxEXPAND, 0); horizontal_sizer->Add(text2, 0, wxEXPAND, 0);
horizontal_sizer->Add(github_link, 0, wxEXPAND | wxLEFT, 5); horizontal_sizer->Add(github_link, 0, wxEXPAND | wxLEFT, 5);
} else { } else {
text1 = new wxStaticText(this, wxID_ANY, _L("The 3mf file version is newer than the current Bambu Studio version.")); text1 = new wxStaticText(this, wxID_ANY, _L("The 3mf file version is newer than the current Bambu Studio version."));
wxStaticText *text2 = new wxStaticText(this, wxID_ANY, _L("Update your Bambu Studio could enable all functionality in the 3mf file.")); wxStaticText *text2 = new wxStaticText(this, wxID_ANY, _L("Update your Bambu Studio could enable all functionality in the 3mf file."));
@ -580,7 +585,7 @@ wxBoxSizer *Newer3mfVersionDialog::get_btn_sizer()
} }
}); });
} }
if (!file_version_newer) { if (!file_version_newer) {
m_later_btn = new Button(this, _L("Not for now")); m_later_btn = new Button(this, _L("Not for now"));
m_later_btn->SetBackgroundColor(btn_bg_white); m_later_btn->SetBackgroundColor(btn_bg_white);
@ -613,7 +618,7 @@ NetworkErrorDialog::NetworkErrorDialog(wxWindow* parent)
auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); m_line_top->SetBackgroundColour(wxColour(166, 169, 170));
wxBoxSizer* sizer_bacis_text = new wxBoxSizer(wxVERTICAL); wxBoxSizer* sizer_bacis_text = new wxBoxSizer(wxVERTICAL);
m_text_basic = new Label(this, _L("The server is unable to respond. Please click the link below to check the server status.")); m_text_basic = new Label(this, _L("The server is unable to respond. Please click the link below to check the server status."));
@ -644,7 +649,7 @@ NetworkErrorDialog::NetworkErrorDialog(wxWindow* parent)
m_text_proposal->Wrap(FromDIP(470)); m_text_proposal->Wrap(FromDIP(470));
m_text_proposal->SetFont(::Label::Body_14); m_text_proposal->SetFont(::Label::Body_14);
m_text_proposal->SetForegroundColour(0x323A3C); m_text_proposal->SetForegroundColour(0x323A3C);
m_text_wiki = new wxHyperlinkCtrl(this, wxID_ANY, _L("How to use LAN only mode"), ""); m_text_wiki = new wxHyperlinkCtrl(this, wxID_ANY, _L("How to use LAN only mode"), "");
m_text_wiki->SetFont(::Label::Body_13); m_text_wiki->SetFont(::Label::Body_13);
m_text_wiki->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {wxGetApp().link_to_lan_only_wiki(); }); m_text_wiki->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {wxGetApp().link_to_lan_only_wiki(); });

View File

@ -190,7 +190,7 @@ public:
} }
wxString GetCheckBoxText() const { return m_checkBoxText; } wxString GetCheckBoxText() const { return m_checkBoxText; }
bool IsCheckBoxChecked() const { return m_checkBoxValue; } bool IsCheckBoxChecked() const;
// This part o fcode isported from the "wx\msgdlg.h" // This part o fcode isported from the "wx\msgdlg.h"
using wxMD = wxMessageDialogBase; using wxMD = wxMessageDialogBase;

View File

@ -68,8 +68,8 @@ struct CurlGlobalInit
else else
message = (boost::format("use system SSL certificate: %1%") % bundle).str(); message = (boost::format("use system SSL certificate: %1%") % bundle).str();
message += "\n" + (boost::format("To manually specify the system certificate store, " message += "\n" + (boost::format("To manually specify the system certificate store, "
"set the %1% environment variable to the correct CA and restart the application") % SSL_CA_FILE).str(); "set the %1% environment variable to the correct CA and restart the application.") % SSL_CA_FILE).str();
} }
#endif // OPENSSL_CERT_OVERRIDE #endif // OPENSSL_CERT_OVERRIDE