diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index deb799436..41b39f083 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -147,11 +147,26 @@ BedType PartPlate::get_bed_type() const return BedType::btPC; } -void PartPlate::set_bed_type(BedType bed_type) +void PartPlate::set_bed_type(BedType bed_type, bool& same_as_global) { + // should be called in GUI context + assert(m_plater != nullptr); + + std::string bed_type_key = "curr_bed_type"; + m_config.set_key_value("curr_bed_type", new ConfigOptionEnum(bed_type)); - if (m_plater) + if (m_plater) { m_plater->schedule_background_process(); + DynamicConfig& proj_cfg = wxGetApp().preset_bundle->project_config; + if (proj_cfg.has(bed_type_key)) { + std::string bed_type_key = "curr_bed_type"; + BedType global_bed_type = proj_cfg.opt_enum(bed_type_key); + same_as_global = bed_type == global_bed_type; + return; + } + } + + same_as_global = false; } void PartPlate::reset_bed_type() diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index 9fddc85c6..960171074 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -207,7 +207,7 @@ public: void clear(bool clear_sliced_result = true); BedType get_bed_type() const; - void set_bed_type(BedType); + void set_bed_type(BedType, bool& same_as_global); void reset_bed_type(); DynamicPrintConfig* config() { return &m_config; } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index c94d5458d..8b6288d3c 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -10585,8 +10585,9 @@ int Plater::select_plate_by_hover_id(int hover_id, bool right_click) SetBedTypeDialog dlg(this, wxID_ANY, _L("Select bed type")); dlg.sync_bed_type(p->partplate_list.get_curr_plate()->get_bed_type()); dlg.Bind(EVT_SET_BED_TYPE_CONFIRM, [this, plate_index](wxCommandEvent& e) { + bool same_as_global = false; auto type = (BedType)(e.GetInt()); - p->partplate_list.get_curr_plate()->set_bed_type(type); + p->partplate_list.get_curr_plate()->set_bed_type(type, same_as_global); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("select bed type %1% for plate %2% at plate side")%type %plate_index; }); dlg.ShowModal();