From c0932e16ff9fcae0e900c6e0cac9a5b496d0cc0e Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 18 Jun 2024 20:09:11 +0800 Subject: [PATCH] NEW:support new mapping type jira:[support new mapping] Change-Id: I88e5d3b6966d4ed1e8098d13fe9335fecf6e01c4 --- resources/images/rename_edit.svg | 10 + src/slic3r/GUI/AmsMappingPopup.cpp | 164 ++++---- src/slic3r/GUI/AmsMappingPopup.hpp | 9 + src/slic3r/GUI/DeviceManager.cpp | 55 ++- src/slic3r/GUI/DeviceManager.hpp | 29 +- src/slic3r/GUI/SelectMachine.cpp | 604 +++++++++++++++++------------ src/slic3r/GUI/SelectMachine.hpp | 47 ++- 7 files changed, 566 insertions(+), 352 deletions(-) create mode 100644 resources/images/rename_edit.svg diff --git a/resources/images/rename_edit.svg b/resources/images/rename_edit.svg new file mode 100644 index 000000000..03e40f40c --- /dev/null +++ b/resources/images/rename_edit.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 8e994e461..b03fe1202 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -286,19 +286,19 @@ void MaterialItem::doRender(wxDC &dc) AmsMapingPopup::AmsMapingPopup(wxWindow *parent) : PopupWindow(parent, wxBORDER_NONE) { - SetSize(wxSize(FromDIP(252), -1)); - SetMinSize(wxSize(FromDIP(252), -1)); - SetMaxSize(wxSize(FromDIP(252), -1)); Bind(wxEVT_PAINT, &AmsMapingPopup::paintEvent, this); - #if __APPLE__ Bind(wxEVT_LEFT_DOWN, &AmsMapingPopup::on_left_down, this); #endif SetBackgroundColour(*wxWHITE); - m_sizer_main = new wxBoxSizer(wxVERTICAL); - //m_sizer_main->Add(0, 0, 1, wxEXPAND, 0); + + m_sizer_main = new wxBoxSizer(wxVERTICAL); + m_sizer_ams = new wxBoxSizer(wxHORIZONTAL); + m_sizer_ams_left = new wxBoxSizer(wxVERTICAL); + m_sizer_ams_right = new wxBoxSizer(wxVERTICAL); + auto title_panel = new wxPanel(this, wxID_ANY); title_panel->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8)); @@ -307,7 +307,6 @@ void MaterialItem::doRender(wxDC &dc) 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")); @@ -319,19 +318,15 @@ void MaterialItem::doRender(wxDC &dc) title_panel->Layout(); title_panel->Fit(); - m_sizer_list = new wxBoxSizer(wxVERTICAL); - for (auto i = 0; i < AMS_TOTAL_COUNT; i++) { - auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL); - /*auto ams_mapping_item_container = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("ams_mapping_container", this, 78), wxDefaultPosition, - wxSize(FromDIP(230), FromDIP(78)), 0);*/ - auto ams_mapping_item_container = new MappingContainer(this); - ams_mapping_item_container->SetSizer(sizer_mapping_list); - ams_mapping_item_container->Layout(); - //ams_mapping_item_container->Hide(); - m_amsmapping_container_sizer_list.push_back(sizer_mapping_list); - m_amsmapping_container_list.push_back(ams_mapping_item_container); - m_sizer_list->Add(ams_mapping_item_container, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM, FromDIP(5)); - } + auto left_ams_title_text = new wxStaticText(this, wxID_ANY, _L("Left Ams")); + auto right_ams_title_text = new wxStaticText(this, wxID_ANY, _L("Right Ams")); + + m_sizer_ams_left->Add(left_ams_title_text, 0, wxALIGN_CENTER, 0); + m_sizer_ams_right->Add(right_ams_title_text, 0, wxALIGN_CENTER, 0); + + m_sizer_ams->Add(m_sizer_ams_left, 0, wxEXPAND | wxALL, FromDIP(0)); + m_sizer_ams->Add(m_sizer_ams_right, 0, wxEXPAND | wxALL, FromDIP(0)); + m_warning_text = new wxStaticText(this, wxID_ANY, wxEmptyString); m_warning_text->SetForegroundColour(wxColour(0xFF, 0x6F, 0x00)); @@ -342,9 +337,7 @@ void MaterialItem::doRender(wxDC &dc) m_warning_text->Wrap(FromDIP(248)); m_sizer_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2)); - m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(5)); - m_sizer_main->Add(m_sizer_list, 0, wxEXPAND | wxALL, FromDIP(0)); - m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(5)); + m_sizer_main->Add(m_sizer_ams, 0, wxEXPAND | wxALL, FromDIP(2)); m_sizer_main->Add(m_warning_text, 0, wxEXPAND | wxALL, FromDIP(6)); SetSizer(m_sizer_main); @@ -457,73 +450,92 @@ void AmsMapingPopup::update_ams_data_multi_machines() void AmsMapingPopup::update_ams_data(std::map amsList) { - m_has_unmatch_filament = false; - //m_mapping_item_list.clear(); + std::map::iterator ams_iter; + BOOST_LOG_TRIVIAL(trace) << "ams_mapping total count " << amsList.size(); + for (auto& ams_container : m_amsmapping_container_list) { - ams_container->Hide(); + ams_container->Destroy(); } - - for (wxWindow *mitem : m_mapping_item_list) { - mitem->Destroy(); - mitem = nullptr; - } - m_mapping_item_list.clear(); - - if (m_amsmapping_container_sizer_list.size() > 0) { - for (wxBoxSizer *siz : m_amsmapping_container_sizer_list) { - siz->Clear(true); - } - } - - std::map::iterator ams_iter; - - BOOST_LOG_TRIVIAL(trace) << "ams_mapping total count " << amsList.size(); - int m_amsmapping_container_list_index = 0; + m_amsmapping_container_list.clear(); + m_amsmapping_container_sizer_list.clear(); + m_mapping_item_list.clear(); for (ams_iter = amsList.begin(); ams_iter != amsList.end(); ams_iter++) { - - BOOST_LOG_TRIVIAL(trace) << "ams_mapping ams id " << ams_iter->first.c_str(); - auto ams_indx = atoi(ams_iter->first.c_str()); - Ams *ams_group = ams_iter->second; - std::vector tray_datas; - std::map::iterator tray_iter; + int ams_indx = atoi(ams_iter->first.c_str()); + int ams_type = ams_iter->second->type; + int nozzle_id = ams_iter->second->nozzle; - for (tray_iter = ams_group->trayList.begin(); tray_iter != ams_group->trayList.end(); tray_iter++) { - AmsTray *tray_data = tray_iter->second; - TrayData td; + if (ams_type == 1) { - td.id = ams_indx * AMS_TOTAL_COUNT + atoi(tray_data->id.c_str()); + auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL); + auto ams_mapping_item_container = new MappingContainer(this); + ams_mapping_item_container->SetSizer(sizer_mapping_list); + ams_mapping_item_container->Layout(); + + m_has_unmatch_filament = false; - if (!tray_data->is_exists) { - td.type = EMPTY; - } else { - if (!tray_data->is_tray_info_ready()) { - td.type = THIRD; - } else { - td.type = NORMAL; - td.colour = AmsTray::decode_color(tray_data->color); - td.name = tray_data->get_display_filament_type(); - td.filament_type = tray_data->get_filament_type(); - td.ctype = tray_data->ctype; - for (auto col : tray_data->cols) { - td.material_cols.push_back(AmsTray::decode_color(col)); - } + BOOST_LOG_TRIVIAL(trace) << "ams_mapping ams id " << ams_iter->first.c_str(); + + Ams* ams_group = ams_iter->second; + std::vector tray_datas; + std::map::iterator tray_iter; + + for (tray_iter = ams_group->trayList.begin(); tray_iter != ams_group->trayList.end(); tray_iter++) { + AmsTray* tray_data = tray_iter->second; + TrayData td; + + td.id = ams_indx * AMS_TOTAL_COUNT + atoi(tray_data->id.c_str()); + + if (!tray_data->is_exists) { + td.type = EMPTY; } + else { + if (!tray_data->is_tray_info_ready()) { + td.type = THIRD; + } + else { + td.type = NORMAL; + td.colour = AmsTray::decode_color(tray_data->color); + td.name = tray_data->get_display_filament_type(); + td.filament_type = tray_data->get_filament_type(); + td.ctype = tray_data->ctype; + for (auto col : tray_data->cols) { + td.material_cols.push_back(AmsTray::decode_color(col)); + } + } + + td.ams_id = std::stoi(ams_iter->second->id); + td.slot_id = std::stoi(tray_iter->second->id); + } + + tray_datas.push_back(td); } - tray_datas.push_back(td); - } + ams_mapping_item_container->Show(); + add_ams_mapping(tray_datas, ams_mapping_item_container, sizer_mapping_list); + - m_amsmapping_container_list[m_amsmapping_container_list_index]->Show(); - add_ams_mapping(tray_datas, m_amsmapping_container_list[m_amsmapping_container_list_index], m_amsmapping_container_sizer_list[m_amsmapping_container_list_index]); - m_amsmapping_container_list_index++; + m_amsmapping_container_sizer_list.push_back(sizer_mapping_list); + m_amsmapping_container_list.push_back(ams_mapping_item_container); + + //main nozzle = right nozzle + if (nozzle_id == 0) { + m_sizer_ams_right->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0); + } + else if (nozzle_id == 1) { + m_sizer_ams_left->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0); + } + + + //m_warning_text->Show(m_has_unmatch_filament); + } } + /*extra tray*/ - m_warning_text->Show(m_has_unmatch_filament); Layout(); Fit(); } @@ -584,6 +596,9 @@ void AmsMapingPopup::add_ams_mapping(std::vector tray_data, wxWindow* // set button MappingItem *m_mapping_item = new MappingItem(container); + m_mapping_item->m_ams_id = tray_data[i].ams_id; + m_mapping_item->m_slot_id = tray_data[i].slot_id; + m_mapping_item->SetSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6))); m_mapping_item->SetMinSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6))); m_mapping_item->SetMaxSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6))); @@ -677,7 +692,8 @@ void MappingItem::send_event(int fliament_id) wxCommandEvent event(EVT_SET_FINISH_MAPPING); event.SetInt(m_tray_data.id); - wxString param = wxString::Format("%d|%d|%d|%d|%s|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), number, fliament_id); + wxString param = wxString::Format("%d|%d|%d|%d|%s|%d|%d|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), number, fliament_id, + m_tray_data.ams_id, m_tray_data.slot_id); event.SetString(param); event.SetEventObject(this->GetParent()->GetParent()); wxPostEvent(this->GetParent()->GetParent()->GetParent(), event); diff --git a/src/slic3r/GUI/AmsMappingPopup.hpp b/src/slic3r/GUI/AmsMappingPopup.hpp index 75f274ba0..7c64cba2f 100644 --- a/src/slic3r/GUI/AmsMappingPopup.hpp +++ b/src/slic3r/GUI/AmsMappingPopup.hpp @@ -60,6 +60,9 @@ struct TrayData std::string filament_type; wxColour colour; std::vector material_cols = std::vector(); + + int ams_id = 0; + int slot_id = 0; }; class MaterialItem: public wxPanel @@ -116,6 +119,9 @@ public: ScalableBitmap m_transparent_mapping_item; bool m_unmatch{false}; + int m_ams_id{255}; + int m_slot_id{255}; + void msw_rescale(); void paintEvent(wxPaintEvent &evt); void render(wxDC &dc); @@ -150,6 +156,9 @@ public: int m_current_filament_id; std::string m_tag_material; wxBoxSizer *m_sizer_main{nullptr}; + wxBoxSizer *m_sizer_ams{nullptr}; + wxBoxSizer *m_sizer_ams_left{nullptr}; + wxBoxSizer *m_sizer_ams_right{nullptr}; wxBoxSizer *m_sizer_list{nullptr}; wxWindow *m_parent_item{nullptr}; diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 977c9f939..cbc0e806f 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -4052,11 +4052,24 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) for (auto it = j_ams.begin(); it != j_ams.end(); it++) { if (!it->contains("id")) continue; std::string ams_id = (*it)["id"].get(); + + int nozzle_id = 0; // Default nozzle id + int type_id = 1; // 0:dummy 1:ams 2:ams-lite 3:n3f 4:n3s + + if (it->contains("nozzle")) { + nozzle_id = (*it)["nozzle"].get(); + } + + if (it->contains("type")) { + type_id = (*it)["type"].get(); + } + ams_id_set.erase(ams_id); Ams* curr_ams = nullptr; auto ams_it = amsList.find(ams_id); if (ams_it == amsList.end()) { - Ams* new_ams = new Ams(ams_id); + Ams* new_ams = new Ams(ams_id, nozzle_id, type_id); + try { if (!ams_id.empty()) { int ams_id_int = atoi(ams_id.c_str()); @@ -4902,7 +4915,47 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) } } } + + /*parse np*/ + try + { + if (jj.contains("cfg") && jj.contains("fun") && jj.contains("aux") && jj.contains("stat")) { + is_enable_np = true; + } + else { + is_enable_np = false; + } + + if (jj.contains("device")) { + json const & device = jj["device"]; + + if (device.contains("nozzle")) { + json const & nozzle = device["nozzle"]; + + m_np_nozzle_data = NozzleData(); + m_np_nozzle_data.info = nozzle["info"].get(); + + + for (const auto& noz : nozzle.items()) { + std::string nozzle_id = noz.key(); + json const & ndata = noz.value(); + + Nozzle n; + if (ndata.contains("info")) {n.info = ndata["info"].get(); } + if (ndata.contains("snow")) {n.info = ndata["snow"].get(); } + if (ndata.contains("spre")) {n.info = ndata["spre"].get(); } + if (ndata.contains("star")) {n.info = ndata["star"].get(); } + if (ndata.contains("stat")) {n.info = ndata["stat"].get(); } + if (ndata.contains("temp")) {n.info = ndata["temp"].get(); } + m_np_nozzle_data.nozzle[nozzle_id] = n; + } + } + } + } + catch (...) + {} } + if (!key_field_only) { try { if (j.contains("camera")) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 58d7c525f..640a9917e 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -135,6 +135,21 @@ enum ManualPaCaliMethod { PA_PATTERN, }; +struct Nozzle +{ + int info{0}; + int snow{0}; + int spre{0}; + int star{0}; + int stat{0}; + int temp{0}; +}; + +struct NozzleData +{ + std::map nozzle; /*0 - main nozzle 1 - slave nozzle*/ + int info{0}; +}; struct RatingInfo { bool request_successful; @@ -226,8 +241,10 @@ public: class Ams { public: - Ams(std::string ams_id) { + Ams(std::string ams_id, int nozzle_id, int type_id) { id = ams_id; + nozzle = nozzle_id; + type = type_id; } std::string id; int humidity = 5; @@ -235,6 +252,9 @@ public: bool tray_read_opt{false}; bool is_exists{false}; std::map trayList; + + int nozzle; + int type{1}; //0:dummy 1:ams 2:ams-lite 3:n3f 4:n3s }; enum PrinterFirmwareType { @@ -330,7 +350,6 @@ private: // type, time stamp, delay std::vector> message_delay; - public: enum LIGHT_EFFECT { @@ -484,6 +503,7 @@ public: /* ams properties */ std::map amsList; // key: ams[id], start with 0 AmsTray vt_tray; // virtual tray + std::vector vt_trays; // virtual tray for new long ams_exist_bits = 0; long tray_exist_bits = 0; long tray_is_bbl_bits = 0; @@ -978,6 +998,10 @@ public: bool is_firmware_info_valid(); std::string get_string_from_fantype(FanType type); + /*for more extruder*/ + bool is_enable_np{ false }; + NozzleData m_np_nozzle_data; + /* Device Filament Check */ std::set m_checked_filament; std::string m_printer_preset_name; @@ -986,6 +1010,7 @@ public: int get_flag_bits(std::string str, int start, int count = 1); int get_flag_bits(int num, int start, int count = 1); void update_printer_preset_name(const std::string &nozzle_diameter_str); + }; class DeviceManager diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 23654f21a..98799e777 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -961,6 +961,9 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) SetDoubleBuffered(true); #endif //__WINDOWS__ + SetMinSize(wxSize(FromDIP(688), -1)); + SetMaxSize(wxSize(FromDIP(688), -1)); + // bind Bind(wxEVT_CLOSE_WINDOW, &SelectMachineDialog::on_cancel, this); @@ -977,54 +980,77 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) SetBackgroundColour(m_colour_def_color); m_sizer_main = new wxBoxSizer(wxVERTICAL); - - m_sizer_main->SetMinSize(wxSize(0, -1)); m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); - m_scrollable_view = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize); - m_sizer_scrollable_view = new wxBoxSizer(wxVERTICAL); - m_scrollable_region = new wxPanel(m_scrollable_view, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); - m_sizer_scrollable_region = new wxBoxSizer(wxVERTICAL); + m_basic_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); + m_basic_panel->SetBackgroundColour(*wxWHITE); + m_basicl_sizer = new wxBoxSizer(wxHORIZONTAL); + /*basic info*/ - //rename normal - m_rename_switch_panel = new wxSimplebook(m_scrollable_region); - m_rename_switch_panel->SetSize(wxSize(FromDIP(420), FromDIP(25))); - m_rename_switch_panel->SetMinSize(wxSize(FromDIP(420), FromDIP(25))); - m_rename_switch_panel->SetMaxSize(wxSize(FromDIP(420), FromDIP(25))); + /*thumbnail*/ + auto m_sizer_thumbnail_area = new wxBoxSizer(wxHORIZONTAL); + + auto m_panel_image = new wxPanel(m_basic_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); + m_panel_image->SetBackgroundColour(m_colour_def_color); + m_sizer_thumbnail = new wxBoxSizer(wxHORIZONTAL); + m_thumbnailPanel = new ThumbnailPanel(m_panel_image); + m_thumbnailPanel->SetSize(wxSize(FromDIP(198), FromDIP(198))); + m_thumbnailPanel->SetMinSize(wxSize(FromDIP(198), FromDIP(198))); + m_thumbnailPanel->SetMaxSize(wxSize(FromDIP(198), FromDIP(198))); + m_thumbnailPanel->SetBackgroundColour(*wxWHITE); + m_sizer_thumbnail->Add(m_thumbnailPanel, 0, wxALIGN_CENTER, 0); + m_panel_image->SetSizer(m_sizer_thumbnail); + m_panel_image->Layout(); + + m_sizer_thumbnail_area->Add(m_panel_image, 0, wxALIGN_CENTER, 0); + m_sizer_thumbnail_area->Layout(); + + /*basic info right*/ + auto sizer_basic_right_info = new wxBoxSizer(wxVERTICAL); + + /*rename*/ + auto sizer_rename = new wxBoxSizer(wxHORIZONTAL); + + m_rename_switch_panel = new wxSimplebook(m_basic_panel); + m_rename_switch_panel->SetBackgroundColour(*wxWHITE); + m_rename_switch_panel->SetSize(wxSize(FromDIP(360), FromDIP(25))); + m_rename_switch_panel->SetMinSize(wxSize(FromDIP(360), FromDIP(25))); + m_rename_switch_panel->SetMaxSize(wxSize(FromDIP(360), FromDIP(25))); m_rename_normal_panel = new wxPanel(m_rename_switch_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); m_rename_normal_panel->SetBackgroundColour(*wxWHITE); rename_sizer_v = new wxBoxSizer(wxVERTICAL); rename_sizer_h = new wxBoxSizer(wxHORIZONTAL); - m_rename_text = new wxStaticText(m_rename_normal_panel, wxID_ANY, wxT("MyLabel"), wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); + m_rename_text = new wxStaticText(m_rename_normal_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END); m_rename_text->SetFont(::Label::Body_13); - m_rename_text->SetMaxSize(wxSize(FromDIP(390), -1)); - m_rename_button = new ScalableButton(m_rename_normal_panel, wxID_ANY, "ams_editable"); - ams_editable = new ScalableBitmap(this, "ams_editable", 13); - ams_editable_light = new ScalableBitmap(this, "ams_editable_light", 13); - m_rename_button->SetBackgroundColour(*wxWHITE); + m_rename_text->SetBackgroundColour(*wxWHITE); + m_rename_text->SetMaxSize(wxSize(FromDIP(340), -1)); + rename_editable = new ScalableBitmap(this, "rename_edit", 20); + rename_editable_light = new ScalableBitmap(this, "rename_edit", 20); + m_rename_button = new wxStaticBitmap(m_rename_normal_panel, wxID_ANY, rename_editable->bmp(), wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), 0); + m_rename_button->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); }); + m_rename_button->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); }); - rename_sizer_h->Add(m_rename_text, 0, wxALIGN_CENTER, 0); + rename_sizer_h->Add(m_rename_text, 0, wxALIGN_CENTER|wxTOP, FromDIP(2)); rename_sizer_h->Add(m_rename_button, 0, wxALIGN_CENTER, 0); - rename_sizer_v->Add(rename_sizer_h, 1, wxALIGN_CENTER, 0); + rename_sizer_v->Add(rename_sizer_h, 1, wxTOP, 0); m_rename_normal_panel->SetSizer(rename_sizer_v); m_rename_normal_panel->Layout(); rename_sizer_v->Fit(m_rename_normal_panel); - //rename edit auto m_rename_edit_panel = new wxPanel(m_rename_switch_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); m_rename_edit_panel->SetBackgroundColour(*wxWHITE); auto rename_edit_sizer_v = new wxBoxSizer(wxVERTICAL); m_rename_input = new ::TextInput(m_rename_edit_panel, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER); m_rename_input->GetTextCtrl()->SetFont(::Label::Body_13); - m_rename_input->SetSize(wxSize(FromDIP(380), FromDIP(24))); - m_rename_input->SetMinSize(wxSize(FromDIP(380), FromDIP(24))); - m_rename_input->SetMaxSize(wxSize(FromDIP(380), FromDIP(24))); + m_rename_input->SetSize(wxSize(FromDIP(360), FromDIP(24))); + m_rename_input->SetMinSize(wxSize(FromDIP(360), FromDIP(24))); + m_rename_input->SetMaxSize(wxSize(FromDIP(360), FromDIP(24))); m_rename_input->Bind(wxEVT_TEXT_ENTER, [this](auto& e) {on_rename_enter();}); m_rename_input->Bind(wxEVT_KILL_FOCUS, [this](auto& e) { if (!m_rename_input->HasFocus() && !m_rename_text->HasFocus()) @@ -1038,7 +1064,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_rename_edit_panel->Layout(); rename_edit_sizer_v->Fit(m_rename_edit_panel); - m_rename_button->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_rename_click, this); + m_rename_button->Bind(wxEVT_LEFT_DOWN, &SelectMachineDialog::on_rename_click, this); m_rename_switch_panel->AddPage(m_rename_normal_panel, wxEmptyString, true); m_rename_switch_panel->AddPage(m_rename_edit_panel, wxEmptyString, false); @@ -1058,91 +1084,124 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) } }); - auto m_sizer_thumbnail_area = new wxBoxSizer(wxHORIZONTAL); - auto last_plate_panel = new wxWindow(m_scrollable_region, wxID_ANY); - last_plate_panel->SetBackgroundColour(*wxWHITE); - auto last_plate_sizer = new wxBoxSizer(wxVERTICAL); - last_plate_panel->SetMinSize(wxSize(FromDIP(32), FromDIP(32))); - m_bitmap_last_plate = new wxStaticBitmap(last_plate_panel, wxID_ANY, create_scaled_bitmap("go_last_plate", this, 32), wxDefaultPosition, wxSize(FromDIP(32), FromDIP(32)), 0); - last_plate_sizer->Add(m_bitmap_last_plate, 0, wxALIGN_CENTER, 0); - last_plate_panel->SetSizer(last_plate_sizer); - - m_panel_image = new wxPanel(m_scrollable_region, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); - m_panel_image->SetBackgroundColour(m_colour_def_color); - m_sizer_thumbnail = new wxBoxSizer(wxHORIZONTAL); - m_thumbnailPanel = new ThumbnailPanel(m_panel_image); - m_thumbnailPanel->SetSize(wxSize(FromDIP(256), FromDIP(256))); - m_thumbnailPanel->SetMinSize(wxSize(FromDIP(256), FromDIP(256))); - m_thumbnailPanel->SetMaxSize(wxSize(FromDIP(256), FromDIP(256))); - m_thumbnailPanel->SetBackgroundColour(*wxRED); - m_sizer_thumbnail->Add(m_thumbnailPanel, 0, wxALIGN_CENTER, 0); - m_panel_image->SetSizer(m_sizer_thumbnail); - m_panel_image->Layout(); - - auto next_plate_panel = new wxWindow(m_scrollable_region, wxID_ANY); - next_plate_panel->SetBackgroundColour(*wxWHITE); - auto next_plate_sizer = new wxBoxSizer(wxVERTICAL); - next_plate_panel->SetMinSize(wxSize(FromDIP(32), FromDIP(32))); - m_bitmap_next_plate = new wxStaticBitmap(next_plate_panel, wxID_ANY, create_scaled_bitmap("go_next_plate", this, 32), wxDefaultPosition, wxSize(FromDIP(32), FromDIP(32)), 0); - next_plate_sizer->Add(m_bitmap_next_plate, 0, wxALIGN_CENTER, 0); - next_plate_panel->SetSizer(next_plate_sizer); - - m_sizer_thumbnail_area->Add(last_plate_panel, 0, wxALIGN_CENTER, 0); - m_sizer_thumbnail_area->Add(m_panel_image, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(24)); - m_sizer_thumbnail_area->Add(next_plate_panel, 0, wxALIGN_CENTER, 0); - - wxBoxSizer *m_sizer_basic = new wxBoxSizer(wxHORIZONTAL); - wxBoxSizer *m_sizer_basic_weight = new wxBoxSizer(wxHORIZONTAL); - wxBoxSizer *m_sizer_basic_time = new wxBoxSizer(wxHORIZONTAL); + /*weight & time*/ + wxBoxSizer *m_sizer_basic_weight_time = new wxBoxSizer(wxHORIZONTAL); print_time = new ScalableBitmap(this, "print-time", 18); - timeimg = new wxStaticBitmap(m_scrollable_region, wxID_ANY, print_time->bmp(), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0); - m_sizer_basic_weight->Add(timeimg, 1, wxEXPAND | wxALL, FromDIP(5)); - m_stext_time = new wxStaticText(m_scrollable_region, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT); - m_sizer_basic_weight->Add(m_stext_time, 0, wxALL, FromDIP(5)); - m_sizer_basic->Add(m_sizer_basic_weight, 0, wxALIGN_CENTER, 0); - m_sizer_basic->Add(0, 0, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30)); + timeimg = new wxStaticBitmap(m_basic_panel, wxID_ANY, print_time->bmp(), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0); + m_stext_time = new Label(m_basic_panel, wxEmptyString); + m_stext_time->SetFont(Label::Body_13); print_weight = new ScalableBitmap(this, "print-weight", 18); - weightimg = new wxStaticBitmap(m_scrollable_region, wxID_ANY, print_weight->bmp(), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0); - m_sizer_basic_time->Add(weightimg, 1, wxEXPAND | wxALL, FromDIP(5)); - m_stext_weight = new wxStaticText(m_scrollable_region, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); - m_sizer_basic_time->Add(m_stext_weight, 0, wxALL, FromDIP(5)); - m_sizer_basic->Add(m_sizer_basic_time, 0, wxALIGN_CENTER, 0); + weightimg = new wxStaticBitmap(m_basic_panel, wxID_ANY, print_weight->bmp(), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0); + m_stext_weight = new Label(m_basic_panel, wxEmptyString); + m_stext_weight->SetFont(Label::Body_13); - wxBoxSizer* m_sizer_material_area = new wxBoxSizer(wxHORIZONTAL); - wxBoxSizer* m_sizer_material_tips = new wxBoxSizer(wxHORIZONTAL); + m_sizer_basic_weight_time->Add(timeimg, 0, wxALIGN_CENTER, 0); + m_sizer_basic_weight_time->Add(m_stext_time, 0, wxALIGN_CENTER|wxLEFT, FromDIP(6)); + m_sizer_basic_weight_time->Add(weightimg, 0, wxALIGN_CENTER|wxLEFT, FromDIP(30)); + m_sizer_basic_weight_time->Add(m_stext_weight, 0, wxALIGN_CENTER|wxLEFT, FromDIP(6)); - enable_ams_mapping = new ScalableBitmap(this, "enable_ams", 16); - img_amsmapping_tip = new wxStaticBitmap(m_scrollable_region, wxID_ANY, enable_ams_mapping->bmp(), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0); - m_sizer_material_tips->Add(img_amsmapping_tip, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5)); + /*bed type*/ + auto m_text_bed_type = new Label(m_basic_panel, "Plate: Textured PEI"); + m_text_bed_type->SetFont(Label::Body_13); - img_amsmapping_tip->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { - wxPoint img_pos = img_amsmapping_tip->ClientToScreen(wxPoint(0, 0)); - wxPoint popup_pos(img_pos.x, img_pos.y + img_amsmapping_tip->GetRect().height); - m_mapping_tutorial_popup.Position(popup_pos, wxSize(0, 0)); - m_mapping_tutorial_popup.Popup(); - - if (m_mapping_tutorial_popup.ClientToScreen(wxPoint(0, 0)).y < img_pos.y) { - m_mapping_tutorial_popup.Dismiss(); - popup_pos = wxPoint(img_pos.x, img_pos.y - m_mapping_tutorial_popup.GetRect().height); - m_mapping_tutorial_popup.Position(popup_pos, wxSize(0, 0)); - m_mapping_tutorial_popup.Popup(); - } - }); - - img_amsmapping_tip->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) { - m_mapping_tutorial_popup.Dismiss(); - }); - - m_sizer_material = new wxGridSizer(0, 4, 0, FromDIP(5)); + /*last & next page*/ - m_sizer_material_area->Add(m_sizer_material_tips, 0, wxALIGN_CENTER|wxLEFT, FromDIP(8)); - m_sizer_material_area->Add(m_sizer_material, 0, wxLEFT, FromDIP(15)); + auto last_plate_sizer = new wxBoxSizer(wxVERTICAL); + m_bitmap_last_plate = new wxStaticBitmap(m_basic_panel, wxID_ANY, create_scaled_bitmap("go_last_plate", this, 25), wxDefaultPosition, wxSize(FromDIP(25), FromDIP(25)), 0); + last_plate_sizer->Add(m_bitmap_last_plate, 0, wxALIGN_CENTER, 0); - m_sizer_backup = new wxBoxSizer(wxHORIZONTAL); + auto next_plate_sizer = new wxBoxSizer(wxVERTICAL); + m_bitmap_next_plate = new wxStaticBitmap(m_basic_panel, wxID_ANY, create_scaled_bitmap("go_next_plate", this, 25), wxDefaultPosition, wxSize(FromDIP(25), FromDIP(25)), 0); + next_plate_sizer->Add(m_bitmap_next_plate, 0, wxALIGN_CENTER, 0); + + sizer_rename->Add(m_rename_switch_panel, 0, wxALIGN_CENTER, 0); + sizer_rename->Add(0, 0, 0, wxEXPAND, 0); + sizer_rename->Add(m_bitmap_last_plate, 0, wxALIGN_CENTER, 0); + sizer_rename->Add(m_bitmap_next_plate, 0, wxALIGN_CENTER, 0); + + /*printer combobox*/ + wxBoxSizer* m_sizer_printer = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer* sizer_split_printer = new wxBoxSizer(wxHORIZONTAL); + m_stext_printer_title = new Label(m_basic_panel, _L("Printer")); + m_stext_printer_title->SetFont(::Label::Body_14); + m_stext_printer_title->SetForegroundColour(0x909090); + auto m_split_line = new wxPanel(m_basic_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); + m_split_line->SetBackgroundColour(0xeeeeee); + m_split_line->SetMinSize(wxSize(-1, 1)); + m_split_line->SetMaxSize(wxSize(-1, 1)); + sizer_split_printer->Add(0, 0, 0, wxEXPAND, 0); + sizer_split_printer->Add(m_stext_printer_title, 0, wxALIGN_CENTER, 0); + sizer_split_printer->Add(m_split_line, 1, wxALIGN_CENTER_VERTICAL, 0); + + + m_comboBox_printer = new ::ComboBox(m_basic_panel, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(300), -1), 0, nullptr, wxCB_READONLY); + m_comboBox_printer->SetMinSize(wxSize(FromDIP(300), -1)); + m_comboBox_printer->SetMaxSize(wxSize(FromDIP(300), -1)); + m_comboBox_printer->Bind(wxEVT_COMBOBOX, &SelectMachineDialog::on_selection_changed, this); + + + m_btn_bg_enable = StateColor(std::pair(wxColour(27, 136, 68), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), + std::pair(wxColour(0, 174, 66), StateColor::Normal)); + + m_button_refresh = new Button(m_basic_panel, _L("Refresh")); + m_button_refresh->SetBackgroundColor(m_btn_bg_enable); + m_button_refresh->SetBorderColor(m_btn_bg_enable); + m_button_refresh->SetTextColor(StateColor::darkModeColorFor("#FFFFFE")); + m_button_refresh->SetSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE); + m_button_refresh->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE); + m_button_refresh->SetCornerRadius(FromDIP(10)); + m_button_refresh->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_refresh, this); + + m_sizer_printer->Add(m_comboBox_printer, 0, wxEXPAND, 0); + m_sizer_printer->Add(m_button_refresh, 0, wxALL | wxLEFT, FromDIP(5)); + + m_text_printer_msg = new wxStaticText(m_basic_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT); + m_text_printer_msg->SetMinSize(wxSize(FromDIP(420), -1)); + m_text_printer_msg->SetMaxSize(wxSize(FromDIP(420), -1)); + m_text_printer_msg->SetFont(::Label::Body_13); + m_text_printer_msg->Hide(); + + + sizer_basic_right_info->Add(sizer_rename, 0, wxTOP, 0); + sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(5)); + sizer_basic_right_info->Add(m_sizer_basic_weight_time, 0, wxTOP, 0); + sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(10)); + sizer_basic_right_info->Add(m_text_bed_type, 0, wxTOP, 0); + sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(15)); + sizer_basic_right_info->Add(sizer_split_printer, 1, wxEXPAND, 0); + sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(8)); + sizer_basic_right_info->Add(m_sizer_printer, 0, wxTOP, 0); + sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(4)); + sizer_basic_right_info->Add(m_text_printer_msg, 0, wxLEFT, 0); + + + m_basicl_sizer->Add(m_sizer_thumbnail_area, 0, wxLEFT, 0); + m_basicl_sizer->Add(0, 0, 0, wxLEFT, FromDIP(8)); + m_basicl_sizer->Add(sizer_basic_right_info, 0, wxLEFT, 0); + + + + m_basic_panel->SetSizer(m_basicl_sizer); + m_basic_panel->Layout(); + + + /*filaments info*/ + wxBoxSizer* sizer_split_filament = new wxBoxSizer(wxHORIZONTAL); + + auto m_stext_filament_title = new Label(this, _L("Filament")); + m_stext_filament_title->SetFont(::Label::Body_14); + m_stext_filament_title->SetForegroundColour(0x909090); + + auto m_split_line_filament = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); + m_split_line_filament->SetBackgroundColour(0xeeeeee); + m_split_line_filament->SetMinSize(wxSize(-1, 1)); + m_split_line_filament->SetMaxSize(wxSize(-1, 1)); + + m_sizer_autorefill = new wxBoxSizer(wxHORIZONTAL); m_ams_backup_tip = new Label(this, _L("Auto Refill")); m_ams_backup_tip->SetFont(::Label::Head_12); m_ams_backup_tip->SetForegroundColour(wxColour(0x00AE42)); @@ -1150,9 +1209,9 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) img_ams_backup = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("automatic_material_renewal", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0); img_ams_backup->SetBackgroundColour(*wxWHITE); - m_sizer_backup->Add(0, 0, 1, wxEXPAND, 0); - m_sizer_backup->Add(img_ams_backup, 0, wxALL, FromDIP(3)); - m_sizer_backup->Add(m_ams_backup_tip, 0, wxTOP, FromDIP(5)); + m_sizer_autorefill->Add(0, 0, 1, wxEXPAND, 0); + m_sizer_autorefill->Add(img_ams_backup, 0, wxALL, FromDIP(3)); + m_sizer_autorefill->Add(m_ams_backup_tip, 0, wxTOP, FromDIP(5)); m_ams_backup_tip->Hide(); img_ams_backup->Hide(); @@ -1163,71 +1222,135 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_ams_backup_tip->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); }); img_ams_backup->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); }); - m_ams_backup_tip->Bind(wxEVT_LEFT_DOWN, [this](auto& e) { if (!m_is_in_sending_mode) {popup_filament_backup(); on_rename_enter();} }); - img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {if (!m_is_in_sending_mode) popup_filament_backup();on_rename_enter(); }); + m_ams_backup_tip->Bind(wxEVT_LEFT_DOWN, [this](auto& e) { if (!m_is_in_sending_mode) { popup_filament_backup(); on_rename_enter(); } }); + img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {if (!m_is_in_sending_mode) popup_filament_backup(); on_rename_enter(); }); + + sizer_split_filament->Add(0, 0, 0, wxEXPAND, 0); + sizer_split_filament->Add(m_stext_filament_title, 0, wxALIGN_CENTER, 0); + sizer_split_filament->Add(m_split_line_filament, 1, wxALIGN_CENTER_VERTICAL, 0); + sizer_split_filament->Add(m_sizer_autorefill, 0, wxALIGN_CENTER, 0); + + //wxBoxSizer* m_sizer_ams_mapping_tips = new wxBoxSizer(wxHORIZONTAL); + + + + /* ams_mapping_help_icon = new ScalableBitmap(this, "enable_ams", 16); + img_amsmapping_tip = new wxStaticBitmap(this, wxID_ANY, ams_mapping_help_icon->bmp(), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0); + m_sizer_ams_mapping_tips->Add(img_amsmapping_tip, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5)); + + img_amsmapping_tip->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { + wxPoint img_pos = img_amsmapping_tip->ClientToScreen(wxPoint(0, 0)); + wxPoint popup_pos(img_pos.x, img_pos.y + img_amsmapping_tip->GetRect().height); + m_mapping_tutorial_popup.Position(popup_pos, wxSize(0, 0)); + m_mapping_tutorial_popup.Popup(); + + if (m_mapping_tutorial_popup.ClientToScreen(wxPoint(0, 0)).y < img_pos.y) { + m_mapping_tutorial_popup.Dismiss(); + popup_pos = wxPoint(img_pos.x, img_pos.y - m_mapping_tutorial_popup.GetRect().height); + m_mapping_tutorial_popup.Position(popup_pos, wxSize(0, 0)); + m_mapping_tutorial_popup.Popup(); + } + }); + + img_amsmapping_tip->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) { + m_mapping_tutorial_popup.Dismiss(); + }); + + + + + m_sizer_filament->Add(m_sizer_ams_mapping_tips, 0, wxALIGN_CENTER|wxLEFT, FromDIP(8));*/ + + /*filament area*/ + /*1 extruder*/ + m_filament_panel = new wxPanel(this, wxID_ANY); + m_filament_panel->SetBackgroundColour(wxColour(0xf8f8f8)); + m_filament_panel->SetMinSize(wxSize(FromDIP(637), -1)); + m_filament_panel->SetMaxSize(wxSize(FromDIP(637), -1)); + m_filament_panel_sizer = new wxBoxSizer(wxVERTICAL); + + m_sizer_ams_mapping = new wxGridSizer(0, 10, FromDIP(7), FromDIP(7)); + m_filament_panel_sizer->Add(m_sizer_ams_mapping, 0, wxEXPAND|wxALL, FromDIP(10)); + m_filament_panel->SetSizer(m_filament_panel_sizer); + m_filament_panel->Layout(); + m_filament_panel->Fit(); + + /*left & right extruder*/ + m_sizer_filament_2extruder = new wxBoxSizer(wxHORIZONTAL); + m_filament_left_panel = new wxPanel(this, wxID_ANY); + m_filament_right_panel = new wxPanel(this, wxID_ANY); + m_filament_left_panel->SetBackgroundColour(wxColour(0xf8f8f8)); + m_filament_right_panel->SetBackgroundColour(wxColour(0xf8f8f8)); + m_filament_left_panel->SetMinSize(wxSize(FromDIP(315), 180)); + m_filament_left_panel->SetMaxSize(wxSize(FromDIP(315), 180)); + m_filament_right_panel->SetMinSize(wxSize(FromDIP(315), 180)); + m_filament_right_panel->SetMaxSize(wxSize(FromDIP(315), 180)); + + m_filament_panel_left_sizer = new wxBoxSizer(wxVERTICAL); + m_sizer_ams_mapping_left = new wxGridSizer(0, 5, FromDIP(7), FromDIP(7)); + m_filament_panel_left_sizer->Add(m_sizer_ams_mapping_left, 0, wxEXPAND | wxALL, FromDIP(10)); + m_filament_left_panel->SetSizer(m_filament_panel_left_sizer); + m_filament_left_panel->Layout(); + m_filament_left_panel->Fit(); + + m_filament_panel_right_sizer = new wxBoxSizer(wxVERTICAL); + m_sizer_ams_mapping_right = new wxGridSizer(0, 5, FromDIP(7), FromDIP(7)); + m_filament_panel_right_sizer->Add(m_sizer_ams_mapping_right, 0, wxEXPAND | wxALL, FromDIP(10)); + m_filament_right_panel->SetSizer(m_filament_panel_right_sizer); + m_filament_right_panel->Layout(); + m_filament_right_panel->Fit(); + + m_sizer_filament_2extruder->Add(m_filament_left_panel, 0, wxALIGN_CENTER, 0); + m_sizer_filament_2extruder->Add(0, 0, 0, wxLEFT, FromDIP(7)); + m_sizer_filament_2extruder->Add(m_filament_right_panel, 0, wxALIGN_CENTER, 0); + m_sizer_filament_2extruder->Layout(); + + m_filament_left_panel->Hide(); + m_filament_right_panel->Hide(); + + + + m_statictext_ams_msg = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL); m_statictext_ams_msg->SetFont(::Label::Body_13); m_statictext_ams_msg->Hide(); - m_line_materia = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL); - m_line_materia->SetForegroundColour(wxColour(238, 238, 238)); - m_line_materia->SetBackgroundColour(wxColour(238, 238, 238)); - wxBoxSizer *m_sizer_printer = new wxBoxSizer(wxHORIZONTAL); - m_stext_printer_title = new wxStaticText(this, wxID_ANY, _L("Printer"), wxDefaultPosition, wxSize(-1, -1), 0); - m_stext_printer_title->SetFont(::Label::Head_14); - m_stext_printer_title->Wrap(-1); - m_stext_printer_title->SetForegroundColour(m_colour_bold_color); - m_stext_printer_title->SetBackgroundColour(m_colour_def_color); + /*options*/ + wxBoxSizer* sizer_split_options = new wxBoxSizer(wxHORIZONTAL); + auto m_stext_options_title = new Label(this, _L("Print Options")); + m_stext_options_title->SetFont(::Label::Body_14); + m_stext_options_title->SetForegroundColour(0x909090); + auto m_split_options_line = new wxPanel(this, wxID_ANY); + m_split_options_line->SetBackgroundColour(0xeeeeee); + m_split_options_line->SetSize(wxSize(-1, FromDIP(1))); + m_split_options_line->SetMinSize(wxSize(-1, FromDIP(1))); + m_split_options_line->SetMaxSize(wxSize(-1, FromDIP(1))); + sizer_split_options->Add(0, 0, 0, wxEXPAND, 0); + sizer_split_options->Add(m_stext_options_title, 0, wxALIGN_CENTER, 0); + sizer_split_options->Add(m_split_options_line, 1, wxALIGN_CENTER_VERTICAL, 0); - m_sizer_printer->Add(m_stext_printer_title, 0, wxALL | wxLEFT, FromDIP(5)); - m_sizer_printer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(12)); - m_comboBox_printer = new ::ComboBox(this, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(250), -1), 0, nullptr, wxCB_READONLY); - m_comboBox_printer->Bind(wxEVT_COMBOBOX, &SelectMachineDialog::on_selection_changed, this); - - m_sizer_printer->Add(m_comboBox_printer, 1, wxEXPAND | wxRIGHT, FromDIP(5)); - m_btn_bg_enable = StateColor(std::pair(wxColour(27, 136, 68), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), - std::pair(wxColour(0, 174, 66), StateColor::Normal)); - - m_button_refresh = new Button(this, _L("Refresh")); - m_button_refresh->SetBackgroundColor(m_btn_bg_enable); - m_button_refresh->SetBorderColor(m_btn_bg_enable); - m_button_refresh->SetTextColor(StateColor::darkModeColorFor("#FFFFFE")); - m_button_refresh->SetSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE); - m_button_refresh->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE); - m_button_refresh->SetCornerRadius(FromDIP(10)); - m_button_refresh->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_refresh, this); - m_sizer_printer->Add(m_button_refresh, 0, wxALL | wxLEFT, FromDIP(5)); - - m_statictext_printer_msg = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL); - m_statictext_printer_msg->SetFont(::Label::Body_13); - m_statictext_printer_msg->Hide(); - - //m_sizer_select = new wxGridSizer(0, 2, 0, 0); - m_sizer_select = new wxWrapSizer(); + m_sizer_options = new wxBoxSizer(wxHORIZONTAL); select_bed = create_item_checkbox(_L("Bed Leveling"), this, _L("Bed Leveling"), "bed_leveling"); select_flow = create_item_checkbox(_L("Flow Dynamics Calibration"), this, _L("Flow Dynamics Calibration"), "flow_cali"); select_timelapse = create_item_checkbox(_L("Timelapse"), this, _L("Timelapse"), "timelapse"); select_use_ams = create_ams_checkbox(_L("Enable AMS"), this, _L("Enable AMS")); - m_sizer_select->Add(select_bed, 0, wxLEFT | wxRIGHT, WRAP_GAP); - m_sizer_select->Add(select_flow, 0, wxLEFT | wxRIGHT, WRAP_GAP); - m_sizer_select->Add(select_timelapse, 0, wxLEFT | wxRIGHT, WRAP_GAP); - m_sizer_select->Add(select_use_ams, 0, wxLEFT | wxRIGHT, WRAP_GAP); + m_sizer_options->Add(select_bed, 0, wxLEFT | wxRIGHT, WRAP_GAP); + m_sizer_options->Add(select_flow, 0, wxLEFT | wxRIGHT, WRAP_GAP); + m_sizer_options->Add(select_timelapse, 0, wxLEFT | wxRIGHT, WRAP_GAP); + m_sizer_options->Add(select_use_ams, 0, wxLEFT | wxRIGHT, WRAP_GAP); select_bed->Show(false); select_flow->Show(false); select_timelapse->Show(false); select_use_ams->Show(false); - m_sizer_select->Layout(); + m_sizer_options->Layout(); - // line schedule - m_line_schedule = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); - m_line_schedule->SetBackgroundColour(wxColour(238, 238, 238)); m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, SELECT_MACHINE_DIALOG_SIMBOOK_SIZE, 0); @@ -1252,7 +1375,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) m_button_ensure->SetSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE); m_button_ensure->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE); m_button_ensure->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE); - m_button_ensure->SetCornerRadius(FromDIP(12)); + m_button_ensure->SetCornerRadius(FromDIP(5)); m_button_ensure->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_ok_btn, this); m_sizer_pcont->Add(0, 0, 1, wxEXPAND, 0); @@ -1375,37 +1498,25 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater) sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3)); sizer_print_failed_info->Add(sizer_extra_info, 0, wxLEFT, 5); - m_sizer_scrollable_region->Add(m_rename_switch_panel, 0, wxALIGN_CENTER_HORIZONTAL, 0); - m_sizer_scrollable_region->Add(0, 0, 0, wxTOP, FromDIP(8)); - m_sizer_scrollable_region->Add(m_sizer_thumbnail_area, 0, wxALIGN_CENTER_HORIZONTAL, 0); - m_sizer_scrollable_region->Add(0, 0, 0, wxTOP, FromDIP(10)); - m_sizer_scrollable_region->Add(m_sizer_basic, 0, wxALIGN_CENTER_HORIZONTAL, 0); //m_sizer_scrollable_region->Add(m_sizer_material, 0, wxALIGN_CENTER_HORIZONTAL, 0); - m_sizer_scrollable_region->Add(m_sizer_material_area, 0, wxLEFT, FromDIP(10)); + //m_basic_panel_sizer->Add(m_sizer_material_area, 0, wxLEFT, FromDIP(10)); - m_scrollable_region->SetSizer(m_sizer_scrollable_region); - m_scrollable_region->Layout(); + - m_scrollable_view->SetSizer(m_sizer_scrollable_view); - m_scrollable_view->Layout(); - m_sizer_scrollable_view->Add(m_scrollable_region, 0, wxEXPAND, 0); m_sizer_main->Add(m_line_top, 0, wxEXPAND, 0); - m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(13)); - m_sizer_main->Add(m_scrollable_view, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, FromDIP(25)); - m_sizer_main->Add(m_sizer_backup, 0, wxALIGN_CENTER_HORIZONTAL, 0); + m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(12)); + m_sizer_main->Add(m_basic_panel, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15)); + m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(14)); + m_sizer_main->Add(sizer_split_filament, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15)); + m_sizer_main->Add(m_filament_panel, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15)); + m_sizer_main->Add(m_sizer_filament_2extruder, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15)); m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(6)); - m_sizer_main->Add(m_statictext_ams_msg, 0, wxALIGN_CENTER_HORIZONTAL, 0); - m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(6)); - m_sizer_main->Add(m_line_materia, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30)); - m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(12)); - m_sizer_main->Add(m_sizer_printer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30)); - m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(11)); - m_sizer_main->Add(m_statictext_printer_msg, 0, wxALIGN_CENTER_HORIZONTAL, 0); - m_sizer_main->Add(0, 1, 0, wxTOP, FromDIP(16)); - m_sizer_main->Add(m_sizer_select, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, FromDIP(30)); - m_sizer_main->Add(0, 1, 0, wxTOP, FromDIP(10)); - m_sizer_main->Add(m_line_schedule, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30)); + m_sizer_main->Add(m_statictext_ams_msg, 0, wxLEFT, 0); + m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16)); + m_sizer_main->Add(sizer_split_options, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15)); + m_sizer_main->Add(m_sizer_options, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT| wxRIGHT, FromDIP(15)); + m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(10)); m_sizer_main->Add(m_simplebook, 0, wxALIGN_CENTER_HORIZONTAL, 0); m_sizer_main->Add(m_sw_print_failed_info, 0, wxALIGN_CENTER, 0); m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(18)); @@ -1433,7 +1544,7 @@ void SelectMachineDialog::init_bind() Bind(EVT_SET_FINISH_MAPPING, &SelectMachineDialog::on_set_finish_mapping, this); Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this);e.Skip();}); m_panel_prepare->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this);e.Skip();}); - m_scrollable_region->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this);e.Skip();}); + m_basic_panel->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this);e.Skip();}); m_bitmap_last_plate->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); }); m_bitmap_last_plate->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); }); m_bitmap_next_plate->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); }); @@ -1686,7 +1797,7 @@ void SelectMachineDialog::update_select_layout(MachineObject *obj) select_timelapse->Hide(); } - m_sizer_select->Layout(); + m_sizer_options->Layout(); Layout(); Fit(); } @@ -1916,8 +2027,14 @@ bool SelectMachineDialog::get_ams_mapping_result(std::string &mapping_array_str, /*new ams mapping data*/ - mapping_item_v1["ams_id"] = m_ams_mapping_result[k].ams_id; - mapping_item_v1["slot_id"] = m_ams_mapping_result[k].slot_id; + try + { + mapping_item_v1["ams_id"] = std::stoi(m_ams_mapping_result[k].ams_id); + mapping_item_v1["slot_id"] = std::stoi(m_ams_mapping_result[k].slot_id); + } + catch (...) + { + } } } mapping_v0_json.push_back(tray_id); @@ -1978,12 +2095,12 @@ void SelectMachineDialog::update_ams_status_msg(wxString msg, bool is_warning) void SelectMachineDialog::update_priner_status_msg(wxString msg, bool is_warning) { auto colour = is_warning ? wxColour(0xFF, 0x6F, 0x00) : wxColour(0x6B, 0x6B, 0x6B); - m_statictext_printer_msg->SetForegroundColour(colour); + m_text_printer_msg->SetForegroundColour(colour); if (msg.empty()) { - if (!m_statictext_printer_msg->GetLabel().empty()) { - m_statictext_printer_msg->SetLabel(wxEmptyString); - m_statictext_printer_msg->Hide(); + if (!m_text_printer_msg->GetLabel().empty()) { + m_text_printer_msg->SetLabel(wxEmptyString); + m_text_printer_msg->Hide(); Layout(); Fit(); } @@ -1993,16 +2110,16 @@ void SelectMachineDialog::update_priner_status_msg(wxString msg, bool is_warning auto str_new = msg.utf8_string(); stripWhiteSpace(str_new); - auto str_old = m_statictext_printer_msg->GetLabel().utf8_string(); + auto str_old = m_text_printer_msg->GetLabel().utf8_string(); stripWhiteSpace(str_old); if (str_new != str_old) { - if (m_statictext_printer_msg->GetLabel() != msg) { - m_statictext_printer_msg->SetLabel(msg); - m_statictext_printer_msg->SetMinSize(wxSize(FromDIP(400), -1)); - m_statictext_printer_msg->SetMaxSize(wxSize(FromDIP(400), -1)); - m_statictext_printer_msg->Wrap(FromDIP(400)); - m_statictext_printer_msg->Show(); + if (m_text_printer_msg->GetLabel() != msg) { + m_text_printer_msg->SetLabel(msg); + m_text_printer_msg->SetMinSize(wxSize(FromDIP(420), -1)); + m_text_printer_msg->SetMaxSize(wxSize(FromDIP(420), -1)); + m_text_printer_msg->Wrap(FromDIP(420)); + m_text_printer_msg->Show(); Layout(); Fit(); } @@ -2963,7 +3080,7 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt) BOOST_LOG_TRIVIAL(info) << "The ams mapping selection result: data is " << selection_data; - if (selection_data_arr.size() == 6) { + if (selection_data_arr.size() == 8) { auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]), wxAtoi(selection_data_arr[3])); int old_filament_id = (int) wxAtoi(selection_data_arr[5]); if (m_print_type == PrintFromType::FROM_NORMAL) {//todo:support sd card @@ -2995,6 +3112,9 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt) m_ams_mapping_result[i].color = color.ToStdString(); m_ams_mapping_result[i].ctype = ctype; m_ams_mapping_result[i].colors = tray_cols; + + m_ams_mapping_result[i].ams_id = selection_data_arr[6].ToStdString(); + m_ams_mapping_result[i].slot_id = selection_data_arr[7].ToStdString(); } BOOST_LOG_TRIVIAL(trace) << "The ams mapping result: id is " << m_ams_mapping_result[i].id << "tray_id is " << m_ams_mapping_result[i].tray_id; } @@ -3182,7 +3302,7 @@ void SelectMachineDialog::update_user_printer() BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "for send task, current printer id = " << m_printer_last_select << std::endl; } -void SelectMachineDialog::on_rename_click(wxCommandEvent& event) +void SelectMachineDialog::on_rename_click(wxMouseEvent& event) { m_is_rename_mode = true; m_rename_input->GetTextCtrl()->SetValue(m_current_project_name); @@ -3771,11 +3891,10 @@ void SelectMachineDialog::on_dpi_changed(const wxRect &suggested_rect) timeimg->SetBitmap(print_time->bmp()); print_weight->msw_rescale(); weightimg->SetBitmap(print_weight->bmp()); - m_rename_button->msw_rescale(); - ams_editable->msw_rescale(); - ams_editable_light->msw_rescale(); - enable_ams_mapping->msw_rescale(); - img_amsmapping_tip->SetBitmap(enable_ams_mapping->bmp()); + rename_editable->msw_rescale(); + rename_editable_light->msw_rescale(); + ams_mapping_help_icon->msw_rescale(); + img_amsmapping_tip->SetBitmap(ams_mapping_help_icon->bmp()); enable_ams->msw_rescale(); img_use_ams_tip->SetBitmap(enable_ams->bmp()); @@ -4011,6 +4130,7 @@ void SelectMachineDialog::reset_and_sync_ams_list() } m_sizer_material->Clear(); + m_sizer_ams_mapping->Clear(); m_materialList.clear(); m_filaments.clear(); @@ -4023,8 +4143,8 @@ void SelectMachineDialog::reset_and_sync_ams_list() auto colour_rgb = wxColour((int) rgb[0], (int) rgb[1], (int) rgb[2], (int) rgb[3]); if (extruder >= materials.size() || extruder < 0 || extruder >= display_materials.size()) continue; - MaterialItem *item = new MaterialItem(m_scrollable_region, colour_rgb, _L(display_materials[extruder])); - m_sizer_material->Add(item, 0, wxALL, FromDIP(4)); + MaterialItem *item = new MaterialItem(m_filament_panel, colour_rgb, _L(display_materials[extruder])); + m_sizer_ams_mapping->Add(item, 0, wxALL, FromDIP(5)); item->Bind(wxEVT_LEFT_UP, [this, item, materials, extruder](wxMouseEvent &e) {}); item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent &e) { @@ -4081,12 +4201,16 @@ void SelectMachineDialog::reset_and_sync_ams_list() } } - if (extruders.size() <= 4) { - m_sizer_material->SetCols(extruders.size()); - } else { - m_sizer_material->SetCols(4); + /*if (extruders.size() <= 10) { + m_sizer_ams_mapping->SetCols(extruders.size()); } + else { + m_sizer_ams_mapping->SetCols(10); + }*/ + m_sizer_ams_mapping->SetCols(8); + m_sizer_ams_mapping->Layout(); + m_filament_panel_sizer->Layout(); // reset_ams_material();//show "-" } @@ -4357,16 +4481,12 @@ void SelectMachineDialog::set_default_normal(const ThumbnailData &data) image.SetAlpha((int)c, (int)r, px[3]); } } - image = image.Rescale(FromDIP(256), FromDIP(256)); + image = image.Rescale(FromDIP(198), FromDIP(198)); m_thumbnailPanel->set_thumbnail(image); } - m_scrollable_region->Layout(); - m_scrollable_region->Fit(); - - m_scrollable_view->SetSize(m_scrollable_region->GetSize()); - m_scrollable_view->SetMinSize(m_scrollable_region->GetSize()); - m_scrollable_view->SetMaxSize(m_scrollable_region->GetSize()); + m_basic_panel->Layout(); + m_basic_panel->Fit(); //disable pei bed DeviceManager* dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager(); @@ -4378,16 +4498,7 @@ void SelectMachineDialog::set_default_normal(const ThumbnailData &data) auto dialogSize = this->GetSize(); #ifdef __WINDOWS__ - if (screenSize.GetHeight() < dialogSize.GetHeight()) { - m_need_adaptation_screen = true; - m_scrollable_view->SetScrollRate(0, 5); - m_scrollable_view->SetSize(wxSize(-1, FromDIP(220))); - m_scrollable_view->SetMinSize(wxSize(-1, FromDIP(220))); - m_scrollable_view->SetMaxSize(wxSize(-1, FromDIP(220))); - } - else { - m_scrollable_view->SetScrollRate(0, 0); - } + #endif // __WXOSX_MAC__ // basic info auto aprint_stats = m_plater->get_partplate_list().get_current_fff_print().print_statistics(); @@ -4419,7 +4530,7 @@ void SelectMachineDialog::set_default_from_sdcard() if (data.pixels.size() > 0) { wxMemoryInputStream mis((unsigned char*)data.pixels.data(), data.pixels.size()); wxImage image = wxImage(mis); - image = image.Rescale(FromDIP(256), FromDIP(256)); + image = image.Rescale(FromDIP(198), FromDIP(198)); m_thumbnailPanel->set_thumbnail(image); } @@ -4446,7 +4557,7 @@ void SelectMachineDialog::set_default_from_sdcard() } m_ams_mapping_result.clear(); - m_sizer_material->Clear(); + m_sizer_ams_mapping->Clear(); m_materialList.clear(); m_filaments.clear(); @@ -4454,8 +4565,8 @@ void SelectMachineDialog::set_default_from_sdcard() for (auto i = 0; i < m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size(); i++) { FilamentInfo fo = m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info[i]; - MaterialItem* item = new MaterialItem(m_scrollable_region, wxColour(fo.color), fo.type); - m_sizer_material->Add(item, 0, wxALL, FromDIP(4)); + MaterialItem* item = new MaterialItem(m_filament_panel, wxColour(fo.color), fo.type); + m_sizer_ams_mapping->Add(item, 0, wxALL, FromDIP(5)); item->Bind(wxEVT_LEFT_UP, [this, item, materials](wxMouseEvent& e) {}); item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, fo](wxMouseEvent& e) { @@ -4512,38 +4623,21 @@ void SelectMachineDialog::set_default_from_sdcard() } if (m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size() <= 4) { - m_sizer_material->SetCols(m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size()); + m_sizer_ams_mapping->SetCols(m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size()); } else { - m_sizer_material->SetCols(4); + m_sizer_ams_mapping->SetCols(4); } - m_scrollable_region->Layout(); - m_scrollable_region->Fit(); + m_basic_panel->Layout(); + m_basic_panel->Fit(); - m_scrollable_view->SetSize(m_scrollable_region->GetSize()); - m_scrollable_view->SetMinSize(m_scrollable_region->GetSize()); - m_scrollable_view->SetMaxSize(m_scrollable_region->GetSize()); set_flow_calibration_state(true); wxSize screenSize = wxGetDisplaySize(); auto dialogSize = this->GetSize(); -#ifdef __WINDOWS__ - if (screenSize.GetHeight() < dialogSize.GetHeight()) { - m_need_adaptation_screen = true; - m_scrollable_view->SetScrollRate(0, 5); - m_scrollable_view->SetSize(wxSize(-1, FromDIP(220))); - m_scrollable_view->SetMinSize(wxSize(-1, FromDIP(220))); - m_scrollable_view->SetMaxSize(wxSize(-1, FromDIP(220))); - } - else { - m_scrollable_view->SetScrollRate(0, 0); - } -#endif // __WXOSX_MAC__ - - reset_ams_material(); // basic info @@ -4562,32 +4656,32 @@ void SelectMachineDialog::set_default_from_sdcard() void SelectMachineDialog::update_page_turn_state(bool show) { - m_bitmap_last_plate->Show(show); - m_bitmap_next_plate->Show(show); + /* m_bitmap_last_plate->Show(show); + m_bitmap_next_plate->Show(show); - if (show) { - if (m_print_plate_idx <= 0) { m_bitmap_last_plate->Hide(); } - else { m_bitmap_last_plate->Show(); } + if (show) { + if (m_print_plate_idx <= 0) { m_bitmap_last_plate->Hide(); } + else { m_bitmap_last_plate->Show(); } - if ((m_print_plate_idx + 1) >= m_print_plate_total) { m_bitmap_next_plate->Hide(); } - else { m_bitmap_next_plate->Show(); } + if ((m_print_plate_idx + 1) >= m_print_plate_total) { m_bitmap_next_plate->Hide(); } + else { m_bitmap_next_plate->Show(); } - if (m_print_plate_total == 1) { - m_bitmap_last_plate->Show(false); - m_bitmap_next_plate->Show(false); - } - } + if (m_print_plate_total == 1) { + m_bitmap_last_plate->Show(false); + m_bitmap_next_plate->Show(false); + } + }*/ } void SelectMachineDialog::sys_color_changed() { if (wxGetApp(). dark_mode()) { //rename_button->SetIcon("ams_editable_light"); - m_rename_button->SetBitmap(ams_editable_light->bmp()); + m_rename_button->SetBitmap(rename_editable_light->bmp()); } else { - m_rename_button->SetBitmap(ams_editable->bmp()); + m_rename_button->SetBitmap(rename_editable->bmp()); } m_rename_button->Refresh(); } diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index ac5894445..bb5fc7b9a 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -345,7 +345,6 @@ private: bool m_is_in_sending_mode{ false }; bool m_ams_mapping_res{ false }; bool m_ams_mapping_valid{ false }; - bool m_need_adaptation_screen{ false }; bool m_export_3mf_cancel{ false }; bool m_is_canceled{ false }; bool m_is_rename_mode{ false }; @@ -382,18 +381,17 @@ protected: AmsTutorialPopup m_mapping_tutorial_popup{ nullptr }; MaterialHash m_materialList; Plater * m_plater{nullptr}; - wxWrapSizer* m_sizer_select{ nullptr }; + wxBoxSizer* m_sizer_options{ nullptr }; wxBoxSizer* m_sizer_thumbnail{ nullptr }; - wxGridSizer* m_sizer_material{ nullptr }; + wxBoxSizer* m_sizer_main{ nullptr }; - wxBoxSizer* m_sizer_scrollable_view{ nullptr }; - wxBoxSizer* m_sizer_scrollable_region{ nullptr }; + wxBoxSizer* m_basicl_sizer{ nullptr }; wxBoxSizer* rename_sizer_v{ nullptr }; wxBoxSizer* rename_sizer_h{ nullptr }; - wxBoxSizer* m_sizer_backup{ nullptr }; + wxBoxSizer* m_sizer_autorefill{ nullptr }; Button* m_button_refresh{ nullptr }; Button* m_button_ensure{ nullptr }; - ScalableButton * m_rename_button{nullptr}; + wxStaticBitmap * m_rename_button{nullptr}; ComboBox* m_comboBox_printer{ nullptr }; wxStaticBitmap* m_staticbitmap{ nullptr }; wxStaticBitmap* m_bitmap_last_plate{ nullptr }; @@ -405,15 +403,12 @@ protected: wxWindow* select_timelapse{ nullptr }; wxWindow* select_use_ams{ nullptr }; wxPanel* m_panel_status{ nullptr }; - wxPanel* m_scrollable_region; + wxPanel* m_basic_panel; wxPanel* m_rename_normal_panel{nullptr}; - wxPanel* m_line_schedule{nullptr}; wxPanel* m_panel_sending{nullptr}; wxPanel* m_panel_prepare{nullptr}; wxPanel* m_panel_finish{nullptr}; wxPanel* m_line_top{ nullptr }; - wxPanel* m_panel_image{ nullptr }; - wxPanel* m_line_materia{ nullptr }; Label* m_st_txt_error_code{nullptr}; Label* m_st_txt_error_desc{nullptr}; Label* m_st_txt_extra_info{nullptr}; @@ -422,27 +417,26 @@ protected: wxSimplebook* m_rename_switch_panel{nullptr}; wxSimplebook* m_simplebook{nullptr}; wxStaticText* m_rename_text{nullptr}; - wxStaticText* m_stext_printer_title{nullptr}; - wxStaticText* m_stext_time{ nullptr }; - wxStaticText* m_stext_weight{ nullptr }; + Label* m_stext_printer_title{nullptr}; + Label* m_stext_time{ nullptr }; + Label* m_stext_weight{ nullptr }; wxStaticText* m_statictext_ams_msg{ nullptr }; - wxStaticText* m_statictext_printer_msg{ nullptr }; + wxStaticText* m_text_printer_msg{ nullptr }; wxStaticText* m_staticText_bed_title{ nullptr }; wxStaticText* m_stext_sending{ nullptr }; wxStaticText* m_statictext_finish{nullptr}; TextInput* m_rename_input{nullptr}; wxTimer* m_refresh_timer{ nullptr }; std::shared_ptr m_print_job; - wxScrolledWindow* m_scrollable_view; wxScrolledWindow* m_sw_print_failed_info{nullptr}; wxHyperlinkCtrl* m_hyperlink{nullptr}; - ScalableBitmap * ams_editable{nullptr}; - ScalableBitmap * ams_editable_light{nullptr}; + ScalableBitmap * rename_editable{nullptr}; + ScalableBitmap * rename_editable_light{nullptr}; wxStaticBitmap * timeimg{nullptr}; ScalableBitmap * print_time{nullptr}; wxStaticBitmap * weightimg{nullptr}; ScalableBitmap * print_weight{nullptr}; - ScalableBitmap * enable_ams_mapping{nullptr}; + ScalableBitmap * ams_mapping_help_icon{nullptr}; wxStaticBitmap * img_use_ams_tip{nullptr}; wxStaticBitmap * img_ams_backup{nullptr}; ScalableBitmap * enable_ams{nullptr}; @@ -453,6 +447,19 @@ protected: std::vector m_cur_colors_in_thumbnail; std::vector m_edge_pixels; + wxPanel* m_filament_panel; + wxPanel* m_filament_left_panel; + wxPanel* m_filament_right_panel; + + wxBoxSizer* m_filament_panel_sizer; + wxBoxSizer* m_filament_panel_left_sizer; + wxBoxSizer* m_filament_panel_right_sizer; + wxBoxSizer* m_sizer_filament_2extruder; + + wxGridSizer* m_sizer_ams_mapping{ nullptr }; + wxGridSizer* m_sizer_ams_mapping_left{ nullptr }; + wxGridSizer* m_sizer_ams_mapping_right{ nullptr }; + public: SelectMachineDialog(Plater *plater = nullptr); ~SelectMachineDialog(); @@ -476,7 +483,7 @@ public: void reset_ams_material(); void update_show_status(); void update_ams_check(MachineObject* obj); - void on_rename_click(wxCommandEvent& event); + void on_rename_click(wxMouseEvent& event); void on_rename_enter(); void update_printer_combobox(wxCommandEvent& event); void on_cancel(wxCloseEvent& event);