mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-14 19:26:04 +08:00
SendSystemInfoDialog: Use button instead of hyperlink
+ Fixed wsWidgets asserts
This commit is contained in:
parent
3021a6f57f
commit
8d0a4c7cd6
@ -67,8 +67,9 @@ public:
|
|||||||
SendSystemInfoDialog(wxWindow* parent);
|
SendSystemInfoDialog(wxWindow* parent);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool send_info();
|
wxString send_info();
|
||||||
const std::string m_system_info_json;
|
const std::string m_system_info_json;
|
||||||
|
wxButton* m_btn_show_data;
|
||||||
wxButton* m_btn_send;
|
wxButton* m_btn_send;
|
||||||
wxButton* m_btn_dont_send;
|
wxButton* m_btn_dont_send;
|
||||||
wxButton* m_btn_ask_later;
|
wxButton* m_btn_ask_later;
|
||||||
@ -89,7 +90,7 @@ public:
|
|||||||
auto* btn = new wxButton(this, wxID_CANCEL, _L("Cancel"));
|
auto* btn = new wxButton(this, wxID_CANCEL, _L("Cancel"));
|
||||||
auto* vsizer = new wxBoxSizer(wxVERTICAL);
|
auto* vsizer = new wxBoxSizer(wxVERTICAL);
|
||||||
auto *top_sizer = new wxBoxSizer(wxVERTICAL);
|
auto *top_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
vsizer->Add(text, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL);
|
vsizer->Add(text, 1, wxEXPAND);
|
||||||
vsizer->AddSpacer(5);
|
vsizer->AddSpacer(5);
|
||||||
vsizer->Add(btn, 0, wxALIGN_CENTER_HORIZONTAL);
|
vsizer->Add(btn, 0, wxALIGN_CENTER_HORIZONTAL);
|
||||||
top_sizer->Add(vsizer, 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT | wxBOTTOM, 10);
|
top_sizer->Add(vsizer, 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT | wxBOTTOM, 10);
|
||||||
@ -548,7 +549,6 @@ SendSystemInfoDialog::SendSystemInfoDialog(wxWindow* parent)
|
|||||||
"installation are sent. PrusaSlicer is open source, if you want to "
|
"installation are sent. PrusaSlicer is open source, if you want to "
|
||||||
"inspect the code actually performing the communication, see %1%."),
|
"inspect the code actually performing the communication, see %1%."),
|
||||||
std::string("<i>") + filename + "</i>");
|
std::string("<i>") + filename + "</i>");
|
||||||
wxString label3 = _L("Show verbatim data that will be sent");
|
|
||||||
|
|
||||||
auto* html_window = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxSize(70*em, 34*em), wxHW_SCROLLBAR_NEVER);
|
auto* html_window = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxSize(70*em, 34*em), wxHW_SCROLLBAR_NEVER);
|
||||||
wxString html = GUI::format_wxstr(
|
wxString html = GUI::format_wxstr(
|
||||||
@ -560,17 +560,14 @@ SendSystemInfoDialog::SendSystemInfoDialog(wxWindow* parent)
|
|||||||
+ text1 + "<br /><br />"
|
+ text1 + "<br /><br />"
|
||||||
"</td></tr></table>"
|
"</td></tr></table>"
|
||||||
+ "<b>" + label2 + "</b><br />"
|
+ "<b>" + label2 + "</b><br />"
|
||||||
+ text2 + "<br /><br />"
|
+ text2
|
||||||
+ "<b><a href=\"show\">" + label3 + "</a></b><br />"
|
|
||||||
+ "</font></body></html>", bgr_clr_str, text_clr_str);
|
+ "</font></body></html>", bgr_clr_str, text_clr_str);
|
||||||
html_window->SetPage(html);
|
html_window->SetPage(html);
|
||||||
html_window->Bind(wxEVT_HTML_LINK_CLICKED, [this](wxHtmlLinkEvent&) {
|
|
||||||
ShowJsonDialog dlg(this, m_system_info_json, GetSize().Scale(0.9, 0.7));
|
|
||||||
dlg.ShowModal();
|
|
||||||
});
|
|
||||||
|
|
||||||
vsizer->Add(html_window, 1, wxEXPAND);
|
vsizer->Add(html_window, 1, wxEXPAND);
|
||||||
|
|
||||||
|
m_btn_show_data = new wxButton(this, wxID_ANY, _L("Show verbatim data that will be sent"));
|
||||||
|
|
||||||
m_btn_ask_later = new wxButton(this, wxID_ANY, _L("Ask me next time"));
|
m_btn_ask_later = new wxButton(this, wxID_ANY, _L("Ask me next time"));
|
||||||
m_btn_dont_send = new wxButton(this, wxID_ANY, _L("Do not send anything"));
|
m_btn_dont_send = new wxButton(this, wxID_ANY, _L("Do not send anything"));
|
||||||
m_btn_send = new wxButton(this, wxID_ANY, _L("Send system info"));
|
m_btn_send = new wxButton(this, wxID_ANY, _L("Send system info"));
|
||||||
@ -582,6 +579,7 @@ SendSystemInfoDialog::SendSystemInfoDialog(wxWindow* parent)
|
|||||||
hsizer->AddSpacer(em);
|
hsizer->AddSpacer(em);
|
||||||
hsizer->Add(m_btn_send);
|
hsizer->Add(m_btn_send);
|
||||||
|
|
||||||
|
vsizer->Add(m_btn_show_data, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 20);
|
||||||
vsizer->Add(hsizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
|
vsizer->Add(hsizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
|
||||||
topSizer->Add(vsizer, 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, 10);
|
topSizer->Add(vsizer, 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, 10);
|
||||||
|
|
||||||
@ -599,9 +597,15 @@ SendSystemInfoDialog::SendSystemInfoDialog(wxWindow* parent)
|
|||||||
|
|
||||||
CenterOnParent();
|
CenterOnParent();
|
||||||
|
|
||||||
|
m_btn_show_data->Bind(wxEVT_BUTTON, [this](wxEvent&) {
|
||||||
|
ShowJsonDialog dlg(this, m_system_info_json, GetSize().Scale(0.9, 0.7));
|
||||||
|
dlg.ShowModal();
|
||||||
|
});
|
||||||
|
|
||||||
m_btn_send->Bind(wxEVT_BUTTON, [this](const wxEvent&)
|
m_btn_send->Bind(wxEVT_BUTTON, [this](const wxEvent&)
|
||||||
{
|
{
|
||||||
if (send_info()) {
|
if (wxString out = send_info(); !out.IsEmpty()) {
|
||||||
|
InfoDialog(nullptr, wxEmptyString, out).ShowModal();
|
||||||
save_version();
|
save_version();
|
||||||
EndModal(0);
|
EndModal(0);
|
||||||
}
|
}
|
||||||
@ -630,7 +634,7 @@ void SendSystemInfoDialog::on_dpi_changed(const wxRect&)
|
|||||||
|
|
||||||
|
|
||||||
// This actually sends the info.
|
// This actually sends the info.
|
||||||
bool SendSystemInfoDialog::send_info()
|
wxString SendSystemInfoDialog::send_info()
|
||||||
{
|
{
|
||||||
std::atomic<int> job_done = false; // Flag to communicate between threads.
|
std::atomic<int> job_done = false; // Flag to communicate between threads.
|
||||||
struct Result {
|
struct Result {
|
||||||
@ -674,11 +678,9 @@ bool SendSystemInfoDialog::send_info()
|
|||||||
job_done = true; // In case the user closed the dialog, let the other thread know
|
job_done = true; // In case the user closed the dialog, let the other thread know
|
||||||
sending_thread.join(); // and wait until it terminates.
|
sending_thread.join(); // and wait until it terminates.
|
||||||
|
|
||||||
if (result.value != Result::Cancelled) { // user knows he cancelled, no need to tell him.
|
if (result.value == Result::Cancelled)
|
||||||
InfoDialog info_dlg(wxGetApp().mainframe, wxEmptyString, result.str);
|
return "";
|
||||||
info_dlg.ShowModal();
|
return result.str;
|
||||||
}
|
|
||||||
return result.value == Result::Success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user