mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-29 19:53:44 -06:00 
			
		
		
		
	FIX:amsmapping update layout and fixes some issues
Change-Id: I3d88a06d5a9ac084b7ec498f7d201dda38d00fe7
This commit is contained in:
		
							parent
							
								
									4b4e70efcb
								
							
						
					
					
						commit
						74e92ac51d
					
				
					 5 changed files with 83 additions and 38 deletions
				
			
		|  | @ -193,9 +193,38 @@ void MaterialItem::doRender(wxDC &dc) | |||
|      m_sizer_main         = new wxBoxSizer(wxVERTICAL); | ||||
|      //m_sizer_main->Add(0, 0, 1, wxEXPAND, 0);
 | ||||
| 
 | ||||
|      auto title_panel = new wxPanel(this, wxID_ANY); | ||||
|      title_panel->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8)); | ||||
|      title_panel->SetSize(wxSize(-1, FromDIP(30))); | ||||
|      title_panel->SetMinSize(wxSize(-1, FromDIP(30))); | ||||
|       | ||||
| 
 | ||||
|      wxBoxSizer *title_sizer_h= new wxBoxSizer(wxHORIZONTAL); | ||||
| 
 | ||||
|      wxBoxSizer *title_sizer_v = new wxBoxSizer(wxVERTICAL); | ||||
| 
 | ||||
|      auto title_text = new wxStaticText(title_panel, wxID_ANY, _L("AMS Slots")); | ||||
|      title_text->SetForegroundColour(wxColour(0x32, 0x3A, 0x3D)); | ||||
|      title_text->SetFont(::Label::Head_13); | ||||
|      title_sizer_v->Add(title_text, 0, wxALIGN_CENTER, 5); | ||||
|      title_sizer_h->Add(title_sizer_v, 1, wxALIGN_CENTER, 5); | ||||
|      title_panel->SetSizer(title_sizer_h); | ||||
|      title_panel->Layout(); | ||||
|      title_panel->Fit(); | ||||
| 
 | ||||
|      m_sizer_list = new wxBoxSizer(wxVERTICAL); | ||||
| 
 | ||||
| 
 | ||||
|      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->SetFont(::Label::Body_12); | ||||
| 
 | ||||
|      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_warning_text, wxEXPAND, wxALL, FromDIP(10)); | ||||
| 
 | ||||
|      SetSizer(m_sizer_main); | ||||
|      Layout(); | ||||
|       | ||||
|  } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -233,6 +262,7 @@ void AmsMapingPopup::on_left_down(wxMouseEvent &evt) | |||
| 
 | ||||
