From 02c71fa6c0fc25bbffb83e56c66acd593511ff03 Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Thu, 23 Apr 2026 00:48:44 +0200 Subject: [PATCH] CrealityPrint: add printer model name and detection UI Add model_name() to map firmware model codes (F008, F012, F021) to human-readable names (K2 Plus, K2 Pro, K2). Update the send dialog init() to detect multi-color support and show a group box with the printer name. Signed-off-by: Igor Mammedov --- src/slic3r/GUI/PrintHostDialogs.cpp | 20 ++++++++++++++++++++ src/slic3r/Utils/CrealityPrint.cpp | 15 +++++++++++++++ src/slic3r/Utils/CrealityPrint.hpp | 1 + 3 files changed, 36 insertions(+) diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 2b04046775..0822f80e12 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -967,6 +967,26 @@ CrealityPrintHostSendDialog::CrealityPrintHostSendDialog(const fs::path& void CrealityPrintHostSendDialog::init() { PrintHostSendDialog::init(); + + auto* creality_host = static_cast(m_printhost); + bool multi_color; + std::string printer_name; + { + wxBusyCursor wait; + multi_color = creality_host->supports_multi_color_print(); + if (multi_color) + printer_name = creality_host->model_name(); + } + if (!multi_color) + return; + + auto* group_box = new wxStaticBox(this, wxID_ANY, + wxString::Format(_L("Printer: %s"), printer_name)); + auto* group_sizer = new wxStaticBoxSizer(group_box, wxVERTICAL); + content_sizer->Add(group_sizer, 0, wxEXPAND); + + this->Layout(); + this->Fit(); } std::map CrealityPrintHostSendDialog::extendedInfo() const diff --git a/src/slic3r/Utils/CrealityPrint.cpp b/src/slic3r/Utils/CrealityPrint.cpp index 06b2bf4154..b34025187e 100644 --- a/src/slic3r/Utils/CrealityPrint.cpp +++ b/src/slic3r/Utils/CrealityPrint.cpp @@ -1,6 +1,7 @@ #include "CrealityPrint.hpp" #include +#include #include #include #include @@ -262,6 +263,20 @@ bool CrealityPrint::supports_multi_color_print() const || m_model == "F021"; // K2 } +std::string CrealityPrint::model_name() const +{ + static const std::map names = { + {"F008", "K2 Plus"}, + {"F012", "K2 Pro"}, + {"F021", "K2"}, + }; + query_model(); + if (m_model.empty()) + return "unreachable"; + auto it = names.find(m_model); + return it != names.end() ? it->second : "unknown (" + m_model + ")"; +} + std::string CrealityPrint::query_boxes_info() const { try { diff --git a/src/slic3r/Utils/CrealityPrint.hpp b/src/slic3r/Utils/CrealityPrint.hpp index 88fb8ac71c..ddb2054420 100644 --- a/src/slic3r/Utils/CrealityPrint.hpp +++ b/src/slic3r/Utils/CrealityPrint.hpp @@ -32,6 +32,7 @@ public: bool upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const override; bool supports_multi_color_print() const; std::string query_boxes_info() const; + std::string model_name() const; protected: virtual void set_auth(Http& http) const;