NEW:change mapping popup layout for multi nozzles.
jira:[Popup for multi nozzles] Change-Id: I07e6d8f0469d2dcf0037d53e2ca8e22de78ca233
This commit is contained in:
parent
7b7ebf1b95
commit
0924fce685
|
@ -328,7 +328,7 @@ void MaterialItem::doRender(wxDC& dc)
|
||||||
m_left_marea_panel = new wxPanel(this);
|
m_left_marea_panel = new wxPanel(this);
|
||||||
m_right_marea_panel = new wxPanel(this);
|
m_right_marea_panel = new wxPanel(this);
|
||||||
|
|
||||||
|
auto sizer_temp = new wxBoxSizer(wxHORIZONTAL);
|
||||||
/*left ext*/
|
/*left ext*/
|
||||||
m_left_extra_slot = new MappingItem(m_left_marea_panel);
|
m_left_extra_slot = new MappingItem(m_left_marea_panel);
|
||||||
m_left_extra_slot->m_ams_id = VIRTUAL_TRAY_DEPUTY_ID;
|
m_left_extra_slot->m_ams_id = VIRTUAL_TRAY_DEPUTY_ID;
|
||||||
|
@ -337,7 +337,13 @@ void MaterialItem::doRender(wxDC& dc)
|
||||||
m_left_extra_slot->SetMinSize(wxSize(FromDIP(48), FromDIP(60)));
|
m_left_extra_slot->SetMinSize(wxSize(FromDIP(48), FromDIP(60)));
|
||||||
m_left_extra_slot->SetMaxSize(wxSize(FromDIP(48), FromDIP(60)));
|
m_left_extra_slot->SetMaxSize(wxSize(FromDIP(48), FromDIP(60)));
|
||||||
|
|
||||||
|
auto left_panel = new wxPanel(m_left_marea_panel);
|
||||||
|
left_panel->SetSize(wxSize(FromDIP(182), FromDIP(60)));
|
||||||
|
left_panel->SetMinSize(wxSize(FromDIP(182), FromDIP(60)));
|
||||||
|
left_panel->SetMaxSize(wxSize(FromDIP(182), FromDIP(60)));
|
||||||
|
|
||||||
|
sizer_temp->Add(m_left_extra_slot);
|
||||||
|
sizer_temp->Add(left_panel);
|
||||||
|
|
||||||
/*right ext*/
|
/*right ext*/
|
||||||
m_right_extra_slot = new MappingItem(m_right_marea_panel);
|
m_right_extra_slot = new MappingItem(m_right_marea_panel);
|
||||||
|
@ -347,10 +353,36 @@ void MaterialItem::doRender(wxDC& dc)
|
||||||
m_right_extra_slot->SetMinSize(wxSize(FromDIP(48), FromDIP(60)));
|
m_right_extra_slot->SetMinSize(wxSize(FromDIP(48), FromDIP(60)));
|
||||||
m_right_extra_slot->SetMaxSize(wxSize(FromDIP(48), FromDIP(60)));
|
m_right_extra_slot->SetMaxSize(wxSize(FromDIP(48), FromDIP(60)));
|
||||||
|
|
||||||
m_sizer_ams_left->Add(create_split_sizer(m_left_marea_panel, _L("Left Ams")), 0, wxEXPAND, 0);
|
m_sizer_split_ams_left = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
auto ams_title_text = new Label(parent, _L("Left Ams"));
|
||||||
|
ams_title_text->SetFont(::Label::Body_13);
|
||||||
|
ams_title_text->SetForegroundColour(0x909090);
|
||||||
|
auto m_split_left_line = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
|
m_split_left_line->SetBackgroundColour(0xeeeeee);
|
||||||
|
m_split_left_line->SetMinSize(wxSize(-1, 1));
|
||||||
|
m_split_left_line->SetMaxSize(wxSize(-1, 1));
|
||||||
|
m_sizer_split_ams_left->Add(0, 0, 0, wxEXPAND, 0);
|
||||||
|
m_sizer_split_ams_left->Add(ams_title_text, 0, wxALIGN_CENTER, 0);
|
||||||
|
m_sizer_split_ams_left->Add(m_split_left_line, 1, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
|
m_sizer_ams_left->Add(m_sizer_split_ams_left, 0, wxEXPAND, 0);
|
||||||
|
|
||||||
|
m_sizer_split_ams_right = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
ams_title_text = new Label(parent, _L("Right Ams"));
|
||||||
|
ams_title_text->SetFont(::Label::Body_13);
|
||||||
|
ams_title_text->SetForegroundColour(0x909090);
|
||||||
|
auto m_split_right_line = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
|
m_split_right_line->SetBackgroundColour(0xeeeeee);
|
||||||
|
m_split_right_line->SetMinSize(wxSize(-1, 1));
|
||||||
|
m_split_right_line->SetMaxSize(wxSize(-1, 1));
|
||||||
|
m_sizer_split_ams_right->Add(0, 0, 0, wxEXPAND, 0);
|
||||||
|
m_sizer_split_ams_right->Add(ams_title_text, 0, wxALIGN_CENTER, 0);
|
||||||
|
m_sizer_split_ams_right->Add(m_split_left_line, 1, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
|
m_sizer_ams_right->Add(m_sizer_split_ams_right, 0, wxEXPAND, 0);
|
||||||
|
|
||||||
m_sizer_ams_left->Add(m_sizer_ams_basket_left, 0, wxEXPAND|wxTOP, FromDIP(8));
|
m_sizer_ams_left->Add(m_sizer_ams_basket_left, 0, wxEXPAND|wxTOP, FromDIP(8));
|
||||||
m_sizer_ams_left->Add(create_split_sizer(m_left_marea_panel, _L("External")), 0, wxEXPAND|wxTOP, FromDIP(8));
|
m_sizer_ams_left->Add(create_split_sizer(m_left_marea_panel, _L("External")), 0, wxEXPAND|wxTOP, FromDIP(8));
|
||||||
m_sizer_ams_left->Add(m_left_extra_slot, 0, wxEXPAND|wxTOP, FromDIP(8));
|
//m_sizer_ams_left->Add(m_left_extra_slot, 0, wxEXPAND|wxTOP, FromDIP(8));
|
||||||
|
m_sizer_ams_left->Add(sizer_temp, 0, wxEXPAND | wxTOP, FromDIP(8));
|
||||||
|
|
||||||
m_sizer_ams_right->Add(create_split_sizer(m_right_marea_panel, _L("Right Ams")), 0, wxEXPAND, 0);
|
m_sizer_ams_right->Add(create_split_sizer(m_right_marea_panel, _L("Right Ams")), 0, wxEXPAND, 0);
|
||||||
m_sizer_ams_right->Add(m_sizer_ams_basket_right, 0, wxEXPAND|wxTOP, FromDIP(8));
|
m_sizer_ams_right->Add(m_sizer_ams_basket_right, 0, wxEXPAND|wxTOP, FromDIP(8));
|
||||||
|
@ -361,7 +393,8 @@ void MaterialItem::doRender(wxDC& dc)
|
||||||
m_left_marea_panel->SetSizer(m_sizer_ams_left);
|
m_left_marea_panel->SetSizer(m_sizer_ams_left);
|
||||||
m_right_marea_panel->SetSizer(m_sizer_ams_right);
|
m_right_marea_panel->SetSizer(m_sizer_ams_right);
|
||||||
|
|
||||||
m_sizer_ams->Add(m_left_marea_panel, 0, wxEXPAND, FromDIP(0));
|
//m_sizer_ams->Add(m_left_marea_panel, 0, wxEXPAND, FromDIP(0));
|
||||||
|
m_sizer_ams->Add(m_left_marea_panel, 0, wxRIGHT, FromDIP(10));
|
||||||
m_sizer_ams->Add(0, 0, 0, wxEXPAND, FromDIP(15));
|
m_sizer_ams->Add(0, 0, 0, wxEXPAND, FromDIP(15));
|
||||||
m_sizer_ams->Add(m_right_marea_panel, 0, wxEXPAND, FromDIP(0));
|
m_sizer_ams->Add(m_right_marea_panel, 0, wxEXPAND, FromDIP(0));
|
||||||
|
|
||||||
|
@ -371,8 +404,10 @@ void MaterialItem::doRender(wxDC& dc)
|
||||||
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.");
|
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->SetLabel(format_text(cant_not_match_tip));
|
||||||
m_warning_text->SetMinSize(wxSize(FromDIP(248), FromDIP(-1)));
|
/*m_warning_text->SetMinSize(wxSize(FromDIP(248), FromDIP(-1)));
|
||||||
m_warning_text->Wrap(FromDIP(248));
|
m_warning_text->Wrap(FromDIP(248));*/
|
||||||
|
/*m_warning_text->SetMinSize(wxSize(FromDIP(496), FromDIP(-1)));
|
||||||
|
m_warning_text->Wrap(FromDIP(496));*/
|
||||||
|
|
||||||
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_ams, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(14));
|
m_sizer_main->Add(m_sizer_ams, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(14));
|
||||||
|
@ -393,18 +428,18 @@ void MaterialItem::doRender(wxDC& dc)
|
||||||
|
|
||||||
wxBoxSizer* AmsMapingPopup::create_split_sizer(wxWindow* parent, wxString text)
|
wxBoxSizer* AmsMapingPopup::create_split_sizer(wxWindow* parent, wxString text)
|
||||||
{
|
{
|
||||||
wxBoxSizer* sizer_split_left_ams = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer* sizer_split_ams = new wxBoxSizer(wxHORIZONTAL);
|
||||||
auto left_ams_title_text = new Label(parent, text);
|
auto ams_title_text = new Label(parent, text);
|
||||||
left_ams_title_text->SetFont(::Label::Body_13);
|
ams_title_text->SetFont(::Label::Body_13);
|
||||||
left_ams_title_text->SetForegroundColour(0x909090);
|
ams_title_text->SetForegroundColour(0x909090);
|
||||||
auto m_split_left_line = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
auto m_split_left_line = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
m_split_left_line->SetBackgroundColour(0xeeeeee);
|
m_split_left_line->SetBackgroundColour(0xeeeeee);
|
||||||
m_split_left_line->SetMinSize(wxSize(-1, 1));
|
m_split_left_line->SetMinSize(wxSize(-1, 1));
|
||||||
m_split_left_line->SetMaxSize(wxSize(-1, 1));
|
m_split_left_line->SetMaxSize(wxSize(-1, 1));
|
||||||
sizer_split_left_ams->Add(0, 0, 0, wxEXPAND, 0);
|
sizer_split_ams->Add(0, 0, 0, wxEXPAND, 0);
|
||||||
sizer_split_left_ams->Add(left_ams_title_text, 0, wxALIGN_CENTER, 0);
|
sizer_split_ams->Add(ams_title_text, 0, wxALIGN_CENTER, 0);
|
||||||
sizer_split_left_ams->Add(m_split_left_line, 1, wxALIGN_CENTER_VERTICAL, 0);
|
sizer_split_ams->Add(m_split_left_line, 1, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
return sizer_split_left_ams;
|
return sizer_split_ams;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString AmsMapingPopup::format_text(wxString &m_msg)
|
wxString AmsMapingPopup::format_text(wxString &m_msg)
|
||||||
|
@ -518,15 +553,52 @@ void AmsMapingPopup::update(MachineObject* obj)
|
||||||
m_amsmapping_container_sizer_list.clear();
|
m_amsmapping_container_sizer_list.clear();
|
||||||
m_mapping_item_list.clear();
|
m_mapping_item_list.clear();
|
||||||
|
|
||||||
|
|
||||||
/*ext*/
|
/*ext*/
|
||||||
if (obj->vt_slot.size() == 1) {
|
const auto& full_config = wxGetApp().preset_bundle->full_config();
|
||||||
|
size_t nozzle_nums = full_config.option<ConfigOptionFloats>("nozzle_diameter")->values.size();
|
||||||
|
if (nozzle_nums == 1) {
|
||||||
|
m_warning_text->SetMinSize(wxSize(FromDIP(248), FromDIP(-1)));
|
||||||
|
m_warning_text->Wrap(FromDIP(248));
|
||||||
m_left_marea_panel->Hide();
|
m_left_marea_panel->Hide();
|
||||||
m_right_extra_slot->Hide();
|
m_left_extra_slot->Hide();
|
||||||
}
|
//m_left_marea_panel->Show();
|
||||||
else if (obj->vt_slot.size() > 1) {
|
m_right_marea_panel->Show();
|
||||||
m_left_marea_panel->Show();
|
|
||||||
m_right_extra_slot->Show();
|
m_right_extra_slot->Show();
|
||||||
}
|
}
|
||||||
|
else if (nozzle_nums > 1) {
|
||||||
|
m_left_marea_panel->Hide();
|
||||||
|
m_right_marea_panel->Hide();
|
||||||
|
m_left_extra_slot->Hide();
|
||||||
|
m_right_extra_slot->Hide();
|
||||||
|
if (m_show_type != ShowType::LEFT_AND_RIGHT)
|
||||||
|
{
|
||||||
|
m_warning_text->SetMinSize(wxSize(FromDIP(248), FromDIP(-1)));
|
||||||
|
m_warning_text->Wrap(FromDIP(248));
|
||||||
|
}
|
||||||
|
if (m_show_type == ShowType::LEFT)
|
||||||
|
{
|
||||||
|
m_sizer_split_ams_left->Show(false);
|
||||||
|
m_left_marea_panel->Show();
|
||||||
|
m_left_extra_slot->Show();
|
||||||
|
}
|
||||||
|
else if (m_show_type == ShowType::RIGHT)
|
||||||
|
{
|
||||||
|
m_sizer_split_ams_right->Show(false);
|
||||||
|
m_right_marea_panel->Show();
|
||||||
|
m_right_extra_slot->Show();
|
||||||
|
}
|
||||||
|
else if (m_show_type == ShowType::LEFT_AND_RIGHT)
|
||||||
|
{
|
||||||
|
m_warning_text->SetMinSize(wxSize(FromDIP(496), FromDIP(-1)));
|
||||||
|
m_warning_text->Wrap(FromDIP(496));
|
||||||
|
m_left_marea_panel->Show();
|
||||||
|
m_left_extra_slot->Show();
|
||||||
|
m_right_marea_panel->Show();
|
||||||
|
m_right_extra_slot->Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < obj->vt_slot.size(); i++) {
|
for (int i = 0; i < obj->vt_slot.size(); i++) {
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,12 @@ enum TrayType {
|
||||||
EMPTY
|
EMPTY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ShowType {
|
||||||
|
LEFT, // only show left ams and left ext
|
||||||
|
RIGHT, //only show right ams and right ext
|
||||||
|
LEFT_AND_RIGHT //show left and right ams at the same time
|
||||||
|
};
|
||||||
|
|
||||||
struct TrayData
|
struct TrayData
|
||||||
{
|
{
|
||||||
TrayType type;
|
TrayType type;
|
||||||
|
@ -156,8 +162,9 @@ public:
|
||||||
std::vector<MappingItem*> m_mapping_item_list;
|
std::vector<MappingItem*> m_mapping_item_list;
|
||||||
|
|
||||||
bool m_has_unmatch_filament {false};
|
bool m_has_unmatch_filament {false};
|
||||||
bool m_supporting_mix_print {false};
|
bool m_supporting_mix_print {false}; //For single extruder, can ams and ext print together?
|
||||||
int m_current_filament_id;
|
int m_current_filament_id;
|
||||||
|
ShowType m_show_type;
|
||||||
std::string m_tag_material;
|
std::string m_tag_material;
|
||||||
wxBoxSizer *m_sizer_main{nullptr};
|
wxBoxSizer *m_sizer_main{nullptr};
|
||||||
wxBoxSizer *m_sizer_ams{nullptr};
|
wxBoxSizer *m_sizer_ams{nullptr};
|
||||||
|
@ -174,6 +181,9 @@ public:
|
||||||
wxPanel* m_left_marea_panel;
|
wxPanel* m_left_marea_panel;
|
||||||
wxPanel* m_right_marea_panel;
|
wxPanel* m_right_marea_panel;
|
||||||
|
|
||||||
|
wxBoxSizer* m_sizer_split_ams_left;
|
||||||
|
wxBoxSizer* m_sizer_split_ams_right;
|
||||||
|
|
||||||
wxBoxSizer* create_split_sizer(wxWindow* parent, wxString text);
|
wxBoxSizer* create_split_sizer(wxWindow* parent, wxString text);
|
||||||
wxString format_text(wxString &m_msg);
|
wxString format_text(wxString &m_msg);
|
||||||
void set_send_win(wxWindow* win) {send_win = win;};
|
void set_send_win(wxWindow* win) {send_win = win;};
|
||||||
|
@ -191,6 +201,7 @@ public:
|
||||||
virtual bool ProcessLeftDown(wxMouseEvent &event) wxOVERRIDE;
|
virtual bool ProcessLeftDown(wxMouseEvent &event) wxOVERRIDE;
|
||||||
void paintEvent(wxPaintEvent &evt);
|
void paintEvent(wxPaintEvent &evt);
|
||||||
void set_parent_item(wxWindow* item) {m_parent_item = item;};
|
void set_parent_item(wxWindow* item) {m_parent_item = item;};
|
||||||
|
void set_show_type(ShowType type) { m_show_type = type; };
|
||||||
std::vector<TrayData> parse_ams_mapping(std::map<std::string, Ams*> amsList);
|
std::vector<TrayData> parse_ams_mapping(std::map<std::string, Ams*> amsList);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -900,11 +900,11 @@ int MachineObject::ams_filament_mapping(std::vector<FilamentInfo> filaments, std
|
||||||
{
|
{
|
||||||
tray_filaments.emplace(std::make_pair(tray_index, info));
|
tray_filaments.emplace(std::make_pair(tray_index, info));
|
||||||
}
|
}
|
||||||
else if (ams->second->nozzle == 0 && ext_first)
|
else if (ams->second->nozzle == 0 && ext_second)
|
||||||
{
|
{
|
||||||
tray_filaments.emplace(std::make_pair(tray_index, info));
|
tray_filaments.emplace(std::make_pair(tray_index, info));
|
||||||
}
|
}
|
||||||
else if (ams->second->nozzle == 1 && ext_second)
|
else if (ams->second->nozzle == 1 && ext_first)
|
||||||
{
|
{
|
||||||
tray_filaments.emplace(std::make_pair(tray_index, info));
|
tray_filaments.emplace(std::make_pair(tray_index, info));
|
||||||
}
|
}
|
||||||
|
|
|
@ -2153,6 +2153,9 @@ bool SelectMachineDialog::get_ams_mapping_result(std::string &mapping_array_str,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SelectMachineDialog::is_two_nozzle_same() {
|
bool SelectMachineDialog::is_two_nozzle_same() {
|
||||||
|
//if two extruder are same and can be mix-used, return true
|
||||||
|
//else return false
|
||||||
|
//wait to fill
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3809,7 +3812,9 @@ void SelectMachineDialog::update_show_status()
|
||||||
do_ams_mapping(obj_);
|
do_ams_mapping(obj_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_mapping_popup.m_supporting_mix_print)
|
const auto& full_config = wxGetApp().preset_bundle->full_config();
|
||||||
|
size_t nozzle_nums = full_config.option<ConfigOptionFloats>("nozzle_diameter")->values.size();
|
||||||
|
if (!m_mapping_popup.m_supporting_mix_print && nozzle_nums == 1)
|
||||||
{
|
{
|
||||||
bool useAms = false;
|
bool useAms = false;
|
||||||
bool useExt = false;
|
bool useExt = false;
|
||||||
|
@ -4324,7 +4329,24 @@ void SelectMachineDialog::reset_and_sync_ams_list()
|
||||||
DeviceManager *dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager();
|
DeviceManager *dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager();
|
||||||
if (!dev_manager) return;
|
if (!dev_manager) return;
|
||||||
MachineObject *obj_ = dev_manager->get_selected_machine();
|
MachineObject *obj_ = dev_manager->get_selected_machine();
|
||||||
|
const auto& full_config = wxGetApp().preset_bundle->full_config();
|
||||||
|
size_t nozzle_nums = full_config.option<ConfigOptionFloats>("nozzle_diameter")->values.size();
|
||||||
|
if (nozzle_nums > 1)
|
||||||
|
{
|
||||||
|
if (is_two_nozzle_same())
|
||||||
|
{
|
||||||
|
m_mapping_popup.set_show_type(ShowType::LEFT_AND_RIGHT);
|
||||||
|
}
|
||||||
|
else if (m_filaments_map[extruder] == 1)
|
||||||
|
{
|
||||||
|
m_mapping_popup.set_show_type(ShowType::LEFT);
|
||||||
|
}
|
||||||
|
else if(m_filaments_map[extruder] == 2)
|
||||||
|
{
|
||||||
|
m_mapping_popup.set_show_type(ShowType::RIGHT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//m_mapping_popup.set_show_type(ShowType::RIGHT);
|
||||||
if (obj_ && obj_->is_support_ams_mapping()) {
|
if (obj_ && obj_->is_support_ams_mapping()) {
|
||||||
if (m_mapping_popup.IsShown()) return;
|
if (m_mapping_popup.IsShown()) return;
|
||||||
wxPoint pos = item->ClientToScreen(wxPoint(0, 0));
|
wxPoint pos = item->ClientToScreen(wxPoint(0, 0));
|
||||||
|
@ -4378,6 +4400,10 @@ void SelectMachineDialog::reset_and_sync_ams_list()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
m_filament_left_panel->Hide();
|
||||||
|
m_filament_right_panel->Hide();
|
||||||
|
m_filament_panel->Show();
|
||||||
|
//m_filament_panel_left_sizer->Layout();
|
||||||
m_sizer_ams_mapping->SetCols(8);
|
m_sizer_ams_mapping->SetCols(8);
|
||||||
m_sizer_ams_mapping->Layout();
|
m_sizer_ams_mapping->Layout();
|
||||||
m_filament_panel_sizer->Layout();
|
m_filament_panel_sizer->Layout();
|
||||||
|
|
Loading…
Reference in New Issue