FIX:updateversiondialog be compatible with full text and web display

Change-Id: I8b8b7fc1acd090c85bda286f09effe3dad1c3a4a
This commit is contained in:
tao wang 2022-10-12 12:28:50 +08:00 committed by Lane.Wei
parent 0f1a001fd6
commit b0de324ea8
3 changed files with 84 additions and 44 deletions

View file

@ -2118,8 +2118,9 @@ bool GUI_App::on_init_inner()
if (!skip_this_version if (!skip_this_version
|| evt.GetInt() != 0) { || evt.GetInt() != 0) {
UpdateVersionDialog dialog(this->mainframe); UpdateVersionDialog dialog(this->mainframe);
//dialog.update_version_info(extmsg, version_info.version_str); wxString extmsg = wxString::FromUTF8(version_info.description);
dialog.update_version_info(version_info.description); dialog.update_version_info(extmsg, version_info.version_str);
//dialog.update_version_info(version_info.description);
if (evt.GetInt() != 0) { if (evt.GetInt() != 0) {
dialog.m_remind_choice->Hide(); dialog.m_remind_choice->Hide();
} }

View file

@ -57,12 +57,12 @@ ReleaseNoteDialog::ReleaseNoteDialog(Plater *plater /*= nullptr*/)
m_sizer_right->Add(0, 0, 1, wxTOP, FromDIP(15)); m_sizer_right->Add(0, 0, 1, wxTOP, FromDIP(15));
m_scrollwindw_release_note = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(560), FromDIP(430)), wxVSCROLL); m_vebview_release_note = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(560), FromDIP(430)), wxVSCROLL);
m_scrollwindw_release_note->SetScrollRate(5, 5); m_vebview_release_note->SetScrollRate(5, 5);
m_scrollwindw_release_note->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8)); m_vebview_release_note->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8));
m_scrollwindw_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430))); m_vebview_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430)));
m_sizer_right->Add(m_scrollwindw_release_note, 0, wxEXPAND | wxRIGHT, FromDIP(20)); m_sizer_right->Add(m_vebview_release_note, 0, wxEXPAND | wxRIGHT, FromDIP(20));
m_sizer_body->Add(m_sizer_right, 1, wxBOTTOM | wxEXPAND, FromDIP(30)); m_sizer_body->Add(m_sizer_right, 1, wxBOTTOM | wxEXPAND, FromDIP(30));
m_sizer_main->Add(m_sizer_body, 0, wxEXPAND, 0); m_sizer_main->Add(m_sizer_body, 0, wxEXPAND, 0);
@ -84,11 +84,11 @@ void ReleaseNoteDialog::update_release_note(wxString release_note, std::string v
{ {
m_text_up_info->SetLabel(wxString::Format(_L("version %s update information :"), version)); m_text_up_info->SetLabel(wxString::Format(_L("version %s update information :"), version));
wxBoxSizer * sizer_text_release_note = new wxBoxSizer(wxVERTICAL); wxBoxSizer * sizer_text_release_note = new wxBoxSizer(wxVERTICAL);
auto m_staticText_release_note = new wxStaticText(m_scrollwindw_release_note, wxID_ANY, release_note, wxDefaultPosition, wxDefaultSize, 0); auto m_staticText_release_note = new wxStaticText(m_vebview_release_note, wxID_ANY, release_note, wxDefaultPosition, wxDefaultSize, 0);
m_staticText_release_note->Wrap(FromDIP(530)); m_staticText_release_note->Wrap(FromDIP(530));
sizer_text_release_note->Add(m_staticText_release_note, 0, wxALL, 5); sizer_text_release_note->Add(m_staticText_release_note, 0, wxALL, 5);
m_scrollwindw_release_note->SetSizer(sizer_text_release_note); m_vebview_release_note->SetSizer(sizer_text_release_note);
m_scrollwindw_release_note->Layout(); m_vebview_release_note->Layout();
} }
void UpdateVersionDialog::alter_choice(wxCommandEvent& event) void UpdateVersionDialog::alter_choice(wxCommandEvent& event)
@ -130,12 +130,22 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
m_sizer_right->Add(0, 0, 1, wxTOP, FromDIP(15)); m_sizer_right->Add(0, 0, 1, wxTOP, FromDIP(15));
m_simplebook_release_note = new wxSimplebook(this);
m_simplebook_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430)));
m_simplebook_release_note->SetMinSize(wxSize(FromDIP(560), FromDIP(430)));
m_simplebook_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430)));
m_simplebook_release_note->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8));
m_scrollwindows_release_note = new wxScrolledWindow(m_simplebook_release_note, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(560), FromDIP(430)), wxVSCROLL);
m_scrollwindows_release_note->SetScrollRate(5, 5);
m_scrollwindows_release_note->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8));
//webview //webview
m_scrollwindw_release_note = CreateTipView(this); m_vebview_release_note = CreateTipView(m_simplebook_release_note);
m_scrollwindw_release_note->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8)); m_vebview_release_note->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8));
m_scrollwindw_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430))); m_vebview_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430)));
m_scrollwindw_release_note->SetMinSize(wxSize(FromDIP(560), FromDIP(430))); m_vebview_release_note->SetMinSize(wxSize(FromDIP(560), FromDIP(430)));
m_scrollwindw_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430))); m_vebview_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430)));
fs::path ph(data_dir()); fs::path ph(data_dir());
ph /= "resources/tooltip/common/releasenote.html"; ph /= "resources/tooltip/common/releasenote.html";
@ -146,7 +156,10 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
auto url = ph.string(); auto url = ph.string();
std::replace(url.begin(), url.end(), '\\', '/'); std::replace(url.begin(), url.end(), '\\', '/');
url = "file:///" + url; url = "file:///" + url;
m_scrollwindw_release_note->LoadURL(from_u8(url)); m_vebview_release_note->LoadURL(from_u8(url));
m_simplebook_release_note->AddPage(m_scrollwindows_release_note, wxEmptyString, false);
m_simplebook_release_note->AddPage(m_vebview_release_note, wxEmptyString, false);
m_remind_choice = new wxCheckBox( this, wxID_ANY, _L("Don't remind me of this version again"), wxDefaultPosition, wxDefaultSize, 0 ); m_remind_choice = new wxCheckBox( this, wxID_ANY, _L("Don't remind me of this version again"), wxDefaultPosition, wxDefaultSize, 0 );
@ -193,7 +206,7 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5)); sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5));
m_sizer_right->Add(m_scrollwindw_release_note, 0, wxEXPAND | wxRIGHT, FromDIP(20)); m_sizer_right->Add(m_simplebook_release_note, 0, wxEXPAND | wxRIGHT, FromDIP(20));
m_sizer_right->Add(sizer_button, 0, wxEXPAND | wxRIGHT, FromDIP(20)); m_sizer_right->Add(sizer_button, 0, wxEXPAND | wxRIGHT, FromDIP(20));
m_sizer_body->Add(m_sizer_right, 1, wxBOTTOM | wxEXPAND, FromDIP(8)); m_sizer_body->Add(m_sizer_right, 1, wxBOTTOM | wxEXPAND, FromDIP(8));
@ -263,7 +276,7 @@ bool UpdateVersionDialog::ShowReleaseNote(std::string content)
void UpdateVersionDialog::RunScript(std::string script) void UpdateVersionDialog::RunScript(std::string script)
{ {
WebView::RunScript(m_scrollwindw_release_note, script); WebView::RunScript(m_vebview_release_note, script);
script.clear(); script.clear();
} }
@ -272,32 +285,55 @@ void UpdateVersionDialog::on_dpi_changed(const wxRect &suggested_rect) {
m_button_cancel->Rescale(); m_button_cancel->Rescale();
} }
void UpdateVersionDialog::update_version_info(std::string url) std::vector<std::string> UpdateVersionDialog::splitWithStl(std::string str,std::string pattern)
{ {
/*m_text_up_info->SetLabel(wxString::Format(_L("Click to download new version in default browser: %s"), version)); std::string::size_type pos;
wxBoxSizer *sizer_text_release_note = new wxBoxSizer(wxVERTICAL); std::vector<std::string> result;
auto m_staticText_release_note = new wxStaticText(m_scrollwindw_release_note, wxID_ANY, release_note, wxDefaultPosition, wxDefaultSize, 0); str += pattern;
m_staticText_release_note->Wrap(FromDIP(530)); int size = str.size();
sizer_text_release_note->Add(m_staticText_release_note, 0, wxALL, 5); for (int i = 0; i < size; i++)
m_scrollwindw_release_note->SetSizer(sizer_text_release_note); {
m_scrollwindw_release_note->Layout();*/ pos = str.find(pattern, i);
if (pos < size)
{
std::string s = str.substr(i, pos - i);
result.push_back(s);
i = pos + pattern.size() - 1;
}
}
return result;
}
if (url.empty()) { void UpdateVersionDialog::update_version_info(wxString release_note, wxString version)
fs::path ph(data_dir()); {
ph /= "resources/tooltip/common/releasenote.html"; //bbs check whether the web display is used
if (!fs::exists(ph)) { bool use_web_link = false;
ph = resources_dir(); std::string url_line = "";
ph /= "tooltip/releasenote.html"; auto split_array = splitWithStl(release_note.ToStdString(), "###");
}
auto url = ph.string(); for (auto i = 0; i < split_array.size(); i++) {
std::replace(url.begin(), url.end(), '\\', '/'); std::string url = split_array[i];
url = "file:///" + url; if (std::strstr (url.c_str(), "http://") != NULL || std::strstr (url.c_str(), "https://") != NULL) {
m_scrollwindw_release_note->LoadURL(from_u8(url)); use_web_link = true;
url_line = url;
break;
}
}
if (use_web_link) {
m_simplebook_release_note->SetSelection(1);
m_vebview_release_note->LoadURL(from_u8(url_line));
} }
else { else {
m_scrollwindw_release_note->LoadURL(from_u8(url)); m_simplebook_release_note->SetSelection(0);
} m_text_up_info->SetLabel(wxString::Format(_L("Click to download new version in default browser: %s"), version));
wxBoxSizer* sizer_text_release_note = new wxBoxSizer(wxVERTICAL);
auto m_staticText_release_note = new wxStaticText(m_scrollwindows_release_note, wxID_ANY, release_note, wxDefaultPosition, wxDefaultSize, 0);
m_staticText_release_note->Wrap(FromDIP(530));
sizer_text_release_note->Add(m_staticText_release_note, 0, wxALL, 5);
m_scrollwindows_release_note->SetSizer(sizer_text_release_note);
m_scrollwindows_release_note->Layout();
}
} }
}} // namespace Slic3r::GUI }} // namespace Slic3r::GUI

