diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index b5bf2e99f..e6c7a33de 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3430,7 +3430,7 @@ bool Plater::priv::restart_background_process(unsigned int state) void Plater::priv::export_gcode(fs::path output_path, bool output_path_on_removable_media, PrintHostJob upload_job) { wxCHECK_RET(!(output_path.empty() && upload_job.empty()), "export_gcode: output_path and upload_job empty"); - + if (model.objects.empty()) return; @@ -4082,11 +4082,37 @@ void Plater::priv::on_slicing_update(SlicingStatusEvent &evt) // Avoid a race condition return; } - -// this->statusbar()->set_progress(evt.status.percent); -// this->statusbar()->set_status_text(_(evt.status.text) + wxString::FromUTF8("…")); notification_manager->set_slicing_progress_percentage(evt.status.text, (float)evt.status.percent / 100.0f); } + + // Check template filaments and add warning + // This is more convinient to do here than in slicing backend, so it happens on "Slicing complete". + if (evt.status.percent >= 100 && this->printer_technology == ptFFF) { + size_t templ_cnt = 0; + const auto& preset_bundle = wxGetApp().preset_bundle; + std::string names; + for (const auto& extruder_filaments : preset_bundle->extruders_filaments) { + const Preset* preset = extruder_filaments.get_selected_preset(); + if (preset && preset->vendor && preset->vendor->templates_profile) { + names += "\n" + preset->name; + templ_cnt++; + } + } + if (templ_cnt > 0) { + const std::string message_notif = GUI::format("%1%\n%2%\n%3%" + , _L_PLURAL("You are using template filament preset.", "You are using template filament presets.", templ_cnt) + , _u8L("Please note that template presets are not customized for specific printer and should only be used as a starting point for creating your own user presets.") + , names); + // warning dialog proccessing cuts text at first '/n' - pass the text without new lines (and without filament names). + const std::string message_dial = GUI::format("%1% %2%" + , _L_PLURAL("You are using template filament preset.", "You are using template filament presets.", templ_cnt) + , _u8L("Please note that template presets are not customized for specific printer and should only be used as a starting point for creating your own user presets.")); + BOOST_LOG_TRIVIAL(warning) << message_notif; + notification_manager->push_slicing_warning_notification(message_notif, false, 0, 0); + add_warning({ PrintStateBase::WarningLevel::CRITICAL, true, message_dial, 0}, 0); + } + } + if (evt.status.flags & (PrintBase::SlicingStatus::RELOAD_SCENE | PrintBase::SlicingStatus::RELOAD_SLA_SUPPORT_POINTS)) { switch (this->printer_technology) { case ptFFF: diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 25beb87bc..ac189f826 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -644,13 +644,7 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset edit_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent) { - // In a case of a physical printer, for its editing open PhysicalPrinterDialog - if (m_type == Preset::TYPE_PRINTER -#ifdef __linux__ - // To edit extruder color from the sidebar - || m_type == Preset::TYPE_FILAMENT -#endif //__linux__ - ) + if (m_type == Preset::TYPE_PRINTER || m_type == Preset::TYPE_FILAMENT) show_edit_menu(); else switch_to_tab(); @@ -784,15 +778,18 @@ void PlaterPresetComboBox::show_edit_menu() append_menu_item(menu, wxID_ANY, _L("Edit preset"), "", [this](wxCommandEvent&) { this->switch_to_tab(); }, "cog", menu, []() { return true; }, wxGetApp().plater()); -#ifdef __linux__ - // To edit extruder color from the sidebar if (m_type == Preset::TYPE_FILAMENT) { +#ifdef __linux__ + // To edit extruder color from the sidebar append_menu_item(menu, wxID_ANY, _L("Change extruder color"), "", [this](wxCommandEvent&) { this->change_extruder_color(); }, "funnel", menu, []() { return true; }, wxGetApp().plater()); +#endif //__linux__ + append_menu_item(menu, wxID_ANY, _L("Show/Hide template presets"), "", + [this](wxCommandEvent&) { wxGetApp().open_preferences("no_templates", "General"); }, "spool", menu, []() { return true; }, wxGetApp().plater()); + wxGetApp().plater()->PopupMenu(menu); return; } -#endif //__linux__ if (this->is_selected_physical_printer()) { append_menu_item(menu, wxID_ANY, _L("Edit physical printer"), "",