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 @@
-
\ 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 };
};