| void AmsMapingPopup::update_ams_data(std::map<std::string, Ams*> amsList)  | ||||
| {  | ||||
|     m_has_unmatch_filament = false; | ||||
|     m_mapping_item_list.clear(); | ||||
|     if (m_amsmapping_sizer_list.size() > 0) { | ||||
|         for (wxBoxSizer *bz : m_amsmapping_sizer_list) { bz->Clear(true); } | ||||
|  | @ -275,6 +305,8 @@ void AmsMapingPopup::update_ams_data(std::map<std::string, Ams*> amsList) | |||
|         add_ams_mapping(tray_datas); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     m_warning_text->Show(m_has_unmatch_filament); | ||||
|     Layout(); | ||||
|     Fit(); | ||||
| } | ||||
|  | @ -302,49 +334,35 @@ void AmsMapingPopup::add_ams_mapping(std::vector<TrayData> tray_data) | |||
|         m_mapping_item_list.push_back(m_filament_name); | ||||
|        | ||||
|         if (tray_data[i].type == NORMAL) { | ||||
|             m_filament_name->set_data(tray_data[i].colour, tray_data[i].name, tray_data[i]); | ||||
|             if (is_match_material(tray_data[i].name)) {  | ||||
|                 m_filament_name->set_data(tray_data[i].colour, tray_data[i].name, tray_data[i]); | ||||
|             } else { | ||||
|                 m_filament_name->set_data(wxColour(0xEE,0xEE,0xEE), tray_data[i].name, tray_data[i], true); | ||||
|                 m_has_unmatch_filament = true; | ||||
|             } | ||||
| 
 | ||||
|             m_filament_name->Bind(wxEVT_LEFT_DOWN, [this, tray_data, i, m_filament_name](wxMouseEvent &e) { | ||||
|                 if (!is_match_material(tray_data[i].name)) return; | ||||
|                 m_filament_name->send_event(m_current_filament_id); | ||||
|                 Dismiss(); | ||||
|                 /* wxCommandEvent event(EVT_SET_FINISH_MAPPING);
 | ||||
|                  event.SetInt(tray_data[i].id); | ||||
|                  wxString param = wxString::Format("%d|%d|%d|%02d|%d", tray_data[i].colour.Red(), tray_data[i].colour.Green(), tray_data[i].colour.Blue(), tray_data[i].id + 1, | ||||
|                                                    m_current_filament_id); | ||||
|                  event.SetString(param); | ||||
|                  event.SetEventObject(this->GetParent()); | ||||
|                  wxPostEvent(this->GetParent(), event); | ||||
|                  Dismiss();*/ | ||||
|             }); | ||||
|         } | ||||
|          | ||||
| 
 | ||||
|         // temp
 | ||||
|         if (tray_data[i].type == EMPTY) { | ||||
|             m_filament_name->set_data(wxColour(0x6B, 0x6B, 0x6B), "-", tray_data[i]); | ||||
|             m_filament_name->set_data(wxColour(0xCE, 0xCE, 0xCE), "-", tray_data[i]); | ||||
|             m_filament_name->Bind(wxEVT_LEFT_DOWN, [this, tray_data, i, m_filament_name](wxMouseEvent &e) { | ||||
|                 m_filament_name->send_event(m_current_filament_id); | ||||
|                 /*  wxCommandEvent event(EVT_SET_FINISH_MAPPING);
 | ||||
|                   event.SetInt(tray_data[i].id); | ||||
|                   wxString param = wxString::Format("%d|%d|%d|%02d|%d", 0x6B, 0x6B, 0x6B, tray_data[i].id + 1, m_current_filament_id); | ||||
|                   event.SetString(param); | ||||
|                   event.SetEventObject(this->GetParent()); | ||||
|                   wxPostEvent(this->GetParent(), event);*/ | ||||
|                 Dismiss(); | ||||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         // third party
 | ||||
|         if (tray_data[i].type == THIRD) { | ||||
|             m_filament_name->set_data(wxColour(0x6B, 0x6B, 0x6B), "?", tray_data[i]); | ||||
|             m_filament_name->set_data(wxColour(0xCE, 0xCE, 0xCE), "?", tray_data[i]); | ||||
|             m_filament_name->Bind(wxEVT_LEFT_DOWN, [this, tray_data, i, m_filament_name](wxMouseEvent &e) { | ||||
|                 m_filament_name->send_event(m_current_filament_id); | ||||
|                 //wxCommandEvent event(EVT_SET_FINISH_MAPPING);
 | ||||
|                 //event.SetInt(tray_data[i].id);
 | ||||
|                 //wxString param = wxString::Format("%d|%d|%d|%02d|%d", 0x6B, 0x6B, 0x6B, tray_data[i].id + 1, m_current_filament_id);
 | ||||
|                 //event.SetString(param);
 | ||||
|                 //event.SetEventObject(this->GetParent());
 | ||||
|                 //wxPostEvent(this->GetParent(), event);
 | ||||
|                 Dismiss(); | ||||
|             }); | ||||
|         } | ||||
|  | @ -355,7 +373,7 @@ void AmsMapingPopup::add_ams_mapping(std::vector<TrayData> tray_data) | |||
|         sizer_mapping_list->Add(sizer_mapping_item, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(5)); | ||||
|         m_amsmapping_sizer_list.push_back(sizer_mapping_list); | ||||
|     } | ||||
|     m_sizer_main->Add(sizer_mapping_list, 0, wxALIGN_CENTER_HORIZONTAL, 0); | ||||
|     m_sizer_list->Add(sizer_mapping_list, 0, wxALIGN_CENTER_HORIZONTAL, 0); | ||||
| } | ||||
| 
 | ||||
| void AmsMapingPopup::OnDismiss() | ||||
|  | @ -399,14 +417,6 @@ void MappingItem::send_event(int fliament_id) | |||
|     event.SetString(param); | ||||
|     event.SetEventObject(this->GetParent()->GetParent()); | ||||
|     wxPostEvent(this->GetParent()->GetParent(), event); | ||||
| 
 | ||||
|    /* wxCommandEvent event(EVT_SET_FINISH_MAPPING);
 | ||||
|     event.SetInt(tray_data[i].id); | ||||
|     wxString param = wxString::Format("%d|%d|%d|%02d|%d", tray_data[i].colour.Red(), tray_data[i].colour.Green(), tray_data[i].colour.Blue(), tray_data[i].id + 1, | ||||
|                                       m_current_filament_id); | ||||
|     event.SetString(param); | ||||
|     event.SetEventObject(this->GetParent()); | ||||
|     wxPostEvent(this->GetParent(), event);*/ | ||||
| } | ||||
| 
 | ||||
|  void MappingItem::msw_rescale()  | ||||
|  | @ -446,6 +456,8 @@ void MappingItem::render(wxDC &dc) | |||
|     dc.SetFont(::Label::Body_12); | ||||
| 
 | ||||
|     auto txt_colour = m_coloul.GetLuminance() < 0.5 ? *wxWHITE : wxColour(0x26, 0x2E, 0x30); | ||||
|     txt_colour      = m_unmatch ? wxColour(0xCE, 0xCE, 0xCE) : txt_colour; | ||||
| 
 | ||||
|     dc.SetTextForeground(txt_colour); | ||||
| 
 | ||||
|     /*if (dc.GetTextExtent(m_name).x > GetSize().x - 10) {
 | ||||
|  | @ -457,8 +469,9 @@ void MappingItem::render(wxDC &dc) | |||
|     dc.DrawText(m_name, wxPoint((GetSize().x - txt_size.x) / 2, (GetSize().y - txt_size.y) / 2)); | ||||
| } | ||||
| 
 | ||||
| void MappingItem::set_data(wxColour colour, wxString name, TrayData data) | ||||
| void MappingItem::set_data(wxColour colour, wxString name, TrayData data, bool unmatch) | ||||
| { | ||||
|     m_unmatch = unmatch; | ||||
|     m_tray_data = data; | ||||
|     if (m_coloul != colour || m_name != name) { | ||||
|         m_coloul = colour; | ||||
|  |  | |||
|  | @ -96,11 +96,12 @@ public: | |||
|     wxColour m_coloul; | ||||
|     wxString m_name; | ||||
|     TrayData m_tray_data; | ||||
|     bool     m_unmatch{false}; | ||||
| 
 | ||||
|     void msw_rescale(); | ||||
|     void paintEvent(wxPaintEvent &evt); | ||||
|     void render(wxDC &dc); | ||||
|     void set_data(wxColour colour, wxString name, TrayData data); | ||||
|     void set_data(wxColour colour, wxString name, TrayData data, bool unmatch = false); | ||||
|     void doRender(wxDC &dc); | ||||
| }; | ||||
| 
 | ||||
|  | @ -110,13 +111,16 @@ public: | |||
|     AmsMapingPopup(wxWindow *parent); | ||||
|     ~AmsMapingPopup() {}; | ||||
| 
 | ||||
|     wxStaticText *           m_warning_text{nullptr};  | ||||
|     std::vector<std::string> m_materials_list; | ||||
|     std::vector<wxBoxSizer*>  m_amsmapping_sizer_list; | ||||
|     std::vector<MappingItem*> m_mapping_item_list; | ||||
| 
 | ||||
|     bool        m_has_unmatch_filament {false}; | ||||
|     int         m_current_filament_id; | ||||
|     std::string m_tag_material; | ||||
|     wxBoxSizer *m_sizer_main{nullptr};  | ||||
|     wxBoxSizer *m_sizer_list{nullptr};  | ||||
| 
 | ||||
|     void         update_materials_list(std::vector<std::string> list); | ||||
|     void         set_tag_texture(std::string texture); | ||||
|  |  | |||
|  | @ -743,6 +743,26 @@ void SelectMachineDialog::stripWhiteSpace(std::string& str) | |||
|     } | ||||
| } | ||||
| 
 | ||||
| wxString SelectMachineDialog::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_statictext_ams_msg->GetTextExtent(count_txt); | ||||
|         if (text_size.x < (FromDIP(400))) { | ||||
|             count_txt += m_msg[i]; | ||||
|         } else { | ||||
|             out_txt.insert(i - 1, '\n'); | ||||
|             count_txt = ""; | ||||
|         } | ||||
|     } | ||||
|     return out_txt; | ||||
| } | ||||
| 
 | ||||
| SelectMachineDialog::SelectMachineDialog(Plater *plater) | ||||
|     : DPIDialog(static_cast<wxWindow *>(wxGetApp().mainframe), wxID_ANY, _L("Send print job to"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) | ||||
|     , m_plater(plater), m_export_3mf_cancel(false) | ||||
|  | @ -1065,7 +1085,7 @@ void SelectMachineDialog::sync_ams_mapping_result(std::vector<FilamentInfo> &res | |||
|                     ams_col = AmsTray::decode_color(f->color); | ||||
|                 } else { | ||||
|                     // default color
 | ||||
|                     ams_col = wxColour(0xEE, 0xEE, 0xEE); | ||||
|                     ams_col = wxColour(0xCE, 0xCE, 0xCE); | ||||
|                 } | ||||
| 
 | ||||
|                 m->set_ams_info(ams_col, ams_id); | ||||
|  | @ -1175,6 +1195,8 @@ void SelectMachineDialog::update_ams_status_msg(wxString msg, bool is_warning) | |||
|             Fit(); | ||||
|         } | ||||
|     } else { | ||||
|         msg = format_text(msg); | ||||
| 
 | ||||
|         auto str_new = msg.ToStdString(); | ||||
|         stripWhiteSpace(str_new); | ||||
| 
 | ||||
|  | @ -1208,6 +1230,8 @@ void SelectMachineDialog::update_priner_status_msg(wxString msg, bool is_warning | |||
|             Fit(); | ||||
|         } | ||||
|     } else { | ||||
|         msg          = format_text(msg); | ||||
| 
 | ||||
|         auto str_new = msg.ToStdString(); | ||||
|         stripWhiteSpace(str_new); | ||||
| 
 | ||||
|  | @ -2012,8 +2036,8 @@ void SelectMachineDialog::set_default() | |||
| 
 | ||||
|                 if (obj_ && obj_->has_ams()) { | ||||
|                     m_mapping_popup.set_current_filament_id(extruder); | ||||
|                     m_mapping_popup.update_ams_data(obj_->amsList); | ||||
|                     m_mapping_popup.set_tag_texture(materials[extruder]); | ||||
|                     m_mapping_popup.update_ams_data(obj_->amsList); | ||||
|                     m_mapping_popup.Popup(); | ||||
|                 } | ||||
|             } | ||||
|  |  | |||
|  | @ -309,7 +309,8 @@ protected: | |||
| 
 | ||||
| 
 | ||||
|     void stripWhiteSpace(std::string& str); | ||||
|     void update_ams_status_msg(wxString msg, bool is_warning = false); | ||||
|     wxString format_text(wxString &m_msg); | ||||
|     void        update_ams_status_msg(wxString msg, bool is_warning = false); | ||||
|     void update_priner_status_msg(wxString msg, bool is_warning = false); | ||||
|     void update_print_status_msg(wxString msg, bool is_warning = false, bool is_printer = true); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1431,6 +1431,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons | |||
|     m_simplebook_right        = new wxSimplebook(amswin, wxID_ANY); | ||||
|     m_simplebook_right->SetMinSize(AMS_STEP_SIZE); | ||||
|     m_simplebook_right->SetSize(AMS_STEP_SIZE); | ||||
|     m_simplebook_right->SetBackgroundColour(*wxWHITE); | ||||
|     m_sizer_right->Add(m_simplebook_right, 0, wxALL, 0); | ||||
| 
 | ||||
|     auto tip_right    = new wxPanel(m_simplebook_right, wxID_ANY, wxDefaultPosition, AMS_STEP_SIZE, wxTAB_TRAVERSAL); | ||||
|  | @ -1451,10 +1452,12 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons | |||
|     m_filament_load_step = new ::StepIndicator(m_simplebook_right, wxID_ANY); | ||||
|     m_filament_load_step->SetMinSize(AMS_STEP_SIZE); | ||||
|     m_filament_load_step->SetSize(AMS_STEP_SIZE); | ||||
|     m_filament_load_step->SetBackgroundColour(*wxWHITE); | ||||
| 
 | ||||
|     m_filament_unload_step = new ::StepIndicator(m_simplebook_right, wxID_ANY); | ||||
|     m_filament_unload_step->SetMinSize(AMS_STEP_SIZE); | ||||
|     m_filament_unload_step->SetSize(AMS_STEP_SIZE); | ||||
|     m_filament_unload_step->SetBackgroundColour(*wxWHITE); | ||||
| 
 | ||||
|     m_simplebook_right->AddPage(tip_right, wxEmptyString, false); | ||||
|     m_simplebook_right->AddPage(m_filament_load_step, wxEmptyString, false); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 tao wang
						tao wang