diff --git a/resources/config.json b/resources/config.json index 71ecd48e9..2eea04ed9 100644 --- a/resources/config.json +++ b/resources/config.json @@ -23,7 +23,8 @@ "camera_resolution":["720p"], "bed_temperature_limit": 100, "model_id": "C11", - "printer_type": "C11" + "printer_type": "C11", + "printer_thumbnail_image": "printer_thumbnail_p1p" }, { "display_name": "Bambu Lab X1", @@ -32,7 +33,8 @@ }, "camera_resolution":["720p","1080p"], "model_id": "BL-P002", - "printer_type": "3DPrinter-X1" + "printer_type": "3DPrinter-X1", + "printer_thumbnail_image": "printer_thumbnail" }, { "display_name": "Bambu Lab X1 Carbon", @@ -41,7 +43,8 @@ }, "model_id": "BL-P001", "camera_resolution":["720p","1080p"], - "printer_type": "3DPrinter-X1-Carbon" + "printer_type": "3DPrinter-X1-Carbon", + "printer_thumbnail_image": "printer_thumbnail" } ] } diff --git a/resources/images/monitor_upgrade_printer.svg b/resources/images/monitor_upgrade_printer.svg deleted file mode 100644 index c320da4e9..000000000 --- a/resources/images/monitor_upgrade_printer.svg +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/resources/images/printer_thumbnail.svg b/resources/images/printer_thumbnail.svg index 8f8b903e6..2a2c5e0a5 100644 --- a/resources/images/printer_thumbnail.svg +++ b/resources/images/printer_thumbnail.svg @@ -1,100 +1,274 @@ - - - - - - - - Layer 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/printer_thumbnail_dark.svg b/resources/images/printer_thumbnail_dark.svg new file mode 100644 index 000000000..03c280357 --- /dev/null +++ b/resources/images/printer_thumbnail_dark.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/printer_thumbnail_p1p.svg b/resources/images/printer_thumbnail_p1p.svg new file mode 100644 index 000000000..4ba38749c --- /dev/null +++ b/resources/images/printer_thumbnail_p1p.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/printer_thumbnail_p1p_dark.svg b/resources/images/printer_thumbnail_p1p_dark.svg new file mode 100644 index 000000000..ce344e500 --- /dev/null +++ b/resources/images/printer_thumbnail_p1p_dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index 8f507b9c6..5988c4f77 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -37,8 +37,9 @@ namespace GUI { wxBoxSizer *m_sizere_left_h = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sizere_left_v= new wxBoxSizer(wxVERTICAL); - auto m_printer_img = new wxStaticBitmap(m_panel_left, wxID_ANY, create_scaled_bitmap("printer_thumbnail", nullptr, 96), wxDefaultPosition, wxSize(FromDIP(100), FromDIP(96)), 0); + m_printer_img = new wxStaticBitmap(m_panel_left, wxID_ANY, create_scaled_bitmap("printer_thumbnail", nullptr, FromDIP(100)), wxDefaultPosition, wxSize(FromDIP(120), FromDIP(120)), 0); m_printer_img->SetBackgroundColour(BIND_DIALOG_GREY200); + m_printer_img->Hide(); m_printer_name = new wxStaticText(m_panel_left, wxID_ANY, wxEmptyString); m_printer_name->SetBackgroundColour(BIND_DIALOG_GREY200); m_printer_name->SetFont(::Label::Head_14); @@ -274,9 +275,18 @@ void BindMachineDialog::on_dpi_changed(const wxRect &suggested_rect) void BindMachineDialog::on_show(wxShowEvent &event) { - //m_printer_name->SetLabelText(m_machine_info->get_printer_type_string()); - m_printer_name->SetLabelText(from_u8(m_machine_info->dev_name)); - Layout(); + if (event.IsShown()) { + auto img = m_machine_info->get_printer_thumbnail_img_str(); + if (wxGetApp().dark_mode()) { img += "_dark"; } + auto bitmap = create_scaled_bitmap(img, this, FromDIP(100)); + m_printer_img->SetBitmap(bitmap); + m_printer_img->Refresh(); + m_printer_img->Show(); + + m_printer_name->SetLabelText(from_u8(m_machine_info->dev_name)); + Layout(); + event.Skip(); + } } @@ -302,8 +312,9 @@ UnBindMachineDialog::UnBindMachineDialog(Plater *plater /*= nullptr*/) wxBoxSizer *m_sizere_left_h = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sizere_left_v= new wxBoxSizer(wxVERTICAL); - auto m_printer_img = new wxStaticBitmap(m_panel_left, wxID_ANY, create_scaled_bitmap("printer_thumbnail", nullptr, 96), wxDefaultPosition, wxSize(FromDIP(100), FromDIP(96)),0); + m_printer_img = new wxStaticBitmap(m_panel_left, wxID_ANY, create_scaled_bitmap("printer_thumbnail", nullptr, FromDIP(100)), wxDefaultPosition, wxSize(FromDIP(120), FromDIP(120)), 0); m_printer_img->SetBackgroundColour(BIND_DIALOG_GREY200); + m_printer_img->Hide(); m_printer_name = new wxStaticText(m_panel_left, wxID_ANY, wxEmptyString); m_printer_name->SetFont(::Label::Head_14); m_printer_name->SetBackgroundColour(BIND_DIALOG_GREY200); @@ -488,9 +499,18 @@ void UnBindMachineDialog::on_unbind_printer(wxCommandEvent &event) void UnBindMachineDialog::on_show(wxShowEvent &event) { - //m_printer_name->SetLabelText(m_machine_info->get_printer_type_string()); - m_printer_name->SetLabelText(from_u8(m_machine_info->dev_name)); - Layout(); + if (event.IsShown()) { + auto img = m_machine_info->get_printer_thumbnail_img_str(); + if (wxGetApp().dark_mode()) { img += "_dark"; } + auto bitmap = create_scaled_bitmap(img, this, FromDIP(100)); + m_printer_img->SetBitmap(bitmap); + m_printer_img->Refresh(); + m_printer_img->Show(); + + m_printer_name->SetLabelText(from_u8(m_machine_info->dev_name)); + Layout(); + event.Skip(); + } } }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/BindDialog.hpp b/src/slic3r/GUI/BindDialog.hpp index f7ed5debf..6df81124f 100644 --- a/src/slic3r/GUI/BindDialog.hpp +++ b/src/slic3r/GUI/BindDialog.hpp @@ -55,6 +55,7 @@ private: Button * m_button_cancel; wxSimplebook *m_simplebook; wxStaticBitmap *m_avatar; + wxStaticBitmap *m_printer_img; wxWebRequest web_request; MachineObject * m_machine_info{nullptr}; @@ -86,6 +87,7 @@ protected: Button * m_button_cancel; MachineObject *m_machine_info{nullptr}; wxStaticBitmap *m_avatar; + wxStaticBitmap *m_printer_img; public: UnBindMachineDialog(Plater *plater = nullptr); diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index 243ddd2ee..06b0a2f16 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -335,7 +335,15 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_ //if (!new_color.empty()) // replaces["\"#ED6B21\""] = "\"" + new_color + "\""; - NSVGimage *image = nsvgParseFromFileWithReplace(Slic3r::var(bitmap_name + ".svg").c_str(), "px", 96.0f, replaces); + NSVGimage *image = nullptr; + if (strstr(bitmap_name.c_str(), "printer_thumbnail") == NULL) { + image = nsvgParseFromFileWithReplace(Slic3r::var(bitmap_name + ".svg").c_str(), "px", 96.0f, replaces); + } + else { + std::map temp_replaces; + image = nsvgParseFromFileWithReplace(Slic3r::var(bitmap_name + ".svg").c_str(), "px", 96.0f, temp_replaces); + } + if (image == nullptr) return nullptr; diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 5c26ecd5d..fe91d40cb 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -279,6 +279,11 @@ std::string MachineObject::get_preset_printer_model_name(std::string printer_typ return DeviceManager::get_printer_display_name(printer_type); } +std::string MachineObject::get_preset_printer_thumbnail_img(std::string printer_type) +{ + return DeviceManager::get_printer_thumbnail_img(printer_type); +} + wxString MachineObject::get_printer_type_display_str() { std::string display_name = get_preset_printer_model_name(printer_type); @@ -288,6 +293,15 @@ wxString MachineObject::get_printer_type_display_str() return _L("Unknown"); } +std::string MachineObject::get_printer_thumbnail_img_str() +{ + std::string img_str = get_preset_printer_thumbnail_img(printer_type); + if (!img_str.empty()) + return img_str; + else + return "printer_thumbnail"; +} + void MachineObject::set_access_code(std::string code) { this->access_code = code; @@ -3696,6 +3710,20 @@ std::string DeviceManager::get_printer_display_name(std::string type_str) return ""; } +std::string DeviceManager::get_printer_thumbnail_img(std::string type_str) +{ + if (DeviceManager::function_table.contains("printers")) { + for (auto printer : DeviceManager::function_table["printers"]) { + if (printer.contains("model_id") && printer["model_id"].get() == type_str) { + if (printer.contains("printer_thumbnail_image")) { + return printer["printer_thumbnail_image"].get(); + } + } + } + } + return ""; +} + bool DeviceManager::is_function_supported(std::string type_str, std::string function_name) { if (DeviceManager::function_table.contains("printers")) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index ef0f02877..fbf958faa 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -368,6 +368,7 @@ public: static inline int m_sequence_id = 20000; static std::string parse_printer_type(std::string type_str); static std::string get_preset_printer_model_name(std::string printer_type); + static std::string get_preset_printer_thumbnail_img(std::string printer_type); static bool is_bbl_filament(std::string tag_uid); typedef std::function UploadedFn; @@ -387,8 +388,13 @@ public: bool is_lan_mode_printer(); //PRINTER_TYPE printer_type = PRINTER_3DPrinter_UKNOWN; std::string printer_type; /* model_id */ + + std::string printer_thumbnail_img; + std::string monitor_upgrade_printer_img; + wxString get_printer_type_display_str(); + std::string get_printer_thumbnail_img_str(); std::string product_name; // set by iot service, get /user/print std::string bind_user_name; @@ -767,6 +773,7 @@ public: static json function_table; static std::string parse_printer_type(std::string type_str); static std::string get_printer_display_name(std::string type_str); + static std::string get_printer_thumbnail_img(std::string type_str); static bool is_function_supported(std::string type_str, std::string function_name); static std::vector get_resolution_supported(std::string type_str); diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 11ce35cb3..8a9687c62 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -248,6 +248,7 @@ wxWindow* MonitorPanel::create_side_tools() void MonitorPanel::on_sys_color_changed() { m_status_info_panel->on_sys_color_changed(); + m_upgrade_panel->on_sys_color_changed(); } void MonitorPanel::msw_rescale() diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 223c3c1e8..17c9ac9fe 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -281,7 +281,7 @@ void MachineInfoPanel::msw_rescale() void MachineInfoPanel::init_bitmaps() { - m_img_printer = create_scaled_bitmap("monitor_upgrade_printer", nullptr, 200); + m_img_printer = create_scaled_bitmap("printer_thumbnail", nullptr, 160); m_img_monitor_ams = create_scaled_bitmap("monitor_upgrade_ams", nullptr, 200); m_img_ext = create_scaled_bitmap("monitor_upgrade_ext", nullptr, 200); upgrade_green_icon = create_scaled_bitmap("monitor_upgrade_online", nullptr, 5); @@ -298,8 +298,21 @@ MachineInfoPanel::~MachineInfoPanel() delete confirm_dlg; } +void MachineInfoPanel::Update_printer_img(MachineObject* obj) +{ + if (!obj) {return;} + auto img = obj->get_printer_thumbnail_img_str(); + if (wxGetApp().dark_mode()) {img += "_dark";} + m_img_printer = create_scaled_bitmap(img, nullptr, 160); + m_printer_img->SetBitmap(m_img_printer); + m_printer_img->Refresh(); +} + void MachineInfoPanel::update(MachineObject* obj) { + if (m_obj != obj) + Update_printer_img(obj); + m_obj = obj; if (obj) { this->Freeze(); @@ -723,6 +736,11 @@ void MachineInfoPanel::show_ext(bool show, bool force_update) m_last_ext_show = show; } +void MachineInfoPanel::on_sys_color_changed() +{ + Update_printer_img(m_obj); +} + void MachineInfoPanel::upgrade_firmware_internal() { if (!m_obj) return; @@ -947,6 +965,11 @@ void UpgradePanel::show_status(int status) } } +void UpgradePanel::on_sys_color_changed() +{ + m_push_upgrade_panel->on_sys_color_changed(); +} + bool UpgradePanel::Show(bool show) { if (show) { diff --git a/src/slic3r/GUI/UpgradePanel.hpp b/src/slic3r/GUI/UpgradePanel.hpp index c49f2e170..55fa69b18 100644 --- a/src/slic3r/GUI/UpgradePanel.hpp +++ b/src/slic3r/GUI/UpgradePanel.hpp @@ -114,6 +114,8 @@ public: MachineInfoPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString); ~MachineInfoPanel(); + void on_sys_color_changed(); + void Update_printer_img(MachineObject* obj); void init_bitmaps(); Button* get_btn() { @@ -181,6 +183,7 @@ public: void refresh_version_and_firmware(MachineObject* obj); void update(MachineObject *obj); void show_status(int status); + void on_sys_color_changed(); MachineObject *m_obj { nullptr }; };