diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index 9c1c4789f..aecf56418 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -74,14 +74,10 @@ void GLGizmoSimplify::add_simplify_suggestion_notification( if (big_ids.empty()) return; for (size_t object_id : big_ids) { - std::string t = _u8L( - "Processing model '@object_name' with more than 1M triangles " + std::string t = GUI::format(_u8L( + "Processing model '%1%' with more than 1M triangles " "could be slow. It is highly recommend to reduce " - "amount of triangles."); - t.replace(t.find("@object_name"), sizeof("@object_name") - 1, - objects[object_id]->name); - // std::stringstream text; - // text << t << "\n"; + "amount of triangles."), objects[object_id]->name); std::string hypertext = _u8L("Simplify model"); std::function open_simplify = @@ -277,7 +273,7 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi bool is_canceling = m_state == State::canceling; m_imgui->disabled_begin(is_canceling); - if (m_imgui->button(_u8L("Cancel"))) { + if (m_imgui->button(_L("Cancel"))) { if (m_state == State::settings) { if (m_original_its.has_value()) { set_its(*m_original_its); @@ -296,7 +292,7 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi bool is_processing = m_state != State::settings; m_imgui->disabled_begin(is_processing); - if (m_imgui->button(_u8L("Apply"))) { + if (m_imgui->button(_L("Apply"))) { if (!m_is_valid_result) { m_state = State::close_on_end; process(); @@ -315,8 +311,9 @@ void GLGizmoSimplify::on_render_input_window(float x, float y, float bottom_limi ImGui::SameLine(m_gui_cfg->bottom_left_width); // draw progress bar char buf[32]; - sprintf(buf, L("Process %d / 100"), m_progress); - ImGui::ProgressBar(m_progress / 100., ImVec2(m_gui_cfg->input_width, 0.f), buf); + int progress = m_progress; + sprintf(buf, L("Process %d / 100"), progress); + ImGui::ProgressBar(progress / 100., ImVec2(m_gui_cfg->input_width, 0.f), buf); } m_imgui->end(); @@ -454,7 +451,7 @@ void GLGizmoSimplify::process() }); } -void GLGizmoSimplify::set_its(indexed_triangle_set &its) { +void GLGizmoSimplify::set_its(const indexed_triangle_set &its) { if (m_volume == nullptr) return; // could appear after process m_volume->set_mesh(its); m_volume->calculate_convex_hull(); @@ -543,12 +540,12 @@ void GLGizmoSimplify::set_center_position() { m_move_to_center = true; } -bool GLGizmoSimplify::exist_volume(ModelVolume *volume) { - auto objs = wxGetApp().plater()->model().objects; - for (const auto &obj : objs) { - const auto &vlms = obj->volumes; +bool GLGizmoSimplify::exist_volume(const ModelVolume *volume) { + for (const ModelObject* obj : wxGetApp().plater()->model().objects) { + const auto & vlms = obj->volumes; auto item = std::find(vlms.begin(), vlms.end(), volume); - if (item != vlms.end()) return true; + if (item != vlms.end()) + return true; } return false; } @@ -556,11 +553,12 @@ bool GLGizmoSimplify::exist_volume(ModelVolume *volume) { ModelVolume * GLGizmoSimplify::get_volume(const Selection &selection, Model &model) { const Selection::IndicesList& idxs = selection.get_volume_idxs(); - if (idxs.empty()) return nullptr; // only one selected volume - if (idxs.size() != 1) return nullptr; + if (idxs.size() != 1) + return nullptr; const GLVolume *selected_volume = selection.get_volume(*idxs.begin()); - if (selected_volume == nullptr) return nullptr; + if (selected_volume == nullptr) + return nullptr; const GLVolume::CompositeID &cid = selected_volume->composite_id; const ModelObjectPtrs& objs = model.objects; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp index b978e9356..ad954e29b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.hpp @@ -53,7 +53,7 @@ private: void close(); void live_preview(); void process(); - void set_its(indexed_triangle_set &its); + void set_its(const indexed_triangle_set &its); void create_gui_cfg(); void request_rerender(); @@ -63,21 +63,21 @@ private: static const ModelVolume *get_volume(const GLVolume::CompositeID &cid, const Model &model); // return false when volume was deleted - static bool exist_volume(ModelVolume *volume); + static bool exist_volume(const ModelVolume *volume); std::atomic_bool m_is_valid_result; // differ what to do in apply std::atomic_bool m_exist_preview; // set when process end bool m_move_to_center; // opening gizmo - volatile int m_progress; // percent of done work + std::atomic m_progress; // percent of done work ModelVolume *m_volume; // keep pointer to actual working volume size_t m_obj_index; std::optional m_original_its; bool m_show_wireframe; - volatile bool m_need_reload; // after simplify, glReload must be on main thread + std::atomic m_need_reload; // after simplify, glReload must be on main thread std::thread m_worker; // wait before process @@ -90,7 +90,7 @@ private: close_on_end, // simplify with close on end canceling // after button click, before canceled }; - volatile State m_state; + std::atomic m_state; struct Configuration {