ENH: remember the filament_opts and limit minimum flushing volumes

Change-Id: I7b2538fcaf5b5fc5e4f86191207de981bd766a89
(cherry picked from commit 392be8d2a4e9465fffc4018da77c6ee00ad46ade)
This commit is contained in:
zhimin.zeng 2022-10-25 18:47:58 +08:00 committed by Lane.Wei
parent eb80720e75
commit 13df80ffb7
8 changed files with 99 additions and 3 deletions

View file

@ -2099,6 +2099,7 @@ bool GUI_App::on_init_inner()
BOOST_LOG_TRIVIAL(info) << "loading systen presets...";
preset_bundle = new PresetBundle();
preset_bundle->load_default_setting_from_app_config(*app_config);
// just checking for existence of Slic3r::data_dir is not enough : it may be an empty directory
// supplied as argument to --datadir; in that case we should still run the wizard

View file

@ -663,6 +663,7 @@ Sidebar::Sidebar(Plater *parent)
#if !BBL_RELEASE_TO_PUBLIC
(project_config.option<ConfigOptionFloat>("flush_multiplier"))->set(new ConfigOptionFloat(dlg.get_flush_multiplier()));
#endif
wxGetApp().preset_bundle->update_filament_info_to_app_config(*wxGetApp().app_config);
wxGetApp().plater()->update_project_dirty_from_presets();
wxPostEvent(parent, SimpleEvent(EVT_SCHEDULE_BACKGROUND_PROCESS, parent));
@ -685,6 +686,7 @@ Sidebar::Sidebar(Plater *parent)
wxGetApp().preset_bundle->set_num_filaments(filament_count, new_color);
wxGetApp().plater()->on_filaments_change(filament_count);
wxGetApp().get_tab(Preset::TYPE_PRINT)->update();
wxGetApp().preset_bundle->update_filament_info_to_app_config(*wxGetApp().app_config);
});
p->m_bpButton_add_filament = add_btn;
@ -709,6 +711,7 @@ Sidebar::Sidebar(Plater *parent)
wxGetApp().preset_bundle->set_num_filaments(filament_count);
wxGetApp().plater()->on_filaments_change(filament_count);
wxGetApp().get_tab(Preset::TYPE_PRINT)->update();
wxGetApp().preset_bundle->update_filament_info_to_app_config(*wxGetApp().app_config);
});
p->m_bpButton_del_filament = del_btn;
@ -1288,6 +1291,7 @@ void Sidebar::sync_ams_list()
for (auto &c : p->combos_filament)
c->update();
wxGetApp().get_tab(Preset::TYPE_PRINT)->update();
wxGetApp().preset_bundle->update_filament_info_to_app_config(*wxGetApp().app_config);
}
ObjectList* Sidebar::obj_list()
@ -5200,6 +5204,7 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt)
if (preset_type == Preset::TYPE_FILAMENT) {
wxGetApp().preset_bundle->set_filament_preset(idx, preset_name);
wxGetApp().plater()->update_project_dirty_from_presets();
wxGetApp().preset_bundle->update_filament_info_to_app_config(*wxGetApp().app_config);
}
bool select_preset = !combo->selection_is_changed_according_to_physical_printers();
@ -7084,6 +7089,7 @@ void Plater::load_project(wxString const& filename2,
reset_project_dirty_initial_presets();
update_project_dirty_from_presets();
wxGetApp().preset_bundle->update_filament_info_to_app_config(*wxGetApp().app_config);
// if res is empty no data has been loaded
if (!res.empty() && (load_restore || !(strategy & LoadStrategy::Silence))) {

View file

@ -670,6 +670,7 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset
//wxGetApp().get_tab(Preset::TYPE_PRINTER)->load_config(cfg_new);
cfg->apply(cfg_new);
wxGetApp().plater()->update_project_dirty_from_presets();
wxGetApp().preset_bundle->update_filament_info_to_app_config(*wxGetApp().app_config);
update();
wxGetApp().plater()->on_config_change(cfg_new);

View file

@ -11,6 +11,8 @@
#include <wx/sizer.h>
using namespace Slic3r::GUI;
int scale(const int val) { return val * Slic3r::GUI::wxGetApp().em_unit() / 10; }
int ITEM_WIDTH() { return scale(30); }
static const wxColour text_color = wxColour(107, 107, 107, 255);
@ -253,7 +255,7 @@ WipingPanel::WipingPanel(wxWindow* parent, const std::vector<float>& matrix, con
for (unsigned int j = 0; j < m_number_of_extruders; ++j) {
#ifdef _WIN32
wxTextCtrl* text = new wxTextCtrl(m_page_advanced, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(ITEM_WIDTH(), -1), wxTE_CENTER | wxBORDER_NONE);
wxTextCtrl* text = new wxTextCtrl(m_page_advanced, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(ITEM_WIDTH(), -1), wxTE_CENTER | wxBORDER_NONE | wxTE_PROCESS_ENTER);
update_ui(text);
edit_boxes.back().push_back(text);
#else
@ -272,12 +274,27 @@ WipingPanel::WipingPanel(wxWindow* parent, const std::vector<float>& matrix, con
wxString str = edit_boxes[i][j]->GetValue();
int value = wxAtoi(str);
if (value > MAX_FLUSH_VALUE) {
value = MAX_FLUSH_VALUE;
str = wxString::Format(("%d"), MAX_FLUSH_VALUE);
edit_boxes[i][j]->SetValue(str);
}
});
auto on_apply_text_modify = [this, i, j](wxEvent &e) {
wxString str = edit_boxes[i][j]->GetValue();
int value = wxAtoi(str);
if (value < int(m_extra_flush_volume)) {
wxGetApp().plater();
str = wxString::Format(("%d"), int(m_extra_flush_volume));
edit_boxes[i][j]->SetValue(str);
MessageDialog dlg(nullptr,
_L("The flush volume is less than the minimum value and will be automatically set to the minimum value."),
_L("Warning"), wxICON_WARNING | wxOK);
dlg.ShowModal();
}
};
edit_boxes[i][j]->Bind(wxEVT_TEXT_ENTER, on_apply_text_modify);
edit_boxes[i][j]->Bind(wxEVT_KILL_FOCUS, on_apply_text_modify);
}
}
}