FIX:All plates share the current mapping
jira: STUDIO-10008 Change-Id: I5d04c95dea7bd6b56c97258863a190f0f0c3b4e6
This commit is contained in:
parent
a039401683
commit
a1de92523f
|
@ -1808,6 +1808,55 @@ void PresetBundle::update_num_filaments(unsigned int to_del_flament_id)
|
|||
update_multi_material_filament_presets(to_del_flament_id);
|
||||
}
|
||||
|
||||
std::vector<std::string> PresetBundle::get_ams_colors() {
|
||||
std::vector<std::string> ams_filament_colors;
|
||||
std::vector<std::string> ams_filament_presets;
|
||||
auto is_double_extruder = get_printer_extruder_count() == 2;
|
||||
for (auto &entry : filament_ams_list) {
|
||||
auto &ams = entry.second;
|
||||
auto filament_id = ams.opt_string("filament_id", 0u);
|
||||
auto filament_color = ams.opt_string("filament_colour", 0u);
|
||||
auto filament_changed = !ams.has("filament_changed") || ams.opt_bool("filament_changed");
|
||||
auto filament_multi_color = ams.opt<ConfigOptionStrings>("filament_multi_colors")->values;
|
||||
if (filament_id.empty()) {
|
||||
continue;
|
||||
}
|
||||
if (!filament_changed && this->filament_presets.size() > ams_filament_presets.size()) {
|
||||
ams_filament_presets.push_back(this->filament_presets[ams_filament_presets.size()]);
|
||||
ams_filament_colors.push_back(filament_color);
|
||||
ams_multi_color_filment.push_back(filament_multi_color);
|
||||
continue;
|
||||
}
|
||||
auto iter = std::find_if(filaments.begin(), filaments.end(),
|
||||
[this, &filament_id](auto &f) { return f.is_compatible && filaments.get_preset_base(f) == &f && f.filament_id == filament_id; });
|
||||
if (iter == filaments.end()) {
|
||||
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": filament_id %1% not found or system or compatible") % filament_id;
|
||||
auto filament_type = ams.opt_string("filament_type", 0u);
|
||||
if (!filament_type.empty()) {
|
||||
filament_type = "Generic " + filament_type;
|
||||
iter = std::find_if(filaments.begin(), filaments.end(),
|
||||
[&filament_type](auto &f) { return f.is_compatible && f.is_system && boost::algorithm::starts_with(f.name, filament_type); });
|
||||
}
|
||||
if (iter == filaments.end()) {
|
||||
// Prefer old selection
|
||||
if (ams_filament_presets.size() < this->filament_presets.size()) {
|
||||
ams_filament_presets.push_back(this->filament_presets[ams_filament_presets.size()]);
|
||||
ams_filament_colors.push_back(filament_color);
|
||||
ams_multi_color_filment.push_back(filament_multi_color);
|
||||
continue;
|
||||
}
|
||||
iter = std::find_if(filaments.begin(), filaments.end(), [&filament_type](auto &f) { return f.is_compatible && f.is_system; });
|
||||
if (iter == filaments.end())
|
||||
continue;
|
||||
}
|
||||
filament_id = iter->filament_id;
|
||||
}
|
||||
ams_filament_presets.push_back(iter->name);
|
||||
ams_filament_colors.push_back(filament_color);
|
||||
}
|
||||
return ams_filament_colors;
|
||||
}
|
||||
|
||||
unsigned int PresetBundle::sync_ams_list(unsigned int &unknowns, bool use_map, std::map<int, AMSMapInfo> &maps,bool enable_append, MergeFilamentInfo &merge_info)
|
||||
{
|
||||
std::vector<std::string> ams_filament_presets;
|
||||
|
|
|
@ -108,6 +108,7 @@ public:
|
|||
void set_num_filaments(unsigned int n, std::string new_col = "");
|
||||
void update_num_filaments(unsigned int to_del_flament_id);
|
||||
|
||||
std::vector<std::string> get_ams_colors();
|
||||
unsigned int sync_ams_list(unsigned int &unknowns, bool use_map, std::map<int, AMSMapInfo> &maps,bool enable_append, MergeFilamentInfo& merge_info);
|
||||
//BBS: check whether this is the only edited filament
|
||||
bool is_the_only_edited_filament(unsigned int filament_index);
|
||||
|
|
|
@ -129,7 +129,6 @@ void SyncAmsInfoDialog::updata_ui_data_after_connected_printer() {
|
|||
if (!m_input_info.connected_printer) { return; }
|
||||
if (is_dirty_filament()) { return; }
|
||||
|
||||
show_sizer(m_sizer_line, true);
|
||||
m_two_thumbnail_panel->Show(true);
|
||||
|
||||
m_attention_text->Show();
|
||||
|
@ -207,7 +206,6 @@ void SyncAmsInfoDialog::update_select_layout(MachineObject *obj)
|
|||
|
||||
void SyncAmsInfoDialog::set_default_normal(const ThumbnailData &data)
|
||||
{
|
||||
update_page_turn_state(false);
|
||||
if (m_cur_input_thumbnail_data.is_valid() && m_left_image_button) {
|
||||
auto & temp_data = m_cur_input_thumbnail_data;
|
||||
wxImage image(temp_data.width, temp_data.height);
|
||||
|
@ -245,13 +243,9 @@ void SyncAmsInfoDialog::set_default_normal(const ThumbnailData &data)
|
|||
//m_used_colors_tip_text->SetLabel(" (" + std::to_string(extruders.size()) + " " + _L("colors used") + ")");
|
||||
}
|
||||
}
|
||||
// disable pei bed
|
||||
DeviceManager *dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager();
|
||||
if (!dev_manager)
|
||||
return;
|
||||
MachineObject *obj_ = dev_manager->get_selected_machine();
|
||||
wxSize screenSize = wxGetDisplaySize();
|
||||
auto dialogSize = this->GetSize();
|
||||
if (m_map_mode == MapModeEnum::ColorMap) {
|
||||
m_back_cur_colors_in_thumbnail = m_cur_colors_in_thumbnail;
|
||||
}
|
||||
}
|
||||
|
||||
bool SyncAmsInfoDialog::is_must_finish_slice_then_connected_printer() {
|
||||
|
@ -340,10 +334,10 @@ wxBoxSizer *SyncAmsInfoDialog::create_sizer_thumbnail(wxButton *image_button, bo
|
|||
}
|
||||
else {
|
||||
wxBoxSizer *text_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto sync_text = new wxStaticText(image_button->GetParent(), wxID_ANY, _L("After mapping"));
|
||||
sync_text->SetForegroundColour(wxColour(107, 107, 107, 100));
|
||||
text_sizer->Add(sync_text, 0, wxALIGN_CENTER | wxALL, 0);
|
||||
sizer_thumbnail->Add(sync_text, FromDIP(0), wxALIGN_CENTER | wxALL, FromDIP(4));
|
||||
m_after_map_text = new wxStaticText(image_button->GetParent(), wxID_ANY, _L("After mapping"));
|
||||
m_after_map_text->SetForegroundColour(wxColour(107, 107, 107, 100));
|
||||
text_sizer->Add(m_after_map_text, 0, wxALIGN_CENTER | wxALL, 0);
|
||||
sizer_thumbnail->Add(m_after_map_text, FromDIP(0), wxALIGN_CENTER | wxALL, FromDIP(4));
|
||||
}
|
||||
sizer_thumbnail->Add(image_button, 0, wxALIGN_CENTER, 0);
|
||||
return sizer_thumbnail;
|
||||
|
@ -355,13 +349,7 @@ void SyncAmsInfoDialog::update_when_change_plate(int idx) {
|
|||
}
|
||||
m_specify_plate_idx = idx;
|
||||
|
||||
reset_and_sync_ams_list();
|
||||
m_cur_input_thumbnail_data = m_plater->get_partplate_list().get_plate(m_specify_plate_idx)->thumbnail_data;
|
||||
clone_thumbnail_data();
|
||||
set_default_normal(m_cur_input_thumbnail_data);
|
||||
|
||||
wxCommandEvent empty;
|
||||
on_selection_changed(empty);
|
||||
update_thumbnail_data_accord_plate_index(false); // share current map
|
||||
|
||||
update_swipe_button_state();
|
||||
Layout();
|
||||
|
@ -374,15 +362,44 @@ void SyncAmsInfoDialog::update_when_change_map_mode(int idx)
|
|||
if (m_map_mode == MapModeEnum::ColorMap) {
|
||||
show_color_panel(true);
|
||||
m_confirm_title->SetLabel(m_undone_str);
|
||||
m_after_map_text->SetLabel(_L("After mapping"));
|
||||
} else if (m_map_mode == MapModeEnum::Override) {
|
||||
show_color_panel(false);
|
||||
m_confirm_title->Show();
|
||||
m_confirm_title->SetLabel(m_override_undone_str);
|
||||
m_after_map_text->SetLabel(_L("After overwriting"));
|
||||
}
|
||||
update_map_when_change_map_mode();
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::update_map_when_change_map_mode() {
|
||||
if (m_map_mode == MapModeEnum::ColorMap) {
|
||||
m_cur_colors_in_thumbnail = m_back_cur_colors_in_thumbnail;
|
||||
} else if (m_map_mode == MapModeEnum::Override) {
|
||||
auto ams_colors = wxGetApp().preset_bundle->get_ams_colors();
|
||||
for (size_t i = 0; i < m_preview_colors_in_thumbnail.size(); i++) {
|
||||
if (i < ams_colors.size()) {
|
||||
auto color_str = ams_colors[i];
|
||||
if (color_str.front() == '#') {
|
||||
color_str = color_str.substr(1);
|
||||
}
|
||||
if (color_str.size() == 6) {
|
||||
color_str += "FF";
|
||||
}
|
||||
auto result = AmsTray::decode_color(color_str);
|
||||
m_cur_colors_in_thumbnail[i] = result;
|
||||
}
|
||||
else {
|
||||
//todo:give warning
|
||||
m_cur_colors_in_thumbnail[i] = m_cur_colors_in_thumbnail[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
update_thumbnail_data_accord_plate_index(false);
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::update_when_change_map_mode(wxCommandEvent &e)
|
||||
{
|
||||
int win_id = e.GetId();
|
||||
|
@ -410,24 +427,11 @@ void SyncAmsInfoDialog::update_panel_status(PageType page)
|
|||
void SyncAmsInfoDialog::show_color_panel(bool flag, bool update_layout)
|
||||
{
|
||||
//show_sizer(m_plate_combox_sizer, flag);
|
||||
if (m_sizer_line) {
|
||||
show_sizer(m_sizer_line, flag);
|
||||
}
|
||||
m_two_thumbnail_panel->Show(flag);
|
||||
|
||||
m_filament_panel->Show(flag); // empty_project
|
||||
|
||||
m_attention_text->Show(flag);
|
||||
m_tip_text->Show(flag);
|
||||
m_more_setting_tips->Show(flag);
|
||||
|
||||
if (!flag) {
|
||||
show_sizer(m_append_color_sizer, false);
|
||||
show_sizer(m_merge_color_sizer, false);
|
||||
}
|
||||
else {
|
||||
update_more_setting();
|
||||
}
|
||||
show_advanced_settings(flag);
|
||||
m_confirm_title->Show(flag);
|
||||
m_are_you_sure_title->Show(flag);
|
||||
if (flag) {
|
||||
|
@ -4000,23 +4004,27 @@ void SyncAmsInfoDialog::reset_and_sync_ams_list()
|
|||
// reset_ams_material();//show "-"
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::clone_thumbnail_data()
|
||||
void SyncAmsInfoDialog::clone_thumbnail_data(bool allow_clone_ams_color)
|
||||
{
|
||||
// record preview_colors
|
||||
MaterialHash::iterator iter = m_materialList.begin();
|
||||
if (m_preview_colors_in_thumbnail.size() != m_materialList.size()) { m_preview_colors_in_thumbnail.resize(m_materialList.size()); }
|
||||
while (iter != m_materialList.end()) {
|
||||
int id = iter->first;
|
||||
Material * item = iter->second;
|
||||
auto m = item->item;
|
||||
m_preview_colors_in_thumbnail[id] = m->m_material_coloul;
|
||||
if (item->id < m_cur_colors_in_thumbnail.size()) {
|
||||
m_cur_colors_in_thumbnail[item->id] = m->m_ams_coloul;
|
||||
} else { // exist empty or unrecognized type ams in machine
|
||||
m_cur_colors_in_thumbnail.resize(item->id + 1);
|
||||
m_cur_colors_in_thumbnail[item->id] = m->m_ams_coloul;
|
||||
if (m_preview_colors_in_thumbnail.size() != m_materialList.size()) {
|
||||
m_preview_colors_in_thumbnail.resize(m_materialList.size());
|
||||
}
|
||||
if (allow_clone_ams_color) {
|
||||
while (iter != m_materialList.end()) {
|
||||
int id = iter->first;
|
||||
Material *item = iter->second;
|
||||
auto m = item->item;
|
||||
m_preview_colors_in_thumbnail[id] = m->m_material_coloul;
|
||||
if (item->id < m_cur_colors_in_thumbnail.size()) {
|
||||
m_cur_colors_in_thumbnail[item->id] = m->m_ams_coloul;
|
||||
} else { // exist empty or unrecognized type ams in machine
|
||||
m_cur_colors_in_thumbnail.resize(item->id + 1);
|
||||
m_cur_colors_in_thumbnail[item->id] = m->m_ams_coloul;
|
||||
}
|
||||
iter++;
|
||||
}
|
||||
iter++;
|
||||
}
|
||||
// copy data
|
||||
auto &data = m_cur_input_thumbnail_data;
|
||||
|
@ -4125,16 +4133,44 @@ void SyncAmsInfoDialog::final_deal_edge_pixels_data(ThumbnailData &data)
|
|||
void SyncAmsInfoDialog::updata_thumbnail_data_after_connected_printer()
|
||||
{
|
||||
updata_ui_data_after_connected_printer();
|
||||
update_thumbnail_data_accord_plate_index(true);
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::show_advanced_settings(bool flag) {
|
||||
m_more_setting_tips->Show(flag);
|
||||
if (!flag) {
|
||||
show_sizer(m_append_color_sizer, false);
|
||||
show_sizer(m_merge_color_sizer, false);
|
||||
} else {
|
||||
update_more_setting();
|
||||
}
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::show_ams_controls(bool flag)
|
||||
{
|
||||
m_filament_panel->Show(flag);
|
||||
m_attention_text->Show(flag);
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::update_thumbnail_data_accord_plate_index(bool allow_clone_ams_color)
|
||||
{
|
||||
if (m_map_mode == MapModeEnum::Override) {
|
||||
show_ams_controls(false);
|
||||
show_advanced_settings(false);
|
||||
} else if (m_map_mode == MapModeEnum::ColorMap) {
|
||||
show_ams_controls(true);
|
||||
show_advanced_settings(true);
|
||||
}
|
||||
// change thumbnail_data
|
||||
ThumbnailData &input_data = m_specify_plate_idx == -1 ? m_plater->get_partplate_list().get_curr_plate()->thumbnail_data :
|
||||
m_plater->get_partplate_list().get_plate(m_specify_plate_idx)->thumbnail_data;
|
||||
ThumbnailData &no_light_data = m_specify_plate_idx == -1 ? m_plater->get_partplate_list().get_curr_plate()->no_light_thumbnail_data :
|
||||
m_plater->get_partplate_list().get_plate(m_specify_plate_idx)->no_light_thumbnail_data;
|
||||
if (input_data.width == 0 || input_data.height == 0 || no_light_data.width == 0 || no_light_data.height == 0) { wxGetApp().plater()->update_all_plate_thumbnails(false); }
|
||||
unify_deal_thumbnail_data(input_data, no_light_data);
|
||||
unify_deal_thumbnail_data(input_data, no_light_data, allow_clone_ams_color);
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::unify_deal_thumbnail_data(ThumbnailData &input_data, ThumbnailData &no_light_data)
|
||||
void SyncAmsInfoDialog::unify_deal_thumbnail_data(ThumbnailData &input_data, ThumbnailData &no_light_data, bool allow_clone_ams_color)
|
||||
{
|
||||
if (input_data.width == 0 || input_data.height == 0 || no_light_data.width == 0 || no_light_data.height == 0) {
|
||||
BOOST_LOG_TRIVIAL(error) << "SyncAmsInfoDialog::no_light_data is empty,error";
|
||||
|
@ -4142,7 +4178,7 @@ void SyncAmsInfoDialog::unify_deal_thumbnail_data(ThumbnailData &input_data, Thu
|
|||
}
|
||||
m_cur_input_thumbnail_data = input_data;
|
||||
m_cur_no_light_thumbnail_data = no_light_data;
|
||||
clone_thumbnail_data();
|
||||
clone_thumbnail_data(allow_clone_ams_color);
|
||||
MaterialHash::iterator iter = m_materialList.begin();
|
||||
bool is_connect_printer = true;
|
||||
while (iter != m_materialList.end()) {
|
||||
|
@ -4223,25 +4259,6 @@ void SyncAmsInfoDialog::change_default_normal(int old_filament_id, wxColour temp
|
|||
}
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::update_page_turn_state(bool 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 ((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);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void SyncAmsInfoDialog::sys_color_changed()
|
||||
{
|
||||
if (wxGetApp().dark_mode()) {
|
||||
|
@ -4254,8 +4271,6 @@ void SyncAmsInfoDialog::sys_color_changed()
|
|||
m_rename_button->Refresh();
|
||||
}
|
||||
|
||||
|
||||
|
||||
wxString SyncAmsInfoDialog::format_bed_name(std::string plate_name)
|
||||
{
|
||||
wxString name;
|
||||
|
|
|
@ -124,6 +124,7 @@ protected:
|
|||
ThumbnailData m_preview_thumbnail_data; // when ams map change
|
||||
std::vector<wxColour> m_preview_colors_in_thumbnail;
|
||||
std::vector<wxColour> m_cur_colors_in_thumbnail;
|
||||
std::vector<wxColour> m_back_cur_colors_in_thumbnail;
|
||||
std::vector<bool> m_edge_pixels;
|
||||
|
||||
StaticBox * m_two_image_panel{nullptr};
|
||||
|
@ -193,15 +194,16 @@ public:
|
|||
void on_set_finish_mapping(wxCommandEvent &evt);
|
||||
void on_print_job_cancel(wxCommandEvent &evt);
|
||||
void reset_and_sync_ams_list();
|
||||
void clone_thumbnail_data();
|
||||
void clone_thumbnail_data(bool allow_clone_ams_color);
|
||||
void record_edge_pixels_data();
|
||||
wxColour adjust_color_for_render(const wxColour &color);
|
||||
void final_deal_edge_pixels_data(ThumbnailData &data);
|
||||
void updata_thumbnail_data_after_connected_printer();
|
||||
void unify_deal_thumbnail_data(ThumbnailData &input_data, ThumbnailData &no_light_data);
|
||||
void show_ams_controls(bool flag);
|
||||
void show_advanced_settings(bool flag);
|
||||
void update_thumbnail_data_accord_plate_index(bool allow_clone_ams_color);
|
||||
void unify_deal_thumbnail_data(ThumbnailData &input_data, ThumbnailData &no_light_data,bool allow_clone_ams_color);
|
||||
void change_default_normal(int old_filament_id, wxColour temp_ams_color);
|
||||
void set_default_from_sdcard();
|
||||
void update_page_turn_state(bool show);
|
||||
void on_timer(wxTimerEvent &event);
|
||||
void on_selection_changed(wxCommandEvent &event);
|
||||
void update_flow_cali_check(MachineObject *obj);
|
||||
|
@ -284,6 +286,7 @@ private:
|
|||
wxBoxSizer *create_sizer_thumbnail(wxButton *image_button, bool left);
|
||||
void update_when_change_plate(int);
|
||||
void update_when_change_map_mode(int);
|
||||
void update_map_when_change_map_mode();
|
||||
void update_when_change_map_mode(wxCommandEvent &e);
|
||||
void update_panel_status(PageType page);
|
||||
void show_color_panel(bool,bool update_layout = true);
|
||||
|
@ -301,6 +304,7 @@ private:
|
|||
Button * m_button_ok = nullptr;
|
||||
Button * m_button_cancel = nullptr;
|
||||
|
||||
wxStaticText *m_after_map_text{nullptr};
|
||||
wxStaticText *m_attention_text{nullptr};
|
||||
wxStaticText* m_tip_text{nullptr};
|
||||
//wxStaticText *m_specify_color_cluster_title = nullptr;
|
||||
|
@ -320,7 +324,6 @@ private:
|
|||
|
||||
// wxBoxSizer * m_plate_combox_sizer = nullptr;
|
||||
wxBoxSizer * m_mode_combox_sizer = nullptr;
|
||||
wxBoxSizer * m_sizer_line = nullptr;
|
||||
//wxStaticText * m_printer_title = nullptr;
|
||||
wxStaticText * m_printer_device_name = nullptr;
|
||||
wxStaticText * m_printer_is_map_title = nullptr;
|
||||
|
|
Loading…
Reference in New Issue