From fea91829eb638066983c5e0c0c51d4f1e920c4eb Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 4 Dec 2019 15:12:00 +0100 Subject: [PATCH] Localization improvements: * added wrapper to SliderFloat in imgui * fixed localized text in Mouse3DController * added take_snapshot for extruder change in object list * fixed text typos in AppConfig.cpp, ConfigWizard.cpp and ConfigManipulation.cpp --- src/slic3r/GUI/AppConfig.cpp | 2 +- src/slic3r/GUI/ConfigManipulation.cpp | 2 +- src/slic3r/GUI/ConfigWizard.cpp | 4 ++-- src/slic3r/GUI/GUI_ObjectList.cpp | 5 +++++ src/slic3r/GUI/ImGuiWrapper.cpp | 16 ++++++++++++++++ src/slic3r/GUI/ImGuiWrapper.hpp | 3 +++ src/slic3r/GUI/Mouse3DController.cpp | 8 ++++---- 7 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/AppConfig.cpp b/src/slic3r/GUI/AppConfig.cpp index 60f4edf47..d33d945ef 100644 --- a/src/slic3r/GUI/AppConfig.cpp +++ b/src/slic3r/GUI/AppConfig.cpp @@ -103,7 +103,7 @@ void AppConfig::load() // Error while parsing config file. We'll customize the error message and rethrow to be displayed. throw std::runtime_error( _utf8(L("Error parsing PrusaSlicer config file, it is probably corrupted. " - "Try to manualy delete the file to recover from the error. Your user profiles will not be affected.")) + + "Try to manually delete the file to recover from the error. Your user profiles will not be affected.")) + "\n\n" + AppConfig::config_path() + "\n\n" + ex.what()); } diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index f76f752f0..966f34761 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -77,7 +77,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con "- no top solid layers\n" "- 0% fill density\n" "- no support material\n" - "- no ensure_vertical_shell_thickness")); + "- inactive Ensure vertical shell thickness")); if (is_global_config) msg_text += "\n\n" + _(L("Shall I adjust those settings in order to enable Spiral Vase?")); wxMessageDialog dialog(nullptr, msg_text, _(L("Spiral Vase")), diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 23fc17682..4d523bc0b 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -778,8 +778,8 @@ PageMode::PageMode(ConfigWizard *parent) { append_text(_(L("PrusaSlicer's user interfaces comes in three variants:\nSimple, Advanced, and Expert.\n" "The Simple mode shows only the most frequently used settings relevant for regular 3D printing. " - "The other two offer progressivly more sophisticated fine-tuning, " - "they are suitable for advanced and expert usiser, respectively."))); + "The other two offer progressively more sophisticated fine-tuning, " + "they are suitable for advanced and expert users, respectively."))); radio_simple = new wxRadioButton(this, wxID_ANY, _(L("Simple mode"))); radio_advanced = new wxRadioButton(this, wxID_ANY, _(L("Advanced mode"))); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 268ae93cf..d825b740f 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -525,6 +525,8 @@ void ObjectList::update_extruder_in_config(const wxDataViewItem& item) if (!m_config) return; + take_snapshot(_(L("Change Extruder"))); + const int extruder = m_objects_model->GetExtruderNumber(item); m_config->set_key_value("extruder", new ConfigOptionInt(extruder)); @@ -3846,6 +3848,9 @@ void ObjectList::set_extruder_for_selected_items(const int extruder) const wxDataViewItemArray sels; GetSelections(sels); + if (!sels.empty()) + take_snapshot(_(L("Change Extruders"))); + for (const wxDataViewItem& item : sels) { DynamicPrintConfig& config = get_item_config(item); diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 9dfe39bdd..4463e646c 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -317,6 +317,22 @@ void ImGuiWrapper::text(const wxString &label) this->text(label_utf8.c_str()); } +bool ImGuiWrapper::slider_float(const char* label, float* v, float v_min, float v_max, const char* format/* = "%.3f"*/, float power/* = 1.0f*/) +{ + return ImGui::SliderFloat(label, v, v_min, v_max, format, power); +} + +bool ImGuiWrapper::slider_float(const std::string& label, float* v, float v_min, float v_max, const char* format/* = "%.3f"*/, float power/* = 1.0f*/) +{ + return this->slider_float(label.c_str(), v, v_min, v_max, format, power); +} + +bool ImGuiWrapper::slider_float(const wxString& label, float* v, float v_min, float v_max, const char* format/* = "%.3f"*/, float power/* = 1.0f*/) +{ + auto label_utf8 = into_u8(label); + return this->slider_float(label_utf8.c_str(), v, v_min, v_max, format, power); +} + bool ImGuiWrapper::combo(const wxString& label, const std::vector& options, int& selection) { // this is to force the label to the left of the widget: diff --git a/src/slic3r/GUI/ImGuiWrapper.hpp b/src/slic3r/GUI/ImGuiWrapper.hpp index c6550351e..7cce60367 100644 --- a/src/slic3r/GUI/ImGuiWrapper.hpp +++ b/src/slic3r/GUI/ImGuiWrapper.hpp @@ -66,6 +66,9 @@ public: void text(const char *label); void text(const std::string &label); void text(const wxString &label); + bool slider_float(const char* label, float* v, float v_min, float v_max, const char* format = "%.3f", float power = 1.0f); + bool slider_float(const std::string& label, float* v, float v_min, float v_max, const char* format = "%.3f", float power = 1.0f); + bool slider_float(const wxString& label, float* v, float v_min, float v_max, const char* format = "%.3f", float power = 1.0f); bool combo(const wxString& label, const std::vector& options, int& selection); // Use -1 to not mark any option as selected bool undo_redo_list(const ImVec2& size, const bool is_undo, bool (*items_getter)(const bool, int, const char**), int& hovered, int& selected); diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index e69ef4857..89513709d 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -267,11 +267,11 @@ void Mouse3DController::render_settings_dialog(unsigned int canvas_width, unsign ImGui::PopStyleColor(); float translation_scale = (float)m_state.get_translation_scale() / State::DefaultTranslationScale; - if (ImGui::SliderFloat(_(L("Translation##1")), &translation_scale, 0.5f, 2.0f, "%.1f")) + if (imgui.slider_float(_(L("Translation")) + "##1", &translation_scale, 0.5f, 2.0f, "%.1f")) m_state.set_translation_scale(State::DefaultTranslationScale * (double)translation_scale); float rotation_scale = m_state.get_rotation_scale() / State::DefaultRotationScale; - if (ImGui::SliderFloat(_(L("Rotation##1")), &rotation_scale, 0.5f, 2.0f, "%.1f")) + if (imgui.slider_float(_(L("Rotation")) + "##1", &rotation_scale, 0.5f, 2.0f, "%.1f")) m_state.set_rotation_scale(State::DefaultRotationScale * rotation_scale); ImGui::Separator(); @@ -280,11 +280,11 @@ void Mouse3DController::render_settings_dialog(unsigned int canvas_width, unsign ImGui::PopStyleColor(); float translation_deadzone = (float)m_state.get_translation_deadzone(); - if (ImGui::SliderFloat(_(L("Translation##2")), &translation_deadzone, 0.0f, (float)State::MaxTranslationDeadzone, "%.2f")) + if (imgui.slider_float(_(L("Translation")) + "##2", &translation_deadzone, 0.0f, (float)State::MaxTranslationDeadzone, "%.2f")) m_state.set_translation_deadzone((double)translation_deadzone); float rotation_deadzone = m_state.get_rotation_deadzone(); - if (ImGui::SliderFloat(_(L("Rotation##2")), &rotation_deadzone, 0.0f, State::MaxRotationDeadzone, "%.2f")) + if (imgui.slider_float(_(L("Rotation")) + "##2", &rotation_deadzone, 0.0f, State::MaxRotationDeadzone, "%.2f")) m_state.set_rotation_deadzone(rotation_deadzone); #if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT