mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-30 20:22:00 +08:00
Further polishing the gcode/bgcode error logic
This commit is contained in:
parent
0504747f26
commit
f238f56b5b
@ -6711,6 +6711,32 @@ void Plater::apply_cut_object_to_model(size_t obj_idx, const ModelObjectPtrs& ne
|
||||
w.wait_for_idle();
|
||||
}
|
||||
|
||||
|
||||
|
||||
wxString check_binary_vs_ascii_gcode_extension(PrinterTechnology pt, const std::string& ext, bool binary_output)
|
||||
{
|
||||
wxString err_out;
|
||||
if (pt == ptFFF) {
|
||||
const bool binary_extension = (ext == ".bgcode" || ext == ".bgc");
|
||||
const bool ascii_extension = (ext == ".gcode" || ext == ".g" || ext == ".gco");
|
||||
if (binary_output && ascii_extension) {
|
||||
// TRN The placeholder %1% is the file extension the user has selected.
|
||||
err_out = format_wxstr(_L("Cannot save binary G-code with %1% extension.\n\n"
|
||||
"Use <a href=%2%>a different extension</a> or disable <a href=%3%>binary G-code export</a> "
|
||||
"in Print Settings."), ext, "output_filename_format;print", "gcode_binary;print");
|
||||
}
|
||||
if (!binary_output && binary_extension) {
|
||||
// TRN The placeholder %1% is the file extension the user has selected.
|
||||
err_out = format_wxstr(_L("Cannot save ASCII G-code with %1% extension.\n\n"
|
||||
"Use <a href=%2%>a different extension</a> or enable <a href=%3%>binary G-code export</a> "
|
||||
"in Print Settings."), ext, "output_filename_format;print", "gcode_binary;print");
|
||||
}
|
||||
}
|
||||
return err_out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Plater::export_gcode(bool prefer_removable)
|
||||
{
|
||||
if (p->model.objects.empty())
|
||||
@ -6775,26 +6801,8 @@ void Plater::export_gcode(bool prefer_removable)
|
||||
_L("The following characters are not allowed by a FAT file system:") + " <>:/\\|?*\"";
|
||||
return true;
|
||||
}
|
||||
if (printer_technology() == ptFFF) {
|
||||
const bool binary_output = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("gcode_binary");
|
||||
const bool binary_extension = (ext == ".bgcode" || ext == ".bgc");
|
||||
const bool ascii_extension = (ext == ".gcode" || ext == ".g" || ext == ".gco");
|
||||
if (binary_output && ascii_extension) {
|
||||
// TRN The placeholder %1% is the file extension the user has selected.
|
||||
err_out = format_wxstr(_L("Cannot save binary G-code with %1% extension.\n\n"
|
||||
"Use <a href=%2%>a different extension</a> or disable <a href=%3%>binary G-code export</a> "
|
||||
"in Print Settings."), ext, "output_filename_format;print", "gcode_binary;print");
|
||||
return true;
|
||||
}
|
||||
if (! binary_output && binary_extension) {
|
||||
// TRN The placeholder %1% is the file extension the user has selected.
|
||||
err_out = format_wxstr(_L("Cannot save ASCII G-code with %1% extension.\n\n"
|
||||
"Use <a href=%2%>a different extension</a> or enable <a href=%3%>binary G-code export</a> "
|
||||
"in Print Settings."), ext, "output_filename_format;print", "gcode_binary;print");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
err_out = check_binary_vs_ascii_gcode_extension(printer_technology(), ext, wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("gcode_binary"));
|
||||
return !err_out.IsEmpty();
|
||||
};
|
||||
|
||||
wxString error_str;
|
||||
@ -7361,6 +7369,17 @@ void Plater::send_gcode()
|
||||
|
||||
PrintHostSendDialog dlg(default_output_file, upload_job.printhost->get_post_upload_actions(), groups, storage_paths, storage_names);
|
||||
if (dlg.ShowModal() == wxID_OK) {
|
||||
|
||||
{
|
||||
const std::string ext = boost::algorithm::to_lower_copy(dlg.filename().extension().string());
|
||||
const bool binary_output = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("gcode_binary");
|
||||
const wxString error_str = check_binary_vs_ascii_gcode_extension(printer_technology(), ext, binary_output);
|
||||
if (! error_str.IsEmpty()) {
|
||||
ErrorDialog(this, error_str, t_kill_focus([](const std::string& key) -> void { wxGetApp().sidebar().jump_to_option(key); })).ShowModal();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
upload_job.upload_data.upload_path = dlg.filename();
|
||||
upload_job.upload_data.post_action = dlg.post_action();
|
||||
upload_job.upload_data.group = dlg.group();
|
||||
|
@ -106,43 +106,10 @@ PrintHostSendDialog::PrintHostSendDialog(const fs::path &path, PrintHostPostUplo
|
||||
m_valid_suffix = recent_path.substr(extension_start);
|
||||
// .gcode suffix control
|
||||
auto validate_path = [this](const wxString &path) -> bool {
|
||||
|
||||
if (wxGetApp().plater()->printer_technology() == ptFFF) {
|
||||
const std::string ext = boost::algorithm::to_lower_copy(into_path(path).extension().string());
|
||||
const bool binary_output = wxGetApp().preset_bundle->prints.get_edited_preset().config.opt_bool("gcode_binary");
|
||||
const bool binary_extension = (ext == ".bgcode" || ext == ".bgc");
|
||||
const bool ascii_extension = (ext == ".gcode" || ext == ".g" || ext == ".gco");
|
||||
wxString err_out;
|
||||
if (binary_output && ascii_extension) {
|
||||
// TRN The placeholder %1% is the file extension the user has selected.
|
||||
err_out = format_wxstr(_L("Cannot upload binary G-code with %1% extension.\n\n"
|
||||
"Use <a href=%2%>a different extension</a> or disable <a href=%3%>binary G-code export</a> "
|
||||
"in Print Settings."), ext, "output_filename_format;print", "gcode_binary;print");
|
||||
}
|
||||
if (!binary_output && binary_extension) {
|
||||
// TRN The placeholder %1% is the file extension the user has selected.
|
||||
err_out = format_wxstr(_L("Cannot upload ASCII G-code with %1% extension.\n\n"
|
||||
"Use <a href=%2%>a different extension</a> or enable <a href=%3%>binary G-code export</a> "
|
||||
"in Print Settings."), ext, "output_filename_format;print", "gcode_binary;print");
|
||||
}
|
||||
if (!err_out.IsEmpty()) {
|
||||
ErrorDialog(this, err_out, t_kill_focus([](const std::string& key) -> void { wxGetApp().sidebar().jump_to_option(key); })).ShowModal();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!m_valid_suffix.IsEmpty()) {
|
||||
if (binary_output && m_valid_suffix != ".bgcode" && m_valid_suffix != ".bgc")
|
||||
m_valid_suffix = ".bgcode";
|
||||
else if (!binary_output && m_valid_suffix != ".gcode" && m_valid_suffix != ".gco")
|
||||
m_valid_suffix = ".gcode";
|
||||
}
|
||||
}
|
||||
|
||||
if (!path.Lower().EndsWith(m_valid_suffix.Lower())) {
|
||||
MessageDialog msg_wingow(this, wxString::Format(_L("Upload filename doesn't end with \"%s\". Do you wish to continue?"), m_valid_suffix), wxString(SLIC3R_APP_NAME), wxYES | wxNO);
|
||||
return msg_wingow.ShowModal() == wxID_YES;
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user