View file

@ -47,7 +47,7 @@ public:
void update_release_note(wxString release_note, std::string version); void update_release_note(wxString release_note, std::string version);
wxStaticText * m_text_up_info{nullptr}; wxStaticText * m_text_up_info{nullptr};
wxScrolledWindow *m_scrollwindw_release_note {nullptr}; wxScrolledWindow *m_vebview_release_note {nullptr};
}; };
class UpdateVersionDialog : public DPIDialog class UpdateVersionDialog : public DPIDialog
@ -63,11 +63,14 @@ public:
bool ShowReleaseNote(std::string content); bool ShowReleaseNote(std::string content);
void RunScript(std::string script); void RunScript(std::string script);
void on_dpi_changed(const wxRect& suggested_rect) override; void on_dpi_changed(const wxRect& suggested_rect) override;
void update_version_info(std::string url); void update_version_info(wxString release_note, wxString version);
void alter_choice(wxCommandEvent& event); void alter_choice(wxCommandEvent& event);
std::vector<std::string> splitWithStl(std::string str, std::string pattern);
wxStaticText * m_text_up_info{nullptr}; wxStaticText * m_text_up_info{nullptr};
wxWebView* m_scrollwindw_release_note{nullptr}; wxWebView* m_vebview_release_note{nullptr};
wxSimplebook* m_simplebook_release_note{nullptr};
wxScrolledWindow* m_scrollwindows_release_note{nullptr};
wxBoxSizer * sizer_text_release_note{nullptr}; wxBoxSizer * sizer_text_release_note{nullptr};
wxStaticText * m_staticText_release_note{nullptr}; wxStaticText * m_staticText_release_note{nullptr};
wxCheckBox* m_remind_choice; wxCheckBox* m_remind_choice;