From 64ae3c3a56c137cfe18eb84bf62d3c5274beb0b6 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Thu, 17 Nov 2022 10:50:14 +0800 Subject: [PATCH] FIX: [STUDIO-1360] media file image scale on macOS Change-Id: I2a25ff53b9beb08a90aca07adad7accc69b6d2ed --- src/slic3r/GUI/ImageGrid.cpp | 6 ++--- src/slic3r/GUI/ImageGrid.h | 4 ++-- src/slic3r/GUI/MediaFilePanel.cpp | 24 ++++++++++---------- src/slic3r/GUI/Printer/PrinterFileSystem.cpp | 6 ++++- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/slic3r/GUI/ImageGrid.cpp b/src/slic3r/GUI/ImageGrid.cpp index 9a712329f..722228b1f 100644 --- a/src/slic3r/GUI/ImageGrid.cpp +++ b/src/slic3r/GUI/ImageGrid.cpp @@ -72,7 +72,7 @@ void ImageGrid::SetFileSystem(boost::shared_ptr file_sys) UpdateFileSystem(); } -void ImageGrid::SetStatus(wxBitmap const & icon, wxString const &msg) +void ImageGrid::SetStatus(ScalableBitmap const & icon, wxString const &msg) { int code = m_file_sys ? m_file_sys->GetLastError() : 1; m_status_icon = icon; @@ -475,10 +475,10 @@ void ImageGrid::render(wxDC& dc) if (!m_file_sys || m_file_sys->GetCount() == 0) { dc.DrawRectangle({ 0, 0, size.x, size.y }); if (!m_status_msg.IsEmpty()) { - auto si = m_status_icon.GetSize(); + auto si = m_status_icon.GetBmpSize(); auto st = dc.GetTextExtent(m_status_msg); auto rect = wxRect{0, 0, max(st.x, si.x), si.y + 26 + st.y}.CenterIn(wxRect({0, 0}, size)); - dc.DrawBitmap(m_status_icon, rect.x + (rect.width - si.x) / 2, rect.y); + dc.DrawBitmap(m_status_icon.bmp(), rect.x + (rect.width - si.x) / 2, rect.y); dc.SetTextForeground(wxColor(0x909090)); dc.DrawText(m_status_msg, rect.x + (rect.width - st.x) / 2, rect.GetBottom() - st.y); } diff --git a/src/slic3r/GUI/ImageGrid.h b/src/slic3r/GUI/ImageGrid.h index 516bd3f6b..5a742d581 100644 --- a/src/slic3r/GUI/ImageGrid.h +++ b/src/slic3r/GUI/ImageGrid.h @@ -32,7 +32,7 @@ public: void SetFileSystem(boost::shared_ptr file_sys); - void SetStatus(wxBitmap const & icon, wxString const &msg); + void SetStatus(ScalableBitmap const & icon, wxString const &msg); boost::shared_ptr GetFileSystem() { return m_file_sys; } @@ -93,7 +93,7 @@ protected: private: boost::shared_ptr m_file_sys; - wxBitmap m_status_icon; + ScalableBitmap m_status_icon; wxString m_status_msg; ScalableBitmap m_checked_icon; diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index 52ead9e46..5d73e7fc1 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -108,7 +108,7 @@ MediaFilePanel::MediaFilePanel(wxWindow * parent) sizer->Add(top_sizer, 0, wxEXPAND); m_image_grid = new ImageGrid(this); - m_image_grid->SetStatus(m_bmp_failed.bmp(), _L("No printers.")); + m_image_grid->SetStatus(m_bmp_failed, _L("No printers.")); sizer->Add(m_image_grid, 1, wxEXPAND); SetSizer(sizer); @@ -201,9 +201,9 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj) m_button_management->Enable(false); SetSelecting(false); if (m_machine.empty()) { - m_image_grid->SetStatus(m_bmp_failed.bmp(), _L("No printers.")); + m_image_grid->SetStatus(m_bmp_failed, _L("No printers.")); } else if (!m_supported) { - m_image_grid->SetStatus(m_bmp_failed.bmp(), _L("Not supported by this model of printer!")); + m_image_grid->SetStatus(m_bmp_failed, _L("Not supported by this model of printer!")); } else { boost::shared_ptr fs(new PrinterFileSystem); fs->Attached(); @@ -232,14 +232,14 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj) boost::shared_ptr fs(wfs.lock()); if (m_image_grid->GetFileSystem() != fs) // canceled return; - wxBitmap icon; + ScalableBitmap icon; wxString msg; switch (e.GetInt()) { - case PrinterFileSystem::Initializing: icon = m_bmp_loading.bmp(); msg = _L("Initializing..."); break; - case PrinterFileSystem::Connecting: icon = m_bmp_loading.bmp(); msg = _L("Connecting..."); break; - case PrinterFileSystem::Failed: icon = m_bmp_failed.bmp(); msg = _L("Connect failed [%d]!"); break; - case PrinterFileSystem::ListSyncing: icon = m_bmp_loading.bmp(); msg = _L("Loading file list..."); break; - case PrinterFileSystem::ListReady: icon = m_bmp_empty.bmp(); msg = _L("No files"); break; + case PrinterFileSystem::Initializing: icon = m_bmp_loading; msg = _L("Initializing..."); break; + case PrinterFileSystem::Connecting: icon = m_bmp_loading; msg = _L("Connecting..."); break; + case PrinterFileSystem::Failed: icon = m_bmp_failed; msg = _L("Connect failed [%d]!"); break; + case PrinterFileSystem::ListSyncing: icon = m_bmp_loading; msg = _L("Loading file list..."); break; + case PrinterFileSystem::ListReady: icon = m_bmp_empty; msg = _L("No files"); break; } if (fs->GetCount() == 0) m_image_grid->SetStatus(icon, msg); @@ -311,11 +311,11 @@ void MediaFilePanel::fetchUrl(boost::weak_ptr wfs) return; } if (m_lan_mode ) { // not support tutk - m_image_grid->SetStatus(m_bmp_failed.bmp(), _L("Not accessible in LAN-only mode!")); + m_image_grid->SetStatus(m_bmp_failed, _L("Not accessible in LAN-only mode!")); return; } if (!m_tutk_support) { // not support tutk - m_image_grid->SetStatus(m_bmp_failed.bmp(), _L("Missing LAN ip of printer!")); + m_image_grid->SetStatus(m_bmp_failed, _L("Missing LAN ip of printer!")); return; } NetworkAgent *agent = wxGetApp().getAgent(); @@ -329,7 +329,7 @@ void MediaFilePanel::fetchUrl(boost::weak_ptr wfs) if (boost::algorithm::starts_with(url, "bambu:///")) fs->SetUrl(url); else - m_image_grid->SetStatus(m_bmp_failed.bmp(), url.empty() ? _L("Network unreachable") : from_u8(url)); + m_image_grid->SetStatus(m_bmp_failed, url.empty() ? _L("Network unreachable") : from_u8(url)); }); }); } diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index 0c3232aa3..84698c15a 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -34,8 +34,12 @@ struct StaticBambuLib : BambuLib { PrinterFileSystem::PrinterFileSystem() : BambuLib(StaticBambuLib::get()) { - if (!default_thumbnail.IsOk()) + if (!default_thumbnail.IsOk()) { default_thumbnail = *Slic3r::GUI::BitmapCache().load_svg("printer_file", 0, 0); +#ifdef __APPLE__ + default_thumbnail = wxBitmap(default_thumbnail.ConvertToImage(), -1, 1); +#endif + } m_session.owner = this; #ifdef PRINTER_FILE_SYSTEM_TEST auto time = wxDateTime::Now();