From e917afe923a314731b41b217842075c846f1fea9 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Wed, 28 Feb 2024 11:55:23 +0800 Subject: [PATCH] FIX: label wrap all & ping test for liveview Change-Id: I7767ed0740e20bb578b6ef9f5e9873c8c79d172a Jira: STUDIO-5821 --- src/slic3r/GUI/GUI_App.cpp | 34 ++++++++++++++++++++++++++++++++ src/slic3r/GUI/ImageGrid.cpp | 12 ++++++++++- src/slic3r/GUI/MediaPlayCtrl.cpp | 8 ++++++++ src/slic3r/GUI/OptionsGroup.cpp | 2 +- src/slic3r/GUI/Widgets/Label.cpp | 34 ++++++++++++-------------------- 5 files changed, 67 insertions(+), 23 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 9caec76c0..ce9377683 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -147,6 +147,40 @@ namespace GUI { class MainFrame; +void start_ping_test() +{ + wxArrayString output; + wxExecute("ping www.amazon.com", output, wxEXEC_NODISABLE); + + wxString output_i; + std::string output_temp; + + for (int i = 0; i < output.size(); i++) { + output_i = output[i].To8BitData(); + output_temp = output_i.ToStdString(wxConvUTF8); + BOOST_LOG_TRIVIAL(info) << "ping amazon:" << output_temp; + + } + wxExecute("ping www.apple.com", output, wxEXEC_NODISABLE); + for (int i = 0; i < output.size(); i++) { + output_i = output[i].To8BitData(); + output_temp = output_i.ToStdString(wxConvUTF8); + BOOST_LOG_TRIVIAL(info) << "ping www.apple.com:" << output_temp; + } + wxExecute("ping www.bambulab.com", output, wxEXEC_NODISABLE); + for (int i = 0; i < output.size(); i++) { + output_i = output[i].To8BitData(); + output_temp = output_i.ToStdString(wxConvUTF8); + BOOST_LOG_TRIVIAL(info) << "ping bambulab:" << output_temp; + } + //Get GateWay IP + wxExecute("ping 192.168.0.1", output, wxEXEC_NODISABLE); + for (int i = 0; i < output.size(); i++) { + output_i = output[i].To8BitData(); + output_temp = output_i.ToStdString(wxConvUTF8); + BOOST_LOG_TRIVIAL(info) << "ping 192.168.0.1:" << output_temp; + } +} std::string VersionInfo::convert_full_version(std::string short_version) { diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index aac93edba..5e3df2456 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -737,7 +737,17 @@ void Slic3r::GUI::ImageGrid::renderText(wxDC &dc, wxString const &text, wxRect c dc.SetTextForeground(m_buttonTextColor.colorForStatesNoDark(states)); wxRect rc({0, 0}, dc.GetTextExtent(text)); rc = rc.CenterIn(rect); - dc.DrawText(text, rc.GetTopLeft()); + float fontScale = float(rect.width - 8) / rc.width; + if (fontScale < 1) { + auto font = dc.GetFont(); + dc.SetFont(font.Scaled(fontScale)); + wxRect rc({0, 0}, dc.GetTextExtent(text)); + rc = rc.CenterIn(rect); + dc.DrawText(text, rc.GetTopLeft()); + dc.SetFont(font); + } else { + dc.DrawText(text, rc.GetTopLeft()); + } } void Slic3r::GUI::ImageGrid::renderText2(wxDC &dc, wxString text, wxRect const &rect) diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 6d05fa7f0..f759f4d05 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -337,6 +337,8 @@ void MediaPlayCtrl::Play() } } +void start_ping_test(); + void MediaPlayCtrl::Stop(wxString const &msg) { int last_state = m_last_state; @@ -358,6 +360,12 @@ void MediaPlayCtrl::Stop(wxString const &msg) if (m_last_state == wxMEDIASTATE_PLAYING) msg2 = _L("The printer has been logged out and cannot connect."); } +#if !BBL_RELEASE_TO_PUBLIC && defined(__WINDOWS__) + if (m_failed_code < 0) + boost::thread ping_thread = Slic3r::create_thread([] { + start_ping_test(); + }); +#endif SetStatus(msg2); } else SetStatus(_L("Stopped."), false); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 60b9ab0a0..1aacd2553 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -271,7 +271,7 @@ void OptionsGroup::activate_line(Line& line) // Set sidetext width for a better alignment of options in line // "m_show_modified_btns==true" means that options groups are in tabs if (option_set.size() > 1 && m_use_custom_ctrl) { - // sublabel_width = Field::def_width(); + sublabel_width = Field::def_width() + 1; sidetext_width = Field::def_width_thinner(); } diff --git a/src/slic3r/GUI/Widgets/Label.cpp b/src/slic3r/GUI/Widgets/Label.cpp index 3280b5de2..6222d6e53 100644 --- a/src/slic3r/GUI/Widgets/Label.cpp +++ b/src/slic3r/GUI/Widgets/Label.cpp @@ -106,7 +106,11 @@ public: void Wrap(wxWindow *win, const wxString &text, int widthMax) { const wxClientDC dc(win); + Wrap(dc, text, widthMax); + } + void Wrap(wxDC const & dc, const wxString &text, int widthMax) + { const wxArrayString ls = wxSplit(text, '\n', '\0'); for (wxArrayString::const_iterator i = ls.begin(); i != ls.end(); ++i) { wxString line = *i; @@ -210,6 +214,12 @@ private: class wxLabelWrapper2 : public wxTextWrapper2 { public: + void WrapLabel(wxDC const & dc, wxString const & label, int widthMax) + { + m_text.clear(); + Wrap(dc, label, widthMax); + } + void WrapLabel(wxWindow *text, wxString const & label, int widthMax) { m_text.clear(); @@ -230,27 +240,9 @@ private: wxSize Label::split_lines(wxDC &dc, int width, const wxString &text, wxString &multiline_text) { - multiline_text = text; - if (width > 0 && dc.GetTextExtent(text).x > width) { - size_t start = 0; - while (true) { - size_t idx = size_t(-1); - for (size_t i = start; i < multiline_text.Len(); i++) { - if (multiline_text[i] == ' ') { - if (dc.GetTextExtent(multiline_text.SubString(start, i)).x < width) - idx = i; - else { - if (idx == size_t(-1)) idx = i; - break; - } - } - } - if (idx == size_t(-1)) break; - multiline_text[idx] = '\n'; - start = idx + 1; - if (dc.GetTextExtent(multiline_text.Mid(start)).x < width) break; - } - } + wxLabelWrapper2 wrap; + wrap.Wrap(dc, text, width); + multiline_text = wrap.GetText(); return dc.GetMultiLineTextExtent(multiline_text); }