diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 2fde3f65c..f52967cb3 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -3295,40 +3295,42 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) catch (...) {} } } - if (jj.contains("project_id") - && jj.contains("profile_id") - && jj.contains("subtask_id") - ) { - obj_subtask_id = jj["subtask_id"].get(); + } - int plate_index = -1; - /* parse local plate_index from task */ - if (obj_subtask_id.compare("0") == 0 && jj["profile_id"].get() != "0") { - if (jj.contains("gcode_file")) { - m_gcode_file = jj["gcode_file"].get(); - int idx_start = m_gcode_file.find_last_of("_") + 1; - int idx_end = m_gcode_file.find_last_of("."); - if (idx_start > 0 && idx_end > idx_start) { - try { - plate_index = atoi(m_gcode_file.substr(idx_start, idx_end - idx_start).c_str()); - this->m_plate_index = plate_index; - } - catch (...) { - ; - } + if (jj.contains("project_id") + && jj.contains("profile_id") + && jj.contains("subtask_id") + ) { + obj_subtask_id = jj["subtask_id"].get(); + + int plate_index = -1; + /* parse local plate_index from task */ + if (obj_subtask_id.compare("0") == 0 && jj["profile_id"].get() != "0") { + if (jj.contains("gcode_file")) { + m_gcode_file = jj["gcode_file"].get(); + int idx_start = m_gcode_file.find_last_of("_") + 1; + int idx_end = m_gcode_file.find_last_of("."); + if (idx_start > 0 && idx_end > idx_start) { + try { + plate_index = atoi(m_gcode_file.substr(idx_start, idx_end - idx_start).c_str()); + this->m_plate_index = plate_index; + } + catch (...) { + ; } } } - update_slice_info(jj["project_id"].get(), jj["profile_id"].get(), jj["subtask_id"].get(), plate_index); - BBLSubTask* curr_task = get_subtask(); - if (curr_task) { - curr_task->task_progress = mc_print_percent; - curr_task->printing_status = print_status; - curr_task->task_id = jj["subtask_id"].get(); + } + update_slice_info(jj["project_id"].get(), jj["profile_id"].get(), jj["subtask_id"].get(), plate_index); + BBLSubTask* curr_task = get_subtask(); + if (curr_task) { + curr_task->task_progress = mc_print_percent; + curr_task->printing_status = print_status; + curr_task->task_id = jj["subtask_id"].get(); - } } } + #pragma endregion #pragma region status @@ -3566,101 +3568,101 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) } #pragma region upgrade - if (!key_field_only) { - try { - if (jj.contains("upgrade_state")) { - if (jj["upgrade_state"].contains("status")) - upgrade_status = jj["upgrade_state"]["status"].get(); - if (jj["upgrade_state"].contains("progress")) { - upgrade_progress = jj["upgrade_state"]["progress"].get(); - } if (jj["upgrade_state"].contains("new_version_state")) - upgrade_new_version = jj["upgrade_state"]["new_version_state"].get() == 1 ? true : false; - if (jj["upgrade_state"].contains("ams_new_version_number")) - ams_new_version_number = jj["upgrade_state"]["ams_new_version_number"].get(); - if (jj["upgrade_state"].contains("ota_new_version_number")) - ota_new_version_number = jj["upgrade_state"]["ota_new_version_number"].get(); - if (jj["upgrade_state"].contains("ahb_new_version_number")) - ahb_new_version_number = jj["upgrade_state"]["ahb_new_version_number"].get(); - if (jj["upgrade_state"].contains("module")) - upgrade_module = jj["upgrade_state"]["module"].get(); - if (jj["upgrade_state"].contains("message")) - upgrade_message = jj["upgrade_state"]["message"].get(); - if (jj["upgrade_state"].contains("consistency_request")) - upgrade_consistency_request = jj["upgrade_state"]["consistency_request"].get(); - if (jj["upgrade_state"].contains("force_upgrade")) - upgrade_force_upgrade = jj["upgrade_state"]["force_upgrade"].get(); - if (jj["upgrade_state"].contains("err_code")) - upgrade_err_code = jj["upgrade_state"]["err_code"].get(); - if (jj["upgrade_state"].contains("dis_state")) { - if (upgrade_display_state != jj["upgrade_state"]["dis_state"].get() - && jj["upgrade_state"]["dis_state"].get() == 3) { - GUI::wxGetApp().CallAfter([this] { - this->command_get_version(); + try { + if (jj.contains("upgrade_state")) { + if (jj["upgrade_state"].contains("status")) + upgrade_status = jj["upgrade_state"]["status"].get(); + if (jj["upgrade_state"].contains("progress")) { + upgrade_progress = jj["upgrade_state"]["progress"].get(); + } if (jj["upgrade_state"].contains("new_version_state")) + upgrade_new_version = jj["upgrade_state"]["new_version_state"].get() == 1 ? true : false; + if (jj["upgrade_state"].contains("ams_new_version_number")) + ams_new_version_number = jj["upgrade_state"]["ams_new_version_number"].get(); + if (jj["upgrade_state"].contains("ota_new_version_number")) + ota_new_version_number = jj["upgrade_state"]["ota_new_version_number"].get(); + if (jj["upgrade_state"].contains("ahb_new_version_number")) + ahb_new_version_number = jj["upgrade_state"]["ahb_new_version_number"].get(); + if (jj["upgrade_state"].contains("module")) + upgrade_module = jj["upgrade_state"]["module"].get(); + if (jj["upgrade_state"].contains("message")) + upgrade_message = jj["upgrade_state"]["message"].get(); + if (jj["upgrade_state"].contains("consistency_request")) + upgrade_consistency_request = jj["upgrade_state"]["consistency_request"].get(); + if (jj["upgrade_state"].contains("force_upgrade")) + upgrade_force_upgrade = jj["upgrade_state"]["force_upgrade"].get(); + if (jj["upgrade_state"].contains("err_code")) + upgrade_err_code = jj["upgrade_state"]["err_code"].get(); + if (jj["upgrade_state"].contains("dis_state")) { + if (upgrade_display_state != jj["upgrade_state"]["dis_state"].get() + && jj["upgrade_state"]["dis_state"].get() == 3) { + GUI::wxGetApp().CallAfter([this] { + this->command_get_version(); }); + } + if (upgrade_display_hold_count > 0) + upgrade_display_hold_count--; + else + upgrade_display_state = jj["upgrade_state"]["dis_state"].get(); + } + else { + if (upgrade_display_hold_count > 0) + upgrade_display_hold_count--; + else { + //BBS compatibility with old version + if (upgrade_status == "DOWNLOADING" + || upgrade_status == "FLASHING" + || upgrade_status == "UPGRADE_REQUEST" + || upgrade_status == "PRE_FLASH_START" + || upgrade_status == "PRE_FLASH_SUCCESS") { + upgrade_display_state = (int)UpgradingDisplayState::UpgradingInProgress; + } + else if (upgrade_status == "UPGRADE_SUCCESS" + || upgrade_status == "DOWNLOAD_FAIL" + || upgrade_status == "FLASH_FAIL" + || upgrade_status == "PRE_FLASH_FAIL" + || upgrade_status == "UPGRADE_FAIL") { + upgrade_display_state = (int)UpgradingDisplayState::UpgradingFinished; } - if (upgrade_display_hold_count > 0) - upgrade_display_hold_count--; - else - upgrade_display_state = jj["upgrade_state"]["dis_state"].get(); - } else { - if (upgrade_display_hold_count > 0) - upgrade_display_hold_count--; else { - //BBS compatibility with old version - if (upgrade_status == "DOWNLOADING" - || upgrade_status == "FLASHING" - || upgrade_status == "UPGRADE_REQUEST" - || upgrade_status == "PRE_FLASH_START" - || upgrade_status == "PRE_FLASH_SUCCESS") { - upgrade_display_state = (int)UpgradingDisplayState::UpgradingInProgress; - } - else if (upgrade_status == "UPGRADE_SUCCESS" - || upgrade_status == "DOWNLOAD_FAIL" - || upgrade_status == "FLASH_FAIL" - || upgrade_status == "PRE_FLASH_FAIL" - || upgrade_status == "UPGRADE_FAIL") { - upgrade_display_state = (int)UpgradingDisplayState::UpgradingFinished; + if (upgrade_new_version) { + upgrade_display_state = (int)UpgradingDisplayState::UpgradingAvaliable; } else { - if (upgrade_new_version) { - upgrade_display_state = (int)UpgradingDisplayState::UpgradingAvaliable; - } - else { - upgrade_display_state = (int)UpgradingDisplayState::UpgradingUnavaliable; - } + upgrade_display_state = (int)UpgradingDisplayState::UpgradingUnavaliable; } } } - // new ver list - if (jj["upgrade_state"].contains("new_ver_list")) { - m_new_ver_list_exist = true; - new_ver_list.clear(); - for (auto ver_item = jj["upgrade_state"]["new_ver_list"].begin(); ver_item != jj["upgrade_state"]["new_ver_list"].end(); ver_item++) { - ModuleVersionInfo ver_info; - if (ver_item->contains("name")) - ver_info.name = (*ver_item)["name"].get(); - else - continue; - - if (ver_item->contains("cur_ver")) - ver_info.sw_ver = (*ver_item)["cur_ver"].get(); - if (ver_item->contains("new_ver")) - ver_info.sw_new_ver = (*ver_item)["new_ver"].get(); - - if (ver_info.name == "ota") { - ota_new_version_number = ver_info.sw_new_ver; - } - - new_ver_list.insert(std::make_pair(ver_info.name, ver_info)); - } - } else { - new_ver_list.clear(); - } + } + // new ver list + if (jj["upgrade_state"].contains("new_ver_list")) { + m_new_ver_list_exist = true; + new_ver_list.clear(); + for (auto ver_item = jj["upgrade_state"]["new_ver_list"].begin(); ver_item != jj["upgrade_state"]["new_ver_list"].end(); ver_item++) { + ModuleVersionInfo ver_info; + if (ver_item->contains("name")) + ver_info.name = (*ver_item)["name"].get(); + else + continue; + + if (ver_item->contains("cur_ver")) + ver_info.sw_ver = (*ver_item)["cur_ver"].get(); + if (ver_item->contains("new_ver")) + ver_info.sw_new_ver = (*ver_item)["new_ver"].get(); + + if (ver_info.name == "ota") { + ota_new_version_number = ver_info.sw_new_ver; + } + + new_ver_list.insert(std::make_pair(ver_info.name, ver_info)); + } + } + else { + new_ver_list.clear(); } } - catch (...) { - ; - } + } + catch (...) { + ; } #pragma endregion diff --git a/src/slic3r/GUI/MultiMachine.cpp b/src/slic3r/GUI/MultiMachine.cpp index 07a2fbcd4..7be604ec0 100644 --- a/src/slic3r/GUI/MultiMachine.cpp +++ b/src/slic3r/GUI/MultiMachine.cpp @@ -12,13 +12,21 @@ wxDEFINE_EVENT(EVT_MULTI_CLOUD_TASK_SELECTED, wxCommandEvent); wxDEFINE_EVENT(EVT_MULTI_LOCAL_TASK_SELECTED, wxCommandEvent); wxDEFINE_EVENT(EVT_MULTI_DEVICE_SELECTED, wxCommandEvent); wxDEFINE_EVENT(EVT_MULTI_DEVICE_VIEW, wxCommandEvent); +wxDEFINE_EVENT(EVT_MULTI_REFRESH, wxCommandEvent); DeviceItem::DeviceItem(wxWindow* parent, MachineObject* obj) : wxWindow(parent, wxID_ANY) , obj_(obj) { sync_state(); + Bind(EVT_MULTI_REFRESH, &DeviceItem::on_refresh, this); } + +void DeviceItem::on_refresh(wxCommandEvent& evt) +{ + Refresh(); +} + void DeviceItem::sync_state() { if (obj_) { @@ -38,9 +46,6 @@ void DeviceItem::sync_state() else if (obj_->is_in_printing()) { state_printable = 3; } - else if (obj_->is_in_upgrading()) { - state_printable = 4; - } else { state_printable = 6; } @@ -49,6 +54,10 @@ void DeviceItem::sync_state() state_printable = 5; } + if (obj_->is_in_upgrading()) { + state_printable = 4; + } + state_enable_ams = obj_->ams_exist_bits; diff --git a/src/slic3r/GUI/MultiMachine.hpp b/src/slic3r/GUI/MultiMachine.hpp index d3141765b..edca9e028 100644 --- a/src/slic3r/GUI/MultiMachine.hpp +++ b/src/slic3r/GUI/MultiMachine.hpp @@ -40,6 +40,7 @@ public: DeviceItem(wxWindow* parent, MachineObject* obj); ~DeviceItem() {}; + void on_refresh(wxCommandEvent& evt); void sync_state(); wxString get_state_printable(); wxString get_state_device(); @@ -111,6 +112,7 @@ wxDECLARE_EVENT(EVT_MULTI_DEVICE_SELECTED, wxCommandEvent); wxDECLARE_EVENT(EVT_MULTI_DEVICE_VIEW, wxCommandEvent); wxDECLARE_EVENT(EVT_MULTI_CLOUD_TASK_SELECTED, wxCommandEvent); wxDECLARE_EVENT(EVT_MULTI_LOCAL_TASK_SELECTED, wxCommandEvent); +wxDECLARE_EVENT(EVT_MULTI_REFRESH, wxCommandEvent); } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/MultiMachinePage.cpp b/src/slic3r/GUI/MultiMachinePage.cpp index c5e48ef66..42aa06554 100644 --- a/src/slic3r/GUI/MultiMachinePage.cpp +++ b/src/slic3r/GUI/MultiMachinePage.cpp @@ -45,7 +45,7 @@ bool MultiMachinePage::Show(bool show) if (show) { m_refresh_timer->Stop(); m_refresh_timer->SetOwner(this); - m_refresh_timer->Start(4000); + m_refresh_timer->Start(2000); wxPostEvent(this, wxTimerEvent()); } else { diff --git a/src/slic3r/GUI/MultiTaskManagerPage.cpp b/src/slic3r/GUI/MultiTaskManagerPage.cpp index ad84451e1..fe8c0c078 100644 --- a/src/slic3r/GUI/MultiTaskManagerPage.cpp +++ b/src/slic3r/GUI/MultiTaskManagerPage.cpp @@ -25,7 +25,7 @@ MultiTaskItem::MultiTaskItem(wxWindow* parent, MachineObject* obj, int type) Bind(wxEVT_MOTION, &MultiTaskItem::OnMove, this); Bind(EVT_MULTI_DEVICE_SELECTED, &MultiTaskItem::OnSelectedDevice, this); - m_bitmap_check_disable = ScalableBitmap(this, "check_off", 18); + m_bitmap_check_disable = ScalableBitmap(this, "check_off_disabled", 18); m_bitmap_check_off = ScalableBitmap(this, "check_off_focused", 18); m_bitmap_check_on = ScalableBitmap(this, "check_on", 18); @@ -774,10 +774,11 @@ void LocalTaskManagerPage::refresh_user_device(bool clear) task_state_info->set_state_changed_fn([this, mtitem](TaskState state, int percent) { mtitem->state_local_task = state; if (state == TaskState::TS_SEND_COMPLETED) { + mtitem->m_send_time = mtitem->task_obj->get_sent_time(); - CallAfter([mtitem]() { - mtitem->Refresh(); - }); + wxCommandEvent event(EVT_MULTI_REFRESH); + event.SetEventObject(mtitem); + wxPostEvent(mtitem, event); } mtitem->m_sending_percent = percent; }); @@ -876,7 +877,7 @@ CloudTaskManagerPage::CloudTaskManagerPage(wxWindow* parent) m_select_checkbox = new CheckBox(m_table_head_panel, wxID_ANY); m_select_checkbox->SetMinSize(wxSize(FromDIP(TASK_LEFT_PRINTABLE), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); m_select_checkbox->SetMaxSize(wxSize(FromDIP(TASK_LEFT_PRINTABLE), FromDIP(DEVICE_ITEM_MAX_HEIGHT))); - m_table_head_sizer->AddSpacer(FromDIP(TASK_LEFT_PADDING_LEFT)); + //m_table_head_sizer->AddSpacer(FromDIP(TASK_LEFT_PADDING_LEFT)); m_table_head_sizer->Add(m_select_checkbox, 0, wxALIGN_CENTER_VERTICAL, 0); m_select_checkbox->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { diff --git a/src/slic3r/GUI/SendMultiMachinePage.cpp b/src/slic3r/GUI/SendMultiMachinePage.cpp index 723a8b793..9b1226cb8 100644 --- a/src/slic3r/GUI/SendMultiMachinePage.cpp +++ b/src/slic3r/GUI/SendMultiMachinePage.cpp @@ -29,7 +29,7 @@ SendDeviceItem::SendDeviceItem(wxWindow* parent, MachineObject* obj) : DeviceItem(parent, obj) { SetBackgroundColour(*wxWHITE); - m_bitmap_check_disable = ScalableBitmap(this, "check_off", 18); + m_bitmap_check_disable = ScalableBitmap(this, "check_off_disabled", 18); m_bitmap_check_off = ScalableBitmap(this, "check_off_focused", 18); m_bitmap_check_on = ScalableBitmap(this, "check_on", 18); @@ -912,6 +912,7 @@ void SendMultiMachinePage::on_set_finish_mapping(wxCommandEvent& evt) } iter++; } + } } @@ -1313,6 +1314,7 @@ void SendMultiMachinePage::sync_ams_list() if (extruder >= materials.size() || extruder < 0 || extruder >= display_materials.size()) continue; MaterialItem* item = new MaterialItem(m_main_page, colour_rgb, _L(display_materials[extruder])); + item->set_ams_info(wxColour("#CECECE"), "A1", 0, std::vector()); m_ams_list_sizer->Add(item, 0, wxALL, FromDIP(4)); item->Bind(wxEVT_LEFT_UP, [this, item, materials, extruder](wxMouseEvent& e) {}); @@ -1355,10 +1357,12 @@ void SendMultiMachinePage::sync_ams_list() if (extruder < materials.size() && extruder >= 0) { FilamentInfo info; info.id = extruder; + info.tray_id = 0; info.type = materials[extruder]; info.brand = brands[extruder]; info.filament_id = m_filaments_id[extruder]; - info.color = wxString::Format("#%02X%02X%02X%02X", colour_rgb.Red(), colour_rgb.Green(), colour_rgb.Blue(), colour_rgb.Alpha()).ToStdString(); + //info.color = wxString::Format("#%02X%02X%02X%02X", colour_rgb.Red(), colour_rgb.Green(), colour_rgb.Blue(), colour_rgb.Alpha()).ToStdString(); + info.color = "#CECECEFF"; m_filaments.push_back(info); m_ams_mapping_result.push_back(info); }