From 6133ceac20d9314075da82ae655197530fc6abd4 Mon Sep 17 00:00:00 2001 From: "tao.jin" Date: Tue, 29 Nov 2022 21:05:26 +0800 Subject: [PATCH] NEW: refresh task thumbnail with brokenimg Change-Id: I39393a43c681ba954f9d3975b35df4551b314ef2 --- resources/images/monitor_brokenimg.png | Bin 0 -> 11566 bytes src/slic3r/GUI/StatusPanel.cpp | 36 +++++++++++++++++++++---- src/slic3r/GUI/StatusPanel.hpp | 11 ++++++++ 3 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 resources/images/monitor_brokenimg.png diff --git a/resources/images/monitor_brokenimg.png b/resources/images/monitor_brokenimg.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2e180ebb7a15d73f11a9f158ed88b59e44eb27 GIT binary patch literal 11566 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 literal 0 HcmV?d00001 diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index e3a7c1aff..7294d7781 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -180,6 +180,7 @@ void StatusBasePanel::init_bitmaps() m_bitmap_use_time = ScalableBitmap(this, "print_info_time", 16); m_bitmap_use_weight = ScalableBitmap(this, "print_info_weight", 16); m_thumbnail_placeholder = ScalableBitmap(this, "monitor_placeholder", 120); + m_thumbnail_brokenimg = ScalableBitmap(this, "monitor_brokenimg", 120); m_thumbnail_sdcard = ScalableBitmap(this, "monitor_sdcard_thumbnail", 120); //m_bitmap_camera = create_scaled_bitmap("monitor_camera", nullptr, 18); m_bitmap_extruder_empty_load = *cache.load_png("monitor_extruder_empty_load", FromDIP(28), FromDIP(70), false, false); @@ -1130,6 +1131,7 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co // Connect Events //m_bitmap_thumbnail->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_enter), NULL, this); //m_bitmap_thumbnail->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_leave), NULL, this); + m_bitmap_thumbnail->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(StatusPanel::refresh_thumbnail_webrequest), NULL, this); m_setting_button->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(StatusPanel::on_camera_enter), NULL, this); m_project_task_panel->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_leave), NULL, this); m_button_pause_resume->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_subtask_pause_resume), NULL, this); @@ -1169,6 +1171,7 @@ StatusPanel::~StatusPanel() // Disconnect Events //m_bitmap_thumbnail->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_enter), NULL, this); //m_bitmap_thumbnail->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(StatusPanel::on_thumbnail_leave), NULL, this); + m_bitmap_thumbnail->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(StatusPanel::refresh_thumbnail_webrequest), NULL, this); m_setting_button->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(StatusPanel::on_camera_enter), NULL, this); m_button_pause_resume->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_subtask_pause_resume), NULL, this); m_button_abort->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_subtask_abort), NULL, this); @@ -1329,13 +1332,16 @@ void StatusPanel::on_webrequest_state(wxWebRequestEvent &evt) img_list.insert(std::make_pair(m_request_url, img)); wxImage resize_img = img.Scale(m_bitmap_thumbnail->GetSize().x, m_bitmap_thumbnail->GetSize().y, wxIMAGE_QUALITY_HIGH); m_bitmap_thumbnail->SetBitmap(resize_img); + task_thumbnail_state = ThumbnailState::TASK_THUMBNAIL; break; } - case wxWebRequest::State_Failed: { - break; - } + case wxWebRequest::State_Failed: case wxWebRequest::State_Cancelled: - case wxWebRequest::State_Unauthorized: + case wxWebRequest::State_Unauthorized: { + m_bitmap_thumbnail->SetBitmap(m_thumbnail_brokenimg.bmp()); + task_thumbnail_state = ThumbnailState::BROKEN_IMG; + break; + } case wxWebRequest::State_Active: case wxWebRequest::State_Idle: break; default: break; @@ -2062,9 +2068,10 @@ void StatusPanel::update_cloud_subtask(MachineObject *obj) img = it->second; wxImage resize_img = img.Scale(m_bitmap_thumbnail->GetSize().x, m_bitmap_thumbnail->GetSize().y); m_bitmap_thumbnail->SetBitmap(resize_img); + task_thumbnail_state == ThumbnailState::TASK_THUMBNAIL; } else { web_request = wxWebSession::GetDefault().CreateRequest(this, m_request_url); - BOOST_LOG_TRIVIAL(trace) << "monitor: start reqeust thumbnail, url = " << m_request_url; + BOOST_LOG_TRIVIAL(trace) << "monitor: start request thumbnail, url = " << m_request_url; web_request.Start(); m_start_loading_thumbnail = false; } @@ -2079,6 +2086,7 @@ void StatusPanel::update_sdcard_subtask(MachineObject *obj) if (!m_load_sdcard_thumbnail) { m_bitmap_thumbnail->SetBitmap(m_thumbnail_sdcard.bmp()); + task_thumbnail_state = ThumbnailState::SDCARD_THUMBNAIL; m_load_sdcard_thumbnail = true; } } @@ -2099,6 +2107,7 @@ void StatusPanel::reset_printing_values() m_staticText_progress_percent->SetLabelText(NA_STR); m_staticText_progress_percent_icon->SetLabelText(wxEmptyString); m_bitmap_thumbnail->SetBitmap(m_thumbnail_placeholder.bmp()); + task_thumbnail_state = ThumbnailState::PLACE_HOLDER; m_start_loading_thumbnail = false; m_load_sdcard_thumbnail = false; skip_print_error = 0; @@ -2624,6 +2633,23 @@ void StatusPanel::on_thumbnail_leave(wxMouseEvent &event) } } +void StatusPanel::refresh_thumbnail_webrequest(wxMouseEvent &event) +{ + if (!obj) return; + if (task_thumbnail_state != ThumbnailState::BROKEN_IMG) return; + + if (obj->slice_info) { + m_request_url = wxString(obj->slice_info->thumbnail_url); + if (!m_request_url.IsEmpty()) { + web_request = wxWebSession::GetDefault().CreateRequest(this, m_request_url); + BOOST_LOG_TRIVIAL(trace) << "monitor: create new webrequest, state = " << web_request.GetState() << ", url = " << m_request_url; + if (web_request.GetState() == wxWebRequest::State_Idle) + web_request.Start(); + BOOST_LOG_TRIVIAL(trace) << "monitor: start new webrequest, state = " << web_request.GetState() << ", url = "<< m_request_url; + } + } +} + void StatusPanel::on_switch_vcamera(wxMouseEvent &event) { //if (!obj) return; diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index edda81402..85ea8a7b5 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -68,6 +68,7 @@ class StatusBasePanel : public wxScrolledWindow protected: wxBitmap m_item_placeholder; ScalableBitmap m_thumbnail_placeholder; + ScalableBitmap m_thumbnail_brokenimg; ScalableBitmap m_thumbnail_sdcard; wxBitmap m_bitmap_item_prediction; wxBitmap m_bitmap_item_cost; @@ -329,6 +330,7 @@ protected: void on_nozzle_fan_switch(wxCommandEvent &event); void on_thumbnail_enter(wxMouseEvent &event); void on_thumbnail_leave(wxMouseEvent &event); + void refresh_thumbnail_webrequest(wxMouseEvent& event); void on_switch_vcamera(wxMouseEvent &event); void on_camera_enter(wxMouseEvent &event); void on_camera_leave(wxMouseEvent& event); @@ -374,6 +376,14 @@ public: const wxString &name = wxEmptyString); ~StatusPanel(); + enum ThumbnailState { + PLACE_HOLDER = 0, + BROKEN_IMG = 1, + TASK_THUMBNAIL = 2, + SDCARD_THUMBNAIL = 3, + STATE_COUNT = 4 + }; + MachineObject *obj {nullptr}; BBLSubTask * last_subtask{nullptr}; std::string last_profile_id; @@ -385,6 +395,7 @@ public: long last_reading_bits { -1 }; long last_ams_version { -1 }; + enum ThumbnailState task_thumbnail_state {ThumbnailState::PLACE_HOLDER}; std::vector last_stage_list_info; bool is_stage_list_info_changed(MachineObject* obj);