diff --git a/resources/images/extrusion_calibrati_open_button.svg b/resources/images/extrusion_calibrati_open_button.svg index d6190e25c..ec6acee97 100644 --- a/resources/images/extrusion_calibrati_open_button.svg +++ b/resources/images/extrusion_calibrati_open_button.svg @@ -1,9 +1,6 @@ - - - - - - - - + + + + + diff --git a/resources/images/extrusion_calibration_tips.png b/resources/images/extrusion_calibration_tips.png deleted file mode 100644 index b76ab1c66..000000000 Binary files a/resources/images/extrusion_calibration_tips.png and /dev/null differ diff --git a/resources/images/extrusion_calibration_tips_en.png b/resources/images/extrusion_calibration_tips_en.png new file mode 100644 index 000000000..9b744dbca Binary files /dev/null and b/resources/images/extrusion_calibration_tips_en.png differ diff --git a/resources/images/extrusion_calibration_tips_zh.png b/resources/images/extrusion_calibration_tips_zh.png new file mode 100644 index 000000000..79aefc9fc Binary files /dev/null and b/resources/images/extrusion_calibration_tips_zh.png differ diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 36c975f50..07ef7fb54 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -431,7 +431,7 @@ bool MachineObject::is_in_extrusion_cali() { auto curr_time = std::chrono::system_clock::now(); auto diff = std::chrono::duration_cast(curr_time - last_extrusion_cali_start_time); - if (diff.count() > EXTRUSION_OMIT_TIME) { + if (diff.count() < EXTRUSION_OMIT_TIME) { return true; } @@ -449,7 +449,7 @@ bool MachineObject::is_extrusion_cali_finished() { auto curr_time = std::chrono::system_clock::now(); auto diff = std::chrono::duration_cast(curr_time - last_extrusion_cali_start_time); - if (diff.count() > EXTRUSION_OMIT_TIME) { + if (diff.count() < EXTRUSION_OMIT_TIME) { return false; } diff --git a/src/slic3r/GUI/ExtrusionCalibration.cpp b/src/slic3r/GUI/ExtrusionCalibration.cpp index 0cbec32f9..73224751f 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.cpp +++ b/src/slic3r/GUI/ExtrusionCalibration.cpp @@ -3,6 +3,7 @@ #include "MsgDialog.hpp" #include "libslic3r/Preset.hpp" #include "I18N.hpp" +#include namespace Slic3r { namespace GUI { @@ -15,8 +16,23 @@ ExtrusionCalibration::ExtrusionCalibration(wxWindow *parent, wxWindowID id) wxGetApp().UpdateDlgDarkUI(this); } +void ExtrusionCalibration::init_bitmaps() +{ + auto lan = wxGetApp().app_config->get_language_code(); + if (lan == "zh-cn") { + m_is_zh = true; + m_calibration_tips_bmp_zh = create_scaled_bitmap("extrusion_calibration_tips_zh", nullptr, 256); + } + else{ + m_is_zh = false; + m_calibration_tips_bmp_en = create_scaled_bitmap("extrusion_calibration_tips_en", nullptr, 256); + } + m_calibration_tips_open_btn_bmp = create_scaled_bitmap("extrusion_calibrati_open_button", nullptr, 16); +} + void ExtrusionCalibration::create() { + init_bitmaps(); SetBackgroundColour(*wxWHITE); wxBoxSizer* sizer_main = new wxBoxSizer(wxVERTICAL); m_step_1_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); @@ -219,8 +235,6 @@ void ExtrusionCalibration::create() auto content_sizer = new wxBoxSizer(wxHORIZONTAL); m_calibration_tips_static_bmp = new wxStaticBitmap(m_step_2_panel, wxID_ANY, wxNullBitmap, wxDefaultPosition, EXTRUSION_CALIBRATION_BMP_SIZE, 0); content_sizer->Add(m_calibration_tips_static_bmp, 1, wxEXPAND | wxSHAPED); - m_calibration_tips_bmp = create_scaled_bitmap("extrusion_calibration_tips", nullptr, 256); - m_calibration_tips_open_btn_bmp = create_scaled_bitmap("extrusion_calibrati_open_button", nullptr, 32); content_sizer->Add(EXTRUSION_CALIBRATION_WIDGET_GAP, 0, 0, 0); // k/n input value auto kn_sizer = new wxBoxSizer(wxVERTICAL); @@ -319,25 +333,42 @@ ExtrusionCalibration::~ExtrusionCalibration() void ExtrusionCalibration::paint(wxPaintEvent&) { auto size = m_calibration_tips_static_bmp->GetSize(); wxPaintDC dc(m_calibration_tips_static_bmp); - dc.DrawBitmap(m_calibration_tips_bmp, wxPoint(0, 0)); - dc.DrawBitmap(m_calibration_tips_open_btn_bmp, wxPoint(0, size.y - EXTRUSION_CALIBRATION_BMP_BTN_SIZE.y)); + wxGCDC gcdc(dc); + + dc.DrawBitmap(m_is_zh ? m_calibration_tips_bmp_zh : m_calibration_tips_bmp_en, wxPoint(0, 0)); + + gcdc.SetPen(wxColour(0, 0, 0, 61)); + gcdc.SetBrush(wxColour(0, 0, 0, 61)); + gcdc.DrawRectangle(wxPoint(0, 0), EXTRUSION_CALIBRATION_BMP_TIP_BAR); + + dc.SetBrush(*wxTRANSPARENT_BRUSH); + int pos_offset = (EXTRUSION_CALIBRATION_BMP_TIP_BAR.y - EXTRUSION_CALIBRATION_BMP_BTN_SIZE.y) / 2; + wxPoint open_btn_pos = wxPoint(size.x - pos_offset - EXTRUSION_CALIBRATION_BMP_BTN_SIZE.x, pos_offset); + dc.DrawBitmap(m_calibration_tips_open_btn_bmp, open_btn_pos); + + gcdc.SetFont(Label::Head_14); + gcdc.SetTextForeground(wxColour(255, 255, 255, 224)); + wxSize text_size = wxWindow::GetTextExtent(_L("Example")); + gcdc.DrawText(_L("Example"), { (EXTRUSION_CALIBRATION_BMP_TIP_BAR.x - text_size.x) / 2, (EXTRUSION_CALIBRATION_BMP_TIP_BAR.y - text_size.y) / 2}); + return; } void ExtrusionCalibration::open_bitmap(wxMouseEvent& event) { auto pos = event.GetPosition(); auto size = m_calibration_tips_static_bmp->GetSize(); - if (pos.x > 0 && pos.y > size.y - EXTRUSION_CALIBRATION_BMP_BTN_SIZE.y && - pos.x < EXTRUSION_CALIBRATION_BMP_BTN_SIZE.x && pos.y < size.y) { + if (pos.x > size.x - EXTRUSION_CALIBRATION_BMP_TIP_BAR.y && pos.y > 0 && + pos.x < size.x && pos.y < EXTRUSION_CALIBRATION_BMP_TIP_BAR.y) { auto* popup = new wxDialog(this, wxID_ANY, "", wxDefaultPosition, wxDefaultSize); auto bmp_sizer = new wxBoxSizer(wxVERTICAL); wxStaticBitmap* zoomed_bitmap = new wxStaticBitmap(popup, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0); - zoomed_bitmap->SetBitmap(create_scaled_bitmap("extrusion_calibration_tips", nullptr, 720)); + zoomed_bitmap->SetBitmap(create_scaled_bitmap(m_is_zh ? "extrusion_calibration_tips_zh" : "extrusion_calibration_tips_en", nullptr, 720)); bmp_sizer->Add(zoomed_bitmap, 1, wxEXPAND); popup->SetSizer(bmp_sizer); popup->Layout(); popup->Fit(); popup->CenterOnParent(); + wxGetApp().UpdateDlgDarkUI(popup); popup->ShowModal(); } return; @@ -678,6 +709,7 @@ void ExtrusionCalibration::Popup() update(); Layout(); Fit(); + wxGetApp().UpdateDlgDarkUI(this); ShowModal(); } void ExtrusionCalibration::post_select_event() { diff --git a/src/slic3r/GUI/ExtrusionCalibration.hpp b/src/slic3r/GUI/ExtrusionCalibration.hpp index 87afeb9e2..a64b51768 100644 --- a/src/slic3r/GUI/ExtrusionCalibration.hpp +++ b/src/slic3r/GUI/ExtrusionCalibration.hpp @@ -32,7 +32,8 @@ #define EXTRUSION_CALIBRATION_BUTTON_SIZE wxSize(FromDIP(72), FromDIP(24)) #define EXTRUSION_CALIBRATION_INPUT_SIZE wxSize(FromDIP(100), FromDIP(24)) #define EXTRUSION_CALIBRATION_BMP_SIZE wxSize(FromDIP(256), FromDIP(256)) -#define EXTRUSION_CALIBRATION_BMP_BTN_SIZE wxSize(FromDIP(32), FromDIP(32)) +#define EXTRUSION_CALIBRATION_BMP_TIP_BAR wxSize(FromDIP(256), FromDIP(40)) +#define EXTRUSION_CALIBRATION_BMP_BTN_SIZE wxSize(FromDIP(16), FromDIP(16)) @@ -69,6 +70,7 @@ public: std::vector user_filaments; protected: + void init_bitmaps(); void on_dpi_changed(const wxRect &suggested_rect) override; void paint(wxPaintEvent&); void open_bitmap(wxMouseEvent& event); @@ -128,7 +130,8 @@ protected: wxStaticText* m_error_text; wxBitmap m_calibration_tips_open_btn_bmp; - wxBitmap m_calibration_tips_bmp; + wxBitmap m_calibration_tips_bmp_zh; + wxBitmap m_calibration_tips_bmp_en; wxStaticBitmap* m_calibration_tips_static_bmp; // save n and k result wxStaticText* m_k_param; @@ -137,6 +140,8 @@ protected: TextInput* m_n_val; Button* m_button_last_step; Button* m_button_save_result; + + bool m_is_zh{ false }; }; }} // namespace Slic3r::GUI