Fixing wxString::Format encoding mismatches (part 2)
This commit is contained in:
parent
8b16b2c12e
commit
bcd3842183
@ -172,7 +172,7 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true
|
|||||||
if (label.Last() == '\n') label.RemoveLast();
|
if (label.Last() == '\n') label.RemoveLast();
|
||||||
while (label.Last() == ' ') label.RemoveLast();
|
while (label.Last() == ' ') label.RemoveLast();
|
||||||
if (label.Last() == ':') label.RemoveLast();
|
if (label.Last() == ':') label.RemoveLast();
|
||||||
show_error(m_parent, wxString::Format(_(L("%s doesn't support percentage")), label));
|
show_error(m_parent, from_u8((boost::format(_utf8(L("%s doesn't support percentage"))) % label).str()));
|
||||||
set_value(double_to_string(m_opt.min), true);
|
set_value(double_to_string(m_opt.min), true);
|
||||||
m_value = double(m_opt.min);
|
m_value = double(m_opt.min);
|
||||||
break;
|
break;
|
||||||
@ -237,12 +237,12 @@ void Field::get_value_by_opt_type(wxString& str, const bool check_value/* = true
|
|||||||
|
|
||||||
const std::string sidetext = m_opt.sidetext.rfind("mm/s") != std::string::npos ? "mm/s" : "mm";
|
const std::string sidetext = m_opt.sidetext.rfind("mm/s") != std::string::npos ? "mm/s" : "mm";
|
||||||
const wxString stVal = double_to_string(val, 2);
|
const wxString stVal = double_to_string(val, 2);
|
||||||
const wxString msg_text = wxString::Format(_(L("Do you mean %s%% instead of %s %s?\n"
|
const wxString msg_text = from_u8((boost::format(_utf8(L("Do you mean %s%% instead of %s %s?\n"
|
||||||
"Select YES if you want to change this value to %s%%, \n"
|
"Select YES if you want to change this value to %s%%, \n"
|
||||||
"or NO if you are sure that %s %s is a correct value.")), stVal, stVal, sidetext, stVal, stVal, sidetext);
|
"or NO if you are sure that %s %s is a correct value."))) % stVal % stVal % sidetext % stVal % stVal % sidetext).str());
|
||||||
wxMessageDialog dialog(m_parent, msg_text, _(L("Parameter validation")) + ": " + m_opt_id , wxICON_WARNING | wxYES | wxNO);
|
wxMessageDialog dialog(m_parent, msg_text, _(L("Parameter validation")) + ": " + m_opt_id , wxICON_WARNING | wxYES | wxNO);
|
||||||
if (dialog.ShowModal() == wxID_YES) {
|
if (dialog.ShowModal() == wxID_YES) {
|
||||||
set_value(wxString::Format("%s%%", stVal), false/*true*/);
|
set_value(from_u8((boost::format("%s%%") % stVal).str()), false/*true*/);
|
||||||
str += "%%";
|
str += "%%";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -302,9 +302,9 @@ void GLCanvas3DManager::init_gl()
|
|||||||
|
|
||||||
if (! s_gl_info.is_version_greater_or_equal_to(2, 0)) {
|
if (! s_gl_info.is_version_greater_or_equal_to(2, 0)) {
|
||||||
// Complain about the OpenGL version.
|
// Complain about the OpenGL version.
|
||||||
wxString message = wxString::Format(
|
wxString message = from_u8((boost::format(
|
||||||
_(L("PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n"
|
_utf8(L("PrusaSlicer requires OpenGL 2.0 capable graphics driver to run correctly, \n"
|
||||||
"while OpenGL version %s, render %s, vendor %s was detected.")), wxString(s_gl_info.get_version()), wxString(s_gl_info.get_renderer()), wxString(s_gl_info.get_vendor()));
|
"while OpenGL version %s, render %s, vendor %s was detected."))) % s_gl_info.get_version() % s_gl_info.get_renderer() % s_gl_info.get_vendor()).str());
|
||||||
message += "\n";
|
message += "\n";
|
||||||
message += _(L("You may need to update your graphics card driver."));
|
message += _(L("You may need to update your graphics card driver."));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -798,7 +798,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
|
|||||||
wxWindowID config_id_base = wxWindow::NewControlId(int(ConfigMenuCnt));
|
wxWindowID config_id_base = wxWindow::NewControlId(int(ConfigMenuCnt));
|
||||||
|
|
||||||
const auto config_wizard_name = _(ConfigWizard::name(true));
|
const auto config_wizard_name = _(ConfigWizard::name(true));
|
||||||
const auto config_wizard_tooltip = wxString::Format(_(L("Run %s")), config_wizard_name);
|
const auto config_wizard_tooltip = from_u8((boost::format(_utf8(L("Run %s"))) % config_wizard_name).str());
|
||||||
// Cmd+, is standard on OS X - what about other operating systems?
|
// Cmd+, is standard on OS X - what about other operating systems?
|
||||||
local_menu->Append(config_id_base + ConfigMenuWizard, config_wizard_name + dots, config_wizard_tooltip);
|
local_menu->Append(config_id_base + ConfigMenuWizard, config_wizard_name + dots, config_wizard_tooltip);
|
||||||
local_menu->Append(config_id_base + ConfigMenuSnapshots, _(L("&Configuration Snapshots")) + dots, _(L("Inspect / activate configuration snapshots")));
|
local_menu->Append(config_id_base + ConfigMenuSnapshots, _(L("&Configuration Snapshots")) + dots, _(L("Inspect / activate configuration snapshots")));
|
||||||
|
@ -354,7 +354,7 @@ wxString ObjectList::get_mesh_errors_list(const int obj_idx, const int vol_idx /
|
|||||||
|
|
||||||
for (const auto& error : error_msg)
|
for (const auto& error : error_msg)
|
||||||
if (error.second > 0)
|
if (error.second > 0)
|
||||||
tooltip += wxString::Format("\t%d %s\n", error.second, _(error.first));
|
tooltip += from_u8((boost::format("\t%1% %2%\n") % error.second % _utf8(error.first)).str());
|
||||||
|
|
||||||
if (is_windows10())
|
if (is_windows10())
|
||||||
tooltip += _(L("Right button click the icon to fix STL through Netfabb"));
|
tooltip += _(L("Right button click the icon to fix STL through Netfabb"));
|
||||||
@ -1180,7 +1180,7 @@ const std::vector<std::string>& ObjectList::get_options_for_bundle(const wxStrin
|
|||||||
|
|
||||||
for (auto& it : bundle_quick)
|
for (auto& it : bundle_quick)
|
||||||
{
|
{
|
||||||
if ( bundle_name == wxString::Format(_(L("Quick Add Settings (%s)")), _(it.first)) )
|
if ( bundle_name == from_u8((boost::format(_utf8(L("Quick Add Settings (%s)"))) % _(it.first)).str()) )
|
||||||
return it.second;
|
return it.second;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1528,13 +1528,13 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)
|
|||||||
#if 0
|
#if 0
|
||||||
for (auto& it : m_freq_settings_fff)
|
for (auto& it : m_freq_settings_fff)
|
||||||
{
|
{
|
||||||
settings_id = menu->FindItem(wxString::Format(_(L("Quick Add Settings (%s)")), _(it.first)));
|
settings_id = menu->FindItem(from_u8((boost::format(_utf8(L("Quick Add Settings (%s)"))) % _(it.first)).str()));
|
||||||
if (settings_id != wxNOT_FOUND)
|
if (settings_id != wxNOT_FOUND)
|
||||||
menu->Destroy(settings_id);
|
menu->Destroy(settings_id);
|
||||||
}
|
}
|
||||||
for (auto& it : m_freq_settings_sla)
|
for (auto& it : m_freq_settings_sla)
|
||||||
{
|
{
|
||||||
settings_id = menu->FindItem(wxString::Format(_(L("Quick Add Settings (%s)")), _(it.first)));
|
settings_id = menu->FindItem(from_u8((boost::format(_utf8(L("Quick Add Settings (%s)"))) % _(it.first)).str()));
|
||||||
if (settings_id != wxNOT_FOUND)
|
if (settings_id != wxNOT_FOUND)
|
||||||
menu->Destroy(settings_id);
|
menu->Destroy(settings_id);
|
||||||
}
|
}
|
||||||
@ -1847,7 +1847,7 @@ void ObjectList::create_freq_settings_popupmenu(wxMenu *menu, const bool is_obje
|
|||||||
if (improper_category(it.first, extruders_cnt))
|
if (improper_category(it.first, extruders_cnt))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
append_menu_item(menu, wxID_ANY, wxString::Format(_(L("Quick Add Settings (%s)")), _(it.first)), "",
|
append_menu_item(menu, wxID_ANY, from_u8((boost::format(_utf8(L("Quick Add Settings (%s)"))) % _(it.first)).str()), "",
|
||||||
[menu, this](wxCommandEvent& event) { get_freq_settings_choice(menu->GetLabel(event.GetId())); },
|
[menu, this](wxCommandEvent& event) { get_freq_settings_choice(menu->GetLabel(event.GetId())); },
|
||||||
CATEGORY_ICON.find(it.first) == CATEGORY_ICON.end() ? wxNullBitmap : CATEGORY_ICON.at(it.first), menu,
|
CATEGORY_ICON.find(it.first) == CATEGORY_ICON.end() ? wxNullBitmap : CATEGORY_ICON.at(it.first), menu,
|
||||||
[this]() { return true; }, wxGetApp().plater());
|
[this]() { return true; }, wxGetApp().plater());
|
||||||
@ -4091,9 +4091,9 @@ void ObjectList::toggle_printable_state(wxDataViewItem item)
|
|||||||
// get object's printable and change it
|
// get object's printable and change it
|
||||||
const bool printable = !m_objects_model->IsPrintable(item);
|
const bool printable = !m_objects_model->IsPrintable(item);
|
||||||
|
|
||||||
const wxString snapshot_text = wxString::Format("%s %s",
|
const wxString snapshot_text = from_u8((boost::format("%1% %2%")
|
||||||
printable ? _(L("Set Printable")) : _(L("Set Unprintable")),
|
% (printable ? _(L("Set Printable")) : _(L("Set Unprintable")))
|
||||||
object->name);
|
% object->name).str());
|
||||||
take_snapshot(snapshot_text);
|
take_snapshot(snapshot_text);
|
||||||
|
|
||||||
// set printable value for all instances in object
|
// set printable value for all instances in object
|
||||||
|
@ -98,7 +98,7 @@ bool ObjectSettings::update_settings_list()
|
|||||||
btn->SetBitmapHover(m_bmp_delete_focus.bmp());
|
btn->SetBitmapHover(m_bmp_delete_focus.bmp());
|
||||||
|
|
||||||
btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) {
|
btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) {
|
||||||
wxGetApp().plater()->take_snapshot(wxString::Format(_(L("Delete Option %s")), opt_key));
|
wxGetApp().plater()->take_snapshot(from_u8((boost::format(_utf8(L("Delete Option %s"))) % opt_key).str()));
|
||||||
config->erase(opt_key);
|
config->erase(opt_key);
|
||||||
wxGetApp().obj_list()->changed_object();
|
wxGetApp().obj_list()->changed_object();
|
||||||
wxTheApp->CallAfter([this]() {
|
wxTheApp->CallAfter([this]() {
|
||||||
@ -149,7 +149,7 @@ bool ObjectSettings::update_settings_list()
|
|||||||
|
|
||||||
optgroup->get_field(opt)->m_on_change = [optgroup](const std::string& opt_id, const boost::any& value) {
|
optgroup->get_field(opt)->m_on_change = [optgroup](const std::string& opt_id, const boost::any& value) {
|
||||||
// first of all take a snapshot and then change value in configuration
|
// first of all take a snapshot and then change value in configuration
|
||||||
wxGetApp().plater()->take_snapshot(wxString::Format(_(L("Change Option %s")), opt_id));
|
wxGetApp().plater()->take_snapshot(from_u8((boost::format(_utf8(L("Change Option %s"))) % opt_id).str()));
|
||||||
optgroup->on_change_OG(opt_id, value);
|
optgroup->on_change_OG(opt_id, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -827,7 +827,7 @@ void MainFrame::quick_slice(const int qs)
|
|||||||
}
|
}
|
||||||
else if (qs & qsSaveAs) {
|
else if (qs & qsSaveAs) {
|
||||||
// The following line may die if the output_filename_format template substitution fails.
|
// The following line may die if the output_filename_format template substitution fails.
|
||||||
wxFileDialog dlg(this, wxString::Format(_(L("Save %s file as:")) , qs & qsExportSVG ? _(L("SVG")) : _(L("G-code")) ),
|
wxFileDialog dlg(this, from_u8((boost::format(_utf8(L("Save %s file as:"))) % ((qs & qsExportSVG) ? _(L("SVG")) : _(L("G-code")))).str()),
|
||||||
wxGetApp().app_config->get_last_output_dir(get_dir_name(output_file)), get_base_name(input_file),
|
wxGetApp().app_config->get_last_output_dir(get_dir_name(output_file)), get_base_name(input_file),
|
||||||
qs & qsExportSVG ? file_wildcards(FT_SVG) : file_wildcards(FT_GCODE),
|
qs & qsExportSVG ? file_wildcards(FT_SVG) : file_wildcards(FT_GCODE),
|
||||||
wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
|
wxFD_SAVE | wxFD_OVERWRITE_PROMPT);
|
||||||
@ -850,7 +850,7 @@ void MainFrame::quick_slice(const int qs)
|
|||||||
// show processbar dialog
|
// show processbar dialog
|
||||||
m_progress_dialog = new wxProgressDialog(_(L("Slicing")) + dots,
|
m_progress_dialog = new wxProgressDialog(_(L("Slicing")) + dots,
|
||||||
// TRN "Processing input_file_basename"
|
// TRN "Processing input_file_basename"
|
||||||
wxString::Format(_(L("Processing %s")), input_file_basename + dots),
|
from_u8((boost::format(_utf8(L("Processing %s"))) % (input_file_basename + dots)).str()),
|
||||||
100, this, 4);
|
100, this, 4);
|
||||||
m_progress_dialog->Pulse();
|
m_progress_dialog->Pulse();
|
||||||
{
|
{
|
||||||
|
@ -1191,7 +1191,7 @@ void Sidebar::update_sliced_info_sizer()
|
|||||||
wxString new_label = _(L("Used Material (ml)")) + " :";
|
wxString new_label = _(L("Used Material (ml)")) + " :";
|
||||||
const bool is_supports = ps.support_used_material > 0.0;
|
const bool is_supports = ps.support_used_material > 0.0;
|
||||||
if (is_supports)
|
if (is_supports)
|
||||||
new_label += wxString::Format("\n - %s\n - %s", _(L("object(s)")), _(L("supports and pad")));
|
new_label += from_u8((boost::format("\n - %s\n - %s") % _utf8(L("object(s)")) % _utf8(L("supports and pad"))).str());
|
||||||
|
|
||||||
wxString info_text = is_supports ?
|
wxString info_text = is_supports ?
|
||||||
wxString::Format("%.2f \n%.2f \n%.2f", (ps.objects_used_material + ps.support_used_material) / 1000,
|
wxString::Format("%.2f \n%.2f \n%.2f", (ps.objects_used_material + ps.support_used_material) / 1000,
|
||||||
@ -1228,7 +1228,7 @@ void Sidebar::update_sliced_info_sizer()
|
|||||||
|
|
||||||
wxString new_label = _(L("Used Filament (m)"));
|
wxString new_label = _(L("Used Filament (m)"));
|
||||||
if (is_wipe_tower)
|
if (is_wipe_tower)
|
||||||
new_label += wxString::Format(" :\n - %s\n - %s", _(L("objects")), _(L("wipe tower")));
|
new_label += from_u8((boost::format(" :\n - %1%\n - %2%") % _utf8(L("objects")) % _utf8(L("wipe tower"))).str());
|
||||||
|
|
||||||
wxString info_text = is_wipe_tower ?
|
wxString info_text = is_wipe_tower ?
|
||||||
wxString::Format("%.2f \n%.2f \n%.2f", ps.total_used_filament / 1000,
|
wxString::Format("%.2f \n%.2f \n%.2f", ps.total_used_filament / 1000,
|
||||||
@ -1242,7 +1242,7 @@ void Sidebar::update_sliced_info_sizer()
|
|||||||
|
|
||||||
new_label = _(L("Cost"));
|
new_label = _(L("Cost"));
|
||||||
if (is_wipe_tower)
|
if (is_wipe_tower)
|
||||||
new_label += wxString::Format(" :\n - %s\n - %s", _(L("objects")), _(L("wipe tower")));
|
new_label += from_u8((boost::format(" :\n - %1%\n - %2%") % _utf8(L("objects")) % _utf8(L("wipe tower"))).str());
|
||||||
|
|
||||||
info_text = ps.total_cost == 0.0 ? "N/A" :
|
info_text = ps.total_cost == 0.0 ? "N/A" :
|
||||||
is_wipe_tower ?
|
is_wipe_tower ?
|
||||||
@ -1271,25 +1271,25 @@ void Sidebar::update_sliced_info_sizer()
|
|||||||
for (int i = (int)times.size() - 1; i >= 0; --i)
|
for (int i = (int)times.size() - 1; i >= 0; --i)
|
||||||
{
|
{
|
||||||
if (i == 0 || times[i - 1].first == cgtPausePrint)
|
if (i == 0 || times[i - 1].first == cgtPausePrint)
|
||||||
new_label += wxString::Format("\n - %s%d", str_color + " ", color_change_count);
|
new_label += from_u8((boost::format("\n - %1%%2%") % (std::string(str_color.ToUTF8()) + " ") % color_change_count).str());
|
||||||
else if (times[i - 1].first == cgtColorChange)
|
else if (times[i - 1].first == cgtColorChange)
|
||||||
new_label += wxString::Format("\n - %s%d", str_color + " ", color_change_count--);
|
new_label += from_u8((boost::format("\n - %1%%2%") % (std::string(str_color.ToUTF8()) + " ") % color_change_count--).str());
|
||||||
|
|
||||||
if (i != (int)times.size() - 1 && times[i].first == cgtPausePrint)
|
if (i != (int)times.size() - 1 && times[i].first == cgtPausePrint)
|
||||||
new_label += wxString::Format(" -> %s", str_pause);
|
new_label += from_u8((boost::format(" -> %1%") % std::string(str_pause.ToUTF8())).str());
|
||||||
|
|
||||||
info_text += wxString::Format("\n%s", times[i].second);
|
info_text += from_u8((boost::format("\n%1%") % times[i].second).str());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ps.estimated_normal_print_time != "N/A") {
|
if (ps.estimated_normal_print_time != "N/A") {
|
||||||
new_label += wxString::Format("\n - %s", _(L("normal mode")));
|
new_label += from_u8((boost::format("\n - %1%") % _utf8(L("normal mode"))).str());
|
||||||
info_text += wxString::Format("\n%s", ps.estimated_normal_print_time);
|
info_text += from_u8((boost::format("\n%1%") % ps.estimated_normal_print_time).str());
|
||||||
fill_labels(ps.estimated_normal_custom_gcode_print_times, new_label, info_text);
|
fill_labels(ps.estimated_normal_custom_gcode_print_times, new_label, info_text);
|
||||||
}
|
}
|
||||||
if (ps.estimated_silent_print_time != "N/A") {
|
if (ps.estimated_silent_print_time != "N/A") {
|
||||||
new_label += wxString::Format("\n - %s", _(L("stealth mode")));
|
new_label += from_u8((boost::format("\n - %1%") % _utf8(L("stealth mode"))).str());
|
||||||
info_text += wxString::Format("\n%s", ps.estimated_silent_print_time);
|
info_text += from_u8((boost::format("\n%1%") % ps.estimated_silent_print_time).str());
|
||||||
fill_labels(ps.estimated_silent_custom_gcode_print_times, new_label, info_text);
|
fill_labels(ps.estimated_silent_custom_gcode_print_times, new_label, info_text);
|
||||||
}
|
}
|
||||||
p->sliced_info->SetTextAndShow(siEstimatedTime, info_text, new_label);
|
p->sliced_info->SetTextAndShow(siEstimatedTime, info_text, new_label);
|
||||||
@ -2280,7 +2280,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
|||||||
for (size_t i = 0; i < input_files.size(); i++) {
|
for (size_t i = 0; i < input_files.size(); i++) {
|
||||||
const auto &path = input_files[i];
|
const auto &path = input_files[i];
|
||||||
const auto filename = path.filename();
|
const auto filename = path.filename();
|
||||||
const auto dlg_info = wxString::Format(_(L("Processing input file %s")), from_path(filename)) + "\n";
|
const auto dlg_info = from_u8((boost::format(_utf8(L("Processing input file %s"))) % from_path(filename)).str()) + "\n";
|
||||||
dlg.Update(100 * i / input_files.size(), dlg_info);
|
dlg.Update(100 * i / input_files.size(), dlg_info);
|
||||||
|
|
||||||
const bool type_3mf = std::regex_match(path.string(), pattern_3mf);
|
const bool type_3mf = std::regex_match(path.string(), pattern_3mf);
|
||||||
@ -2387,8 +2387,8 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
|||||||
for (auto obj : model.objects)
|
for (auto obj : model.objects)
|
||||||
if ( obj->volumes.size()>1 ) {
|
if ( obj->volumes.size()>1 ) {
|
||||||
Slic3r::GUI::show_error(nullptr,
|
Slic3r::GUI::show_error(nullptr,
|
||||||
wxString::Format(_(L("You can't to add the object(s) from %s because of one or some of them is(are) multi-part")),
|
from_u8((boost::format(_utf8(L("You can't to add the object(s) from %s because of one or some of them is(are) multi-part")))
|
||||||
from_path(filename)));
|
% from_path(filename)).str()));
|
||||||
return obj_idxs;
|
return obj_idxs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4982,7 +4982,7 @@ void Plater::export_stl(bool extended, bool selection_only)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Slic3r::store_stl(path_u8.c_str(), &mesh, true);
|
Slic3r::store_stl(path_u8.c_str(), &mesh, true);
|
||||||
p->statusbar()->set_status_text(wxString::Format(_(L("STL file exported to %s")), path));
|
p->statusbar()->set_status_text(from_u8((boost::format(_utf8(L("STL file exported to %s"))) % path).str()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Plater::export_amf()
|
void Plater::export_amf()
|
||||||
@ -4999,10 +4999,10 @@ void Plater::export_amf()
|
|||||||
bool full_pathnames = wxGetApp().app_config->get("export_sources_full_pathnames") == "1";
|
bool full_pathnames = wxGetApp().app_config->get("export_sources_full_pathnames") == "1";
|
||||||
if (Slic3r::store_amf(path_u8.c_str(), &p->model, export_config ? &cfg : nullptr, full_pathnames)) {
|
if (Slic3r::store_amf(path_u8.c_str(), &p->model, export_config ? &cfg : nullptr, full_pathnames)) {
|
||||||
// Success
|
// Success
|
||||||
p->statusbar()->set_status_text(wxString::Format(_(L("AMF file exported to %s")), path));
|
p->statusbar()->set_status_text(from_u8((boost::format(_utf8(L("AMF file exported to %s"))) % path).str()));
|
||||||
} else {
|
} else {
|
||||||
// Failure
|
// Failure
|
||||||
p->statusbar()->set_status_text(wxString::Format(_(L("Error exporting AMF file %s")), path));
|
p->statusbar()->set_status_text(from_u8((boost::format(_utf8(L("Error exporting AMF file %s"))) % path).str()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5035,12 +5035,12 @@ void Plater::export_3mf(const boost::filesystem::path& output_path)
|
|||||||
if (Slic3r::store_3mf(path_u8.c_str(), &p->model, export_config ? &cfg : nullptr, full_pathnames)) {
|
if (Slic3r::store_3mf(path_u8.c_str(), &p->model, export_config ? &cfg : nullptr, full_pathnames)) {
|
||||||
#endif // ENABLE_THUMBNAIL_GENERATOR
|
#endif // ENABLE_THUMBNAIL_GENERATOR
|
||||||
// Success
|
// Success
|
||||||
p->statusbar()->set_status_text(wxString::Format(_(L("3MF file exported to %s")), path));
|
p->statusbar()->set_status_text(from_u8((boost::format(_utf8(L("3MF file exported to %s"))) % path).str()));
|
||||||
p->set_project_filename(path);
|
p->set_project_filename(path);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Failure
|
// Failure
|
||||||
p->statusbar()->set_status_text(wxString::Format(_(L("Error exporting 3MF file %s")), path));
|
p->statusbar()->set_status_text(from_u8((boost::format(_utf8(L("Error exporting 3MF file %s"))) % path).str()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user