diff --git a/resources/images/monitor_recording_off.svg b/resources/images/monitor_recording_off.svg
new file mode 100644
index 000000000..0ec26d469
--- /dev/null
+++ b/resources/images/monitor_recording_off.svg
@@ -0,0 +1,6 @@
+
diff --git a/resources/images/monitor_recording_on.svg b/resources/images/monitor_recording_on.svg
new file mode 100644
index 000000000..ed153d126
--- /dev/null
+++ b/resources/images/monitor_recording_on.svg
@@ -0,0 +1,7 @@
+
diff --git a/resources/images/monitor_timelapse_off.svg b/resources/images/monitor_timelapse_off.svg
new file mode 100644
index 000000000..bfe6407f0
--- /dev/null
+++ b/resources/images/monitor_timelapse_off.svg
@@ -0,0 +1,8 @@
+
diff --git a/resources/images/monitor_timelapse_on.svg b/resources/images/monitor_timelapse_on.svg
new file mode 100644
index 000000000..5e1a44a7c
--- /dev/null
+++ b/resources/images/monitor_timelapse_on.svg
@@ -0,0 +1,9 @@
+
diff --git a/resources/images/monitor_vcamera_off.svg b/resources/images/monitor_vcamera_off.svg
new file mode 100644
index 000000000..1119224ef
--- /dev/null
+++ b/resources/images/monitor_vcamera_off.svg
@@ -0,0 +1,8 @@
+
diff --git a/resources/images/monitor_vcamera_on.svg b/resources/images/monitor_vcamera_on.svg
new file mode 100644
index 000000000..be03d5239
--- /dev/null
+++ b/resources/images/monitor_vcamera_on.svg
@@ -0,0 +1,8 @@
+
diff --git a/resources/images/recording.svg b/resources/images/recording.svg
deleted file mode 100644
index 76a7a59ef..000000000
--- a/resources/images/recording.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/resources/images/sdcard_state_no.svg b/resources/images/sdcard_state_no.svg
new file mode 100644
index 000000000..6b1770140
--- /dev/null
+++ b/resources/images/sdcard_state_no.svg
@@ -0,0 +1,10 @@
+
diff --git a/resources/images/sdcard_state_on.svg b/resources/images/sdcard_state_normal.svg
similarity index 100%
rename from resources/images/sdcard_state_on.svg
rename to resources/images/sdcard_state_normal.svg
diff --git a/resources/images/timelapse.svg b/resources/images/timelapse.svg
deleted file mode 100644
index 52548b05f..000000000
--- a/resources/images/timelapse.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/resources/images/vcamera.svg b/resources/images/vcamera.svg
deleted file mode 100644
index e72c5dc76..000000000
--- a/resources/images/vcamera.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
diff --git a/src/slic3r/GUI/CameraPopup.cpp b/src/slic3r/GUI/CameraPopup.cpp
index fd3e28ce9..3beb03e9c 100644
--- a/src/slic3r/GUI/CameraPopup.cpp
+++ b/src/slic3r/GUI/CameraPopup.cpp
@@ -269,11 +269,12 @@ void CameraPopup::check_func_supported()
}
}
-void CameraPopup::update()
+void CameraPopup::update(bool vcamera_streaming)
{
if (!m_obj) return;
m_switch_recording->SetValue(m_obj->camera_recording_when_printing);
sync_resolution_setting(m_obj->camera_resolution);
+ sync_vcamera_state(vcamera_streaming);
rescale();
}
diff --git a/src/slic3r/GUI/CameraPopup.hpp b/src/slic3r/GUI/CameraPopup.hpp
index 55c9c905f..f5a7833c9 100644
--- a/src/slic3r/GUI/CameraPopup.hpp
+++ b/src/slic3r/GUI/CameraPopup.hpp
@@ -34,7 +34,7 @@ public:
void sync_vcamera_state(bool show_vcamera);
void check_func_supported();
- void update();
+ void update(bool vcamera_streaming);
enum CameraResolution
{
diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp
index 248cb1d19..5c26ecd5d 100644
--- a/src/slic3r/GUI/DeviceManager.cpp
+++ b/src/slic3r/GUI/DeviceManager.cpp
@@ -1229,7 +1229,7 @@ MachineObject::SdcardState MachineObject::get_sdcard_state()
return sdcard_state;
}
-bool MachineObject::has_timelapse()
+bool MachineObject::is_timelapse()
{
return camera_timelapse;
}
diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp
index 1f1c91eb7..ef0f02877 100644
--- a/src/slic3r/GUI/DeviceManager.hpp
+++ b/src/slic3r/GUI/DeviceManager.hpp
@@ -606,7 +606,7 @@ public:
std::string subtask_name;
bool is_sdcard_printing();
bool has_sdcard();
- bool has_timelapse();
+ bool is_timelapse();
bool is_recording_enable();
bool is_recording();
diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp
index bbc972ef2..4ce3307b5 100644
--- a/src/slic3r/GUI/StatusPanel.cpp
+++ b/src/slic3r/GUI/StatusPanel.cpp
@@ -187,11 +187,15 @@ void StatusBasePanel::init_bitmaps()
m_bitmap_extruder_filled_load = *cache.load_png("monitor_extruder_filled_load", FromDIP(28), FromDIP(70), false, false);
m_bitmap_extruder_empty_unload = *cache.load_png("monitor_extruder_empty_unload", FromDIP(28), FromDIP(70), false, false);
m_bitmap_extruder_filled_unload = *cache.load_png("monitor_extruder_filled_unload", FromDIP(28), FromDIP(70), false, false);
- m_bitmap_sdcard_state_on = create_scaled_bitmap("sdcard_state_on", nullptr, 20);
+ m_bitmap_sdcard_state_no = create_scaled_bitmap("sdcard_state_no", nullptr, 20);
m_bitmap_sdcard_state_abnormal = create_scaled_bitmap("sdcard_state_abnormal", nullptr, 20);
- m_bitmap_recording = create_scaled_bitmap("recording", nullptr, 20);
- m_bitmap_timelapse = create_scaled_bitmap("timelapse", nullptr, 20);
- m_bitmap_vcamera = create_scaled_bitmap("vcamera", nullptr, 20);
+ m_bitmap_sdcard_state_normal = create_scaled_bitmap("sdcard_state_normal", nullptr, 20);
+ m_bitmap_recording_on = create_scaled_bitmap("monitor_recording_on", nullptr, 20);
+ m_bitmap_recording_off = create_scaled_bitmap("monitor_recording_off", nullptr, 20);
+ m_bitmap_timelapse_on = create_scaled_bitmap("monitor_timelapse_on", nullptr, 20);
+ m_bitmap_timelapse_off = create_scaled_bitmap("monitor_timelapse_off", nullptr, 20);
+ m_bitmap_vcamera_on = create_scaled_bitmap("monitor_vcamera_on", nullptr, 20);
+ m_bitmap_vcamera_off = create_scaled_bitmap("monitor_vcamera_off", nullptr, 20);
}
wxBoxSizer *StatusBasePanel::create_monitoring_page()
@@ -228,22 +232,18 @@ wxBoxSizer *StatusBasePanel::create_monitoring_page()
//m_bitmap_camera_img->SetMinSize(wxSize(FromDIP(32), FromDIP(18)));
//bSizer_monitoring_title->Add(m_bitmap_camera_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
- m_bitmap_sdcard_abnormal_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_sdcard_state_abnormal, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
- m_bitmap_sdcard_abnormal_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
- m_bitmap_sdcard_on_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_sdcard_state_on, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
- m_bitmap_sdcard_on_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
- m_bitmap_sdcard_on_img->Hide();
- m_bitmap_sdcard_abnormal_img->Hide();
+ m_bitmap_sdcard_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
+ m_bitmap_sdcard_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
- m_bitmap_timelapse_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_timelapse, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
+ m_bitmap_timelapse_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_timelapse_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_timelapse_img->Hide();
- m_bitmap_recording_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_recording, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
+ m_bitmap_recording_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_recording_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_timelapse_img->Hide();
- m_bitmap_vcamera_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, m_bitmap_vcamera, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
+ m_bitmap_vcamera_img = new wxStaticBitmap(m_panel_monitoring_title, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(38), FromDIP(24)), 0);
m_bitmap_vcamera_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bitmap_vcamera_img->Hide();
@@ -251,15 +251,13 @@ wxBoxSizer *StatusBasePanel::create_monitoring_page()
m_setting_button->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_setting_button->SetBackgroundColour(STATUS_TITLE_BG);
- m_bitmap_sdcard_on_img->SetToolTip(_L("SD Card"));
- m_bitmap_sdcard_abnormal_img->SetToolTip(_L("SD Card Abnormal"));
+ m_bitmap_sdcard_img->SetToolTip(_L("SD Card"));
m_bitmap_timelapse_img->SetToolTip(_L("Timelapse"));
m_bitmap_recording_img->SetToolTip(_L("Video"));
m_bitmap_vcamera_img->SetToolTip(_L("Virtual Camera"));
m_setting_button->SetToolTip(_L("Camera Setting"));
- bSizer_monitoring_title->Add(m_bitmap_sdcard_abnormal_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
- bSizer_monitoring_title->Add(m_bitmap_sdcard_on_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
+ bSizer_monitoring_title->Add(m_bitmap_sdcard_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
bSizer_monitoring_title->Add(m_bitmap_timelapse_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
bSizer_monitoring_title->Add(m_bitmap_recording_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
bSizer_monitoring_title->Add(m_bitmap_vcamera_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
@@ -1041,45 +1039,86 @@ void StatusBasePanel::show_ams_group(bool show)
m_show_ams_group = show;
}
-void StatusPanel::update_img_status(wxStaticBitmap* img, bool on_off)
+void StatusPanel::update_camera_state(MachineObject* obj)
{
- if (on_off)
- img->Show();
- else
- img->Hide();
-}
+ if (!obj) return;
-void StatusPanel::update_camera_state(bool recording, bool timelapse, MachineObject::SdcardState sdcard_state)
-{
+ //m_bitmap_sdcard_abnormal_img->SetToolTip(_L("SD Card Abnormal"));
//sdcard
- switch (sdcard_state) {
- case MachineObject::SdcardState::NO_SDCARD:
- m_bitmap_sdcard_on_img->Hide();
- m_bitmap_sdcard_abnormal_img->Hide();
- break;
- case MachineObject::SdcardState::HAS_SDCARD_NORMAL:
- m_bitmap_sdcard_on_img->Show();
- m_bitmap_sdcard_abnormal_img->Hide();
- break;
- case MachineObject::SdcardState::HAS_SDCARD_ABNORMAL:
- m_bitmap_sdcard_on_img->Hide();
- m_bitmap_sdcard_abnormal_img->Show();
- break;
- default:
- ;
+ if (m_last_sdcard != (int)obj->get_sdcard_state()) {
+ if (obj->get_sdcard_state() == MachineObject::SdcardState::NO_SDCARD) {
+ m_bitmap_sdcard_img->SetBitmap(m_bitmap_sdcard_state_no);
+ m_bitmap_sdcard_img->SetToolTip(_L("No SD Card"));
+ } else if (obj->get_sdcard_state() == MachineObject::SdcardState::HAS_SDCARD_NORMAL) {
+ m_bitmap_sdcard_img->SetBitmap(m_bitmap_sdcard_state_normal);
+ m_bitmap_sdcard_img->SetToolTip(_L("SD Card"));
+ } else if (obj->get_sdcard_state() == MachineObject::SdcardState::HAS_SDCARD_ABNORMAL) {
+ m_bitmap_sdcard_img->SetBitmap(m_bitmap_sdcard_state_abnormal);
+ m_bitmap_sdcard_img->SetToolTip(_L("SD Card Abnormal"));
+ } else {
+ m_bitmap_sdcard_img->SetBitmap(m_bitmap_sdcard_state_normal);
+ m_bitmap_sdcard_img->SetToolTip(_L("SD Card"));
+ }
+ m_last_sdcard = (int)obj->get_sdcard_state();
}
+
//recording
- update_img_status(m_bitmap_recording_img, recording);
+ if (obj->is_function_supported(PrinterFunction::FUNC_RECORDING)) {
+ if (m_last_recording != (obj->is_recording() ? 1: 0)) {
+ if (obj->is_recording()) {
+ m_bitmap_recording_img->SetBitmap(m_bitmap_recording_on);
+ } else {
+ m_bitmap_recording_img->SetBitmap(m_bitmap_recording_off);
+ }
+ m_last_recording = obj->is_recording() ? 1 : 0;
+ }
+ if (!m_bitmap_recording_img->IsShown())
+ m_bitmap_recording_img->Show();
+ } else {
+ if (m_bitmap_recording_img->IsShown())
+ m_bitmap_recording_img->Hide();
+ }
+
//timelapse
- update_img_status(m_bitmap_timelapse_img, timelapse);
+ if (obj->is_function_supported(PrinterFunction::FUNC_TIMELAPSE)) {
+ if (m_last_timelapse != (obj->is_timelapse() ? 1: 0)) {
+ if (obj->is_timelapse()) {
+ m_bitmap_timelapse_img->SetBitmap(m_bitmap_timelapse_on);
+ } else {
+ m_bitmap_timelapse_img->SetBitmap(m_bitmap_timelapse_off);
+ }
+ m_last_timelapse = obj->is_timelapse() ? 1 : 0;
+ }
+ if (!m_bitmap_timelapse_img->IsShown())
+ m_bitmap_timelapse_img->Show();
+ } else {
+ if (m_bitmap_timelapse_img->IsShown())
+ m_bitmap_timelapse_img->Hide();
+ }
+
//vcamera
- update_img_status(m_bitmap_vcamera_img, m_media_play_ctrl->IsStreaming());
- show_vcamera = m_media_play_ctrl->IsStreaming();
+ if (obj->is_function_supported(PrinterFunction::FUNC_VIRTUAL_CAMERA)) {
+ if (m_last_vcamera != (m_media_play_ctrl->IsStreaming() ? 1: 0)) {
+ if (m_media_play_ctrl->IsStreaming()) {
+ m_bitmap_vcamera_img->SetBitmap(m_bitmap_vcamera_on);
+ } else {
+ m_bitmap_vcamera_img->SetBitmap(m_bitmap_vcamera_off);
+ }
+ m_last_vcamera = m_media_play_ctrl->IsStreaming() ? 1 : 0;
+ }
+ if (!m_bitmap_vcamera_img->IsShown())
+ m_bitmap_vcamera_img->Show();
+ } else {
+ if (m_bitmap_vcamera_img->IsShown())
+ m_bitmap_vcamera_img->Hide();
+ }
+
//camera setting
if (m_camera_popup) {
- m_camera_popup->update();
- m_camera_popup->sync_vcamera_state(show_vcamera);
+ bool show_vcamera = m_media_play_ctrl->IsStreaming();
+ m_camera_popup->update(show_vcamera);
}
+
m_panel_monitoring_title->Layout();
}
@@ -1455,7 +1494,7 @@ void StatusPanel::update(MachineObject *obj)
update_error_message();
}
- update_camera_state(obj->is_recording_enable(), obj->has_timelapse(), obj->get_sdcard_state());
+ update_camera_state(obj);
m_machine_ctrl_panel->Thaw();
}
@@ -1684,16 +1723,19 @@ void StatusPanel::update_extruder_status(MachineObject* obj)
{
if (!obj) return;
if (obj->is_filament_at_extruder()) {
- if (obj->extruder_axis_status == MachineObject::ExtruderAxisStatus::LOAD)
+ if (obj->extruder_axis_status == MachineObject::ExtruderAxisStatus::LOAD) {
m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_filled_load);
- else
+ }
+ else {
m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_filled_unload);
+ }
}
else {
- if (obj->extruder_axis_status == MachineObject::ExtruderAxisStatus::LOAD)
+ if (obj->extruder_axis_status == MachineObject::ExtruderAxisStatus::LOAD) {
m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_empty_load);
- else
+ } else {
m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_empty_unload);
+ }
}
}
@@ -2677,6 +2719,7 @@ void StatusPanel::on_camera_enter(wxMouseEvent& event)
wxPoint pos = ctrl->ClientToScreen(wxPoint(0, 0));
wxSize sz = ctrl->GetSize();
m_camera_popup->Position(pos, wxSize(sz.x, sz.y));
+ m_camera_popup->update(m_media_play_ctrl->IsStreaming());
m_camera_popup->Popup();
}
}
@@ -2846,8 +2889,7 @@ void StatusPanel::msw_rescale()
m_bitmap_recording_img->SetMinSize(wxSize(38, 24));
m_bitmap_vcamera_img->SetMinSize(wxSize(38, 24));
m_setting_button->SetMinSize(wxSize(38, 24));
- m_bitmap_sdcard_abnormal_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
- m_bitmap_sdcard_on_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
+ m_bitmap_sdcard_img->SetMinSize(wxSize(FromDIP(38), FromDIP(24)));
m_bpButton_xy->Rescale();
m_tempCtrl_nozzle->SetMinSize(TEMP_CTRL_MIN_SIZE);
diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp
index 85ea8a7b5..716767231 100644
--- a/src/slic3r/GUI/StatusPanel.hpp
+++ b/src/slic3r/GUI/StatusPanel.hpp
@@ -94,11 +94,15 @@ protected:
CameraItem *m_setting_button;
wxBitmap m_bitmap_camera;
- wxBitmap m_bitmap_sdcard_state_on;
+ wxBitmap m_bitmap_sdcard_state_normal;
wxBitmap m_bitmap_sdcard_state_abnormal;
- wxBitmap m_bitmap_recording;
- wxBitmap m_bitmap_timelapse;
- wxBitmap m_bitmap_vcamera;
+ wxBitmap m_bitmap_sdcard_state_no;
+ wxBitmap m_bitmap_recording_on;
+ wxBitmap m_bitmap_recording_off;
+ wxBitmap m_bitmap_timelapse_on;
+ wxBitmap m_bitmap_timelapse_off;
+ wxBitmap m_bitmap_vcamera_on;
+ wxBitmap m_bitmap_vcamera_off;
/* title panel */
wxPanel * media_ctrl_panel;
@@ -116,8 +120,7 @@ protected:
wxStaticBitmap *m_bitmap_recording_img;
wxStaticBitmap *m_bitmap_timelapse_img;
wxStaticBitmap* m_bitmap_vcamera_img;
- wxStaticBitmap *m_bitmap_sdcard_on_img;
- wxStaticBitmap *m_bitmap_sdcard_abnormal_img;
+ wxStaticBitmap *m_bitmap_sdcard_img;
wxStaticBitmap *m_bitmap_static_use_time;
wxStaticBitmap *m_bitmap_static_use_weight;
@@ -268,6 +271,12 @@ protected:
wxString m_request_url;
bool m_start_loading_thumbnail = false;
bool m_load_sdcard_thumbnail = false;
+ int m_last_sdcard = -1;
+ int m_last_recording = -1;
+ int m_last_timelapse = -1;
+ int m_last_extrusion = -1;
+ int m_last_vcamera = -1;
+
wxWebRequest web_request;
bool bed_temp_input = false;
bool nozzle_temp_input = false;
@@ -363,8 +372,7 @@ protected:
bool is_task_changed(MachineObject* obj);
/* camera */
- void update_camera_state(bool recording, bool timelapse, MachineObject::SdcardState sdcard_state);
- void update_img_status(wxStaticBitmap* img, bool on_off);
+ void update_camera_state(MachineObject* obj);
bool show_vcamera = false;
public: