diff --git a/resources/images/monitor_extruder_load.png b/resources/images/monitor_extruder_load.png new file mode 100644 index 000000000..27f4f3c61 Binary files /dev/null and b/resources/images/monitor_extruder_load.png differ diff --git a/resources/images/monitor_extruder_load.svg b/resources/images/monitor_extruder_load.svg new file mode 100644 index 000000000..789ddc36c --- /dev/null +++ b/resources/images/monitor_extruder_load.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 555968832..5f15b1aef 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -358,6 +358,7 @@ MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string mc_print_sub_stage = 0; mc_left_time = 0; home_flag = -1; + hw_switch_state = 0; printing_speed_lvl = PrintingSpeedLevel::SPEED_LEVEL_INVALID; } @@ -1046,6 +1047,18 @@ bool MachineObject::is_axis_at_home(std::string axis) } } +bool MachineObject::is_filament_at_extruder() +{ + if (hw_switch_state == 1) + return true; + else if (hw_switch_state == 0) + return false; + else { + //default + return true; + } +} + wxString MachineObject::get_curr_stage() { if (stage_list_info.empty()) { @@ -1820,6 +1833,9 @@ int MachineObject::parse_json(std::string payload) if (jj.contains("home_flag")) { home_flag = jj["home_flag"].get(); } + if (jj.contains("hw_switch_state")) { + hw_switch_state = jj["hw_switch_state"].get(); + } if (jj.contains("mc_remaining_time")) { if (jj["mc_remaining_time"].is_string()) diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 455a340af..ea3ed548b 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -466,6 +466,7 @@ public: int mc_left_time; /* left time in seconds */ int last_mc_print_stage; int home_flag; + int hw_switch_state; bool is_system_printing(); int print_error; @@ -476,6 +477,8 @@ public: bool is_axis_at_home(std::string axis); + bool is_filament_at_extruder(); + wxString get_curr_stage(); // return curr stage index of stage list int get_curr_stage_idx(); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 489500d29..c51fcc2ca 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -177,6 +177,7 @@ void StatusBasePanel::init_bitmaps() m_thumbnail_sdcard = ScalableBitmap(this, "monitor_sdcard_thumbnail", 120); //m_bitmap_camera = create_scaled_bitmap("monitor_camera", nullptr, 18); m_bitmap_extruder = *cache.load_png("monitor_extruder", FromDIP(28), FromDIP(70), false, false); + m_bitmap_extruder_load = *cache.load_png("monitor_extruder_load", FromDIP(28), FromDIP(70), false, false); m_bitmap_sdcard_state_on = create_scaled_bitmap("sdcard_state_on", nullptr, 20); m_bitmap_sdcard_state_off = create_scaled_bitmap("sdcard_state_off", nullptr, 20); } @@ -1305,6 +1306,13 @@ void StatusPanel::update(MachineObject *obj) update_temp_ctrl(obj); update_misc_ctrl(obj); + if (obj && obj->is_filament_at_extruder()) { + m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder_load); + } + else { + m_bitmap_extruder_img->SetBitmap(m_bitmap_extruder); + } + // BBS hide tasklist info // update_tasklist(obj); update_ams(obj); diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index 4d4f4e448..a6a0890c6 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -81,6 +81,7 @@ protected: ScalableBitmap m_bitmap_use_time; ScalableBitmap m_bitmap_use_weight; wxBitmap m_bitmap_extruder; + wxBitmap m_bitmap_extruder_load; CameraRecordingStatus m_state_recording{CameraRecordingStatus::RECORDING_NONE}; CameraTimelapseStatus m_state_timelapse{CameraTimelapseStatus::TIMELAPSE_NONE};