From 54c90ee9488be6cac3df4d9fb6231fbd828a7059 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Fri, 22 Jun 2018 16:13:34 +0200 Subject: [PATCH] Updated PrintConfig default values for machine limits + fixed incorrect default value setting for the TextCtrl --- xs/src/libslic3r/PrintConfig.cpp | 28 ++++++++++++++-------------- xs/src/slic3r/GUI/Field.cpp | 32 +++++++++++++++++++++++--------- xs/src/slic3r/GUI/Field.hpp | 1 + xs/src/slic3r/GUI/Tab.cpp | 4 ++-- xs/src/slic3r/GUI/Tab.hpp | 2 +- 5 files changed, 41 insertions(+), 26 deletions(-) diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index 68fc2da24..a59a835f4 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -861,7 +861,7 @@ PrintConfigDef::PrintConfigDef() def->tooltip = L("Set silent mode for the G-code flavor"); def->default_value = new ConfigOptionBool(true); - const int machine_linits_opt_width = 70; + const int machine_limits_opt_width = 70; { struct AxisDefault { std::string name; @@ -871,10 +871,10 @@ PrintConfigDef::PrintConfigDef() }; std::vector axes { // name, max_feedrate, max_acceleration, max_jerk - { "x", { 200., 200. }, { 1000., 1000. }, { 10., 10. } }, - { "y", { 200., 200. }, { 1000., 1000. }, { 10., 10. } }, - { "z", { 12., 12. }, { 200., 200. }, { 0.4, 0.4 } }, - { "e", { 120., 120. }, { 5000., 5000. }, { 2.5, 2.5 } } + { "x", { 500., 200. }, { 9000., 1000. }, { 10., 10. } }, + { "y", { 500., 200. }, { 9000., 1000. }, { 10., 10. } }, + { "z", { 12., 12. }, { 500., 200. }, { 0.2, 0.4 } }, + { "e", { 120., 120. }, { 10000., 5000. }, { 2.5, 2.5 } } }; for (const AxisDefault &axis : axes) { std::string axis_upper = boost::to_upper_copy(axis.name); @@ -885,7 +885,7 @@ PrintConfigDef::PrintConfigDef() def->tooltip = (boost::format(L("Maximum feedrate of the %1% axis")) % axis_upper).str(); def->sidetext = L("mm/s"); def->min = 0; - def->width = machine_linits_opt_width; + def->width = machine_limits_opt_width; def->default_value = new ConfigOptionFloats(axis.max_feedrate); // Add the machine acceleration limits for XYZE axes (M201) def = this->add("machine_max_acceleration_" + axis.name, coFloats); @@ -894,7 +894,7 @@ PrintConfigDef::PrintConfigDef() def->tooltip = (boost::format(L("Maximum acceleration of the %1% axis")) % axis_upper).str(); def->sidetext = L("mm/s²"); def->min = 0; - def->width = machine_linits_opt_width; + def->width = machine_limits_opt_width; def->default_value = new ConfigOptionFloats(axis.max_acceleration); // Add the machine jerk limits for XYZE axes (M205) def = this->add("machine_max_jerk_" + axis.name, coFloats); @@ -903,7 +903,7 @@ PrintConfigDef::PrintConfigDef() def->tooltip = (boost::format(L("Maximum jerk of the %1% axis")) % axis_upper).str(); def->sidetext = L("mm/s"); def->min = 0; - def->width = machine_linits_opt_width; + def->width = machine_limits_opt_width; def->default_value = new ConfigOptionFloats(axis.max_jerk); } } @@ -915,7 +915,7 @@ PrintConfigDef::PrintConfigDef() def->tooltip = L("Minimum feedrate when extruding") + " (M205 S)"; def->sidetext = L("mm/s"); def->min = 0; - def->width = machine_linits_opt_width; + def->width = machine_limits_opt_width; def->default_value = new ConfigOptionFloats{ 0., 0. }; // M205 T... [mm/sec] @@ -925,7 +925,7 @@ PrintConfigDef::PrintConfigDef() def->tooltip = L("Minimum travel feedrate") + " (M205 T)"; def->sidetext = L("mm/s"); def->min = 0; - def->width = machine_linits_opt_width; + def->width = machine_limits_opt_width; def->default_value = new ConfigOptionFloats{ 0., 0. }; // M204 S... [mm/sec^2] @@ -935,8 +935,8 @@ PrintConfigDef::PrintConfigDef() def->tooltip = L("Maximum acceleration when extruding") + " (M204 S)"; def->sidetext = L("mm/s²"); def->min = 0; - def->width = machine_linits_opt_width; - def->default_value = new ConfigOptionFloats(1250., 1250.); + def->width = machine_limits_opt_width; + def->default_value = new ConfigOptionFloats(1500., 1250.); // M204 T... [mm/sec^2] def = this->add("machine_max_acceleration_retracting", coFloats); @@ -945,8 +945,8 @@ PrintConfigDef::PrintConfigDef() def->tooltip = L("Maximum acceleration when retracting") + " (M204 T)"; def->sidetext = L("mm/s²"); def->min = 0; - def->width = machine_linits_opt_width; - def->default_value = new ConfigOptionFloats(1250., 1250.); + def->width = machine_limits_opt_width; + def->default_value = new ConfigOptionFloats(1500., 1250.); def = this->add("max_fan_speed", coInts); def->label = L("Max"); diff --git a/xs/src/slic3r/GUI/Field.cpp b/xs/src/slic3r/GUI/Field.cpp index ba59225f6..57420a411 100644 --- a/xs/src/slic3r/GUI/Field.cpp +++ b/xs/src/slic3r/GUI/Field.cpp @@ -35,6 +35,22 @@ namespace Slic3r { namespace GUI { set_undo_bitmap(&bmp); set_undo_to_sys_bitmap(&bmp); + switch (m_opt.type) + { + case coPercents: + case coFloats: + case coStrings: + case coBools: + case coInts: { + auto tag_pos = m_opt_id.find("#"); + if (tag_pos != std::string::npos) + m_opt_idx = stoi(m_opt_id.substr(tag_pos + 1, m_opt_id.size())); + break; + } + default: + break; + } + BUILD(); } @@ -151,10 +167,10 @@ namespace Slic3r { namespace GUI { case coFloat: { double val = m_opt.type == coFloats ? - static_cast(m_opt.default_value)->get_at(0) : + static_cast(m_opt.default_value)->get_at(m_opt_idx) : m_opt.type == coFloat ? m_opt.default_value->getFloat() : - static_cast(m_opt.default_value)->get_at(0); + static_cast(m_opt.default_value)->get_at(m_opt_idx); text_value = double_to_string(val); break; } @@ -164,10 +180,8 @@ namespace Slic3r { namespace GUI { case coStrings: { const ConfigOptionStrings *vec = static_cast(m_opt.default_value); - if (vec == nullptr || vec->empty()) break; - if (vec->size() > 1) - break; - text_value = vec->values.at(0); + if (vec == nullptr || vec->empty()) break; //for the case of empty default value + text_value = vec->get_at(m_opt_idx); break; } default: @@ -249,7 +263,7 @@ void CheckBox::BUILD() { bool check_value = m_opt.type == coBool ? m_opt.default_value->getBool() : m_opt.type == coBools ? - static_cast(m_opt.default_value)->values.at(0) : + static_cast(m_opt.default_value)->get_at(m_opt_idx) : false; auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size); @@ -408,7 +422,7 @@ void Choice::set_selection() break; } case coStrings:{ - text_value = static_cast(m_opt.default_value)->values.at(0); + text_value = static_cast(m_opt.default_value)->get_at(m_opt_idx); size_t idx = 0; for (auto el : m_opt.enum_values) @@ -572,7 +586,7 @@ void ColourPicker::BUILD() if (m_opt.height >= 0) size.SetHeight(m_opt.height); if (m_opt.width >= 0) size.SetWidth(m_opt.width); - wxString clr(static_cast(m_opt.default_value)->values.at(0)); + wxString clr(static_cast(m_opt.default_value)->get_at(m_opt_idx)); auto temp = new wxColourPickerCtrl(m_parent, wxID_ANY, clr, wxDefaultPosition, size); // // recast as a wxWindow to fit the calling convention diff --git a/xs/src/slic3r/GUI/Field.hpp b/xs/src/slic3r/GUI/Field.hpp index fb6116b79..db8d2a408 100644 --- a/xs/src/slic3r/GUI/Field.hpp +++ b/xs/src/slic3r/GUI/Field.hpp @@ -95,6 +95,7 @@ public: /// Copy of ConfigOption for deduction purposes const ConfigOptionDef m_opt {ConfigOptionDef()}; const t_config_option_key m_opt_id;//! {""}; + int m_opt_idx = 0; /// Sets a value for this control. /// subclasses should overload with a specific version diff --git a/xs/src/slic3r/GUI/Tab.cpp b/xs/src/slic3r/GUI/Tab.cpp index 170388434..4935d8dcd 100644 --- a/xs/src/slic3r/GUI/Tab.cpp +++ b/xs/src/slic3r/GUI/Tab.cpp @@ -1734,7 +1734,7 @@ void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::s optgroup->append_line(line); } -PageShp TabPrinter::create_kinematics_page() +PageShp TabPrinter::build_kinematics_page() { auto page = add_options_page(_(L("Machine limits")), "cog.png", true); @@ -1806,7 +1806,7 @@ void TabPrinter::build_extruder_pages() } if (existed_page < n_before_extruders && is_marlin_flavor){ - auto page = create_kinematics_page(); + auto page = build_kinematics_page(); m_pages.insert(m_pages.begin() + n_before_extruders, page); } diff --git a/xs/src/slic3r/GUI/Tab.hpp b/xs/src/slic3r/GUI/Tab.hpp index 90bb40b9e..4906b8d1e 100644 --- a/xs/src/slic3r/GUI/Tab.hpp +++ b/xs/src/slic3r/GUI/Tab.hpp @@ -333,7 +333,7 @@ public: void update() override; void update_serial_ports(); void extruders_count_changed(size_t extruders_count); - PageShp create_kinematics_page(); + PageShp build_kinematics_page(); void build_extruder_pages(); void on_preset_loaded() override; void init_options_list() override;