FIX:fixed cant not display all text on mapping popup dialog

Change-Id: I309c54f7e7ee1e2ba20756a31e421e6dd5d57d1a
This commit is contained in:
tao wang 2022-08-04 18:52:10 +08:00 committed by Lane.Wei
parent 60e9c608a3
commit 1e857a6e23
2 changed files with 27 additions and 4 deletions

View file

@ -214,19 +214,41 @@ void MaterialItem::doRender(wxDC &dc)
m_sizer_list = new wxBoxSizer(wxVERTICAL); m_sizer_list = new wxBoxSizer(wxVERTICAL);
m_warning_text = new wxStaticText(this, wxID_ANY, wxEmptyString);
m_warning_text = new wxStaticText(this, wxID_ANY, _L("Note: Only the AMS slots loaded with the same material type can be selected."));
m_warning_text->SetForegroundColour(wxColour(0xFF, 0x6F, 0x00)); m_warning_text->SetForegroundColour(wxColour(0xFF, 0x6F, 0x00));
m_warning_text->SetFont(::Label::Body_12); m_warning_text->SetFont(::Label::Body_12);
auto cant_not_match_tip = _L("Note: Only the AMS slots loaded with the same material type can be selected.");
m_warning_text->SetLabel(format_text(cant_not_match_tip));
m_warning_text->SetMinSize(wxSize(FromDIP(280), FromDIP(-1)));
m_warning_text->Wrap(FromDIP(280));
m_sizer_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2)); m_sizer_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2));
m_sizer_main->Add(m_sizer_list, 0, wxEXPAND | wxALL, FromDIP(0)); m_sizer_main->Add(m_sizer_list, 0, wxEXPAND | wxALL, FromDIP(0));
m_sizer_main->Add(m_warning_text, wxEXPAND, wxALL, FromDIP(10)); m_sizer_main->Add(m_warning_text, 0, wxEXPAND | wxALL, FromDIP(10));
SetSizer(m_sizer_main); SetSizer(m_sizer_main);
Layout(); Layout();
} }
wxString AmsMapingPopup::format_text(wxString &m_msg)
{
if (wxGetApp().app_config->get("language") != "zh_CN") { return m_msg; }
wxString out_txt = m_msg;
wxString count_txt = "";
int new_line_pos = 0;
for (int i = 0; i < m_msg.length(); i++) {
auto text_size = m_warning_text->GetTextExtent(count_txt);
if (text_size.x < (FromDIP(280))) {
count_txt += m_msg[i];
} else {
out_txt.insert(i - 1, '\n');
count_txt = "";
}
}
return out_txt;
}
void AmsMapingPopup::update_materials_list(std::vector<std::string> list) void AmsMapingPopup::update_materials_list(std::vector<std::string> list)
{ {

View file

@ -109,7 +109,8 @@ class AmsMapingPopup : public wxPopupTransientWindow
{ {
public: public:
AmsMapingPopup(wxWindow *parent); AmsMapingPopup(wxWindow *parent);
~AmsMapingPopup() {}; wxString format_text(wxString &m_msg);
~AmsMapingPopup(){};
wxStaticText * m_warning_text{nullptr}; wxStaticText * m_warning_text{nullptr};
std::vector<std::string> m_materials_list; std::vector<std::string> m_materials_list;