From 3dbdc40360859e228a0e80a6d6b8c961ad109b84 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Sat, 8 Oct 2022 15:55:47 +0800 Subject: [PATCH] ENH: add tips when no sdcard add has_ipcam status in DeviceManager Change-Id: Ie51608218c9bf9513201ccffebfd12802d320680 Signed-off-by: Stone Li --- src/slic3r/GUI/DeviceManager.cpp | 11 +++++ src/slic3r/GUI/DeviceManager.hpp | 2 + src/slic3r/GUI/SelectMachine.cpp | 71 ++++++++++++++++++++++++++++++-- src/slic3r/GUI/SelectMachine.hpp | 3 ++ src/slic3r/GUI/StatusPanel.cpp | 2 +- 5 files changed, 85 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index ef395cefb..555968832 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1140,6 +1140,7 @@ bool MachineObject::has_recording() int MachineObject::command_get_version() { + BOOST_LOG_TRIVIAL(info) << "command_get_version"; json j; j["info"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); j["info"]["command"] = "get_version"; @@ -1716,6 +1717,9 @@ bool MachineObject::is_function_supported(PrinterFunction func) case FUNC_LOCAL_TUNNEL: func_name = "FUNC_LOCAL_TUNNEL"; break; + case FUNC_PRINT_WITHOUT_SD: + func_name = "FUNC_PRINT_WITHOUT_SD"; + break; default: return true; } @@ -2177,6 +2181,13 @@ int MachineObject::parse_json(std::string payload) camera_timelapse = false; } } + if (jj["ipcam"].contains("ipcam_dev")) { + if (jj["ipcam"]["ipcam_dev"].get() == "1") { + has_ipcam = true; + } else { + has_ipcam = false; + } + } } } catch (...) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index d3914712d..455a340af 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -69,6 +69,7 @@ enum PrinterFunction { FUNC_MEDIA_FILE, FUNC_REMOTE_TUNNEL, FUNC_LOCAL_TUNNEL, + FUNC_PRINT_WITHOUT_SD, FUNC_MAX }; @@ -492,6 +493,7 @@ public: PrintingSpeedLevel _parse_printing_speed_lvl(int lvl); /* camera */ + bool has_ipcam { false }; bool camera_recording { false }; bool camera_timelapse { false }; bool camera_has_sdcard { false }; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 647ed5287..6644474c0 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -40,6 +40,59 @@ wxDEFINE_EVENT(EVT_EDIT_PRINT_NAME, wxCommandEvent); static wxString task_canceled_text = _L("Task canceled"); + +std::string get_print_status_info(PrintDialogStatus status) +{ + switch(status) { + case PrintStatusInit: + return "PrintStatusInit"; + case PrintStatusNoUserLogin: + return "PrintStatusNoUserLogin"; + case PrintStatusInvalidPrinter: + return "PrintStatusInvalidPrinter"; + case PrintStatusConnectingServer: + return "PrintStatusConnectingServer"; + case PrintStatusReading: + return "PrintStatusReading"; + case PrintStatusReadingFinished: + return "PrintStatusReadingFinished"; + case PrintStatusReadingTimeout: + return "PrintStatusReadingTimeout"; + case PrintStatusInUpgrading: + return "PrintStatusInUpgrading"; + case PrintStatusNeedUpgradingAms: + return "PrintStatusNeedUpgradingAms"; + case PrintStatusInSystemPrinting: + return "PrintStatusInSystemPrinting"; + case PrintStatusInPrinting: + return "PrintStatusInPrinting"; + case PrintStatusDisableAms: + return "PrintStatusDisableAms"; + case PrintStatusAmsMappingSuccess: + return "PrintStatusAmsMappingSuccess"; + case PrintStatusAmsMappingInvalid: + return "PrintStatusAmsMappingInvalid"; + case PrintStatusAmsMappingU0Invalid: + return "PrintStatusAmsMappingU0Invalid"; + case PrintStatusAmsMappingValid: + return "PrintStatusAmsMappingValid"; + case PrintStatusAmsMappingByOrder: + return "PrintStatusAmsMappingByOrder"; + case PrintStatusRefreshingMachineList: + return "PrintStatusRefreshingMachineList"; + case PrintStatusSending: + return "PrintStatusSending"; + case PrintStatusSendingCanceled: + return "PrintStatusSendingCanceled"; + case PrintStatusLanModeNoSdcard: + return "PrintStatusLanModeNoSdcard"; + case PrintStatusNoSdcard: + return "PrintStatusNoSdcard"; + } + return "unknown"; +} + + MachineListModel::MachineListModel() : wxDataViewVirtualListModel(INITIAL_NUMBER_OF_MACHINES) { ; } void MachineListModel::display_machines(std::map list) @@ -1414,7 +1467,7 @@ void SelectMachineDialog::update_print_status_msg(wxString msg, bool is_warning, void SelectMachineDialog::show_status(PrintDialogStatus status, std::vector params) { if (m_print_status != status) - BOOST_LOG_TRIVIAL(info) << "select_machine_dialog: show_status = " << status; + BOOST_LOG_TRIVIAL(info) << "select_machine_dialog: show_status = " << status << "(" << get_print_status_info(status) << ")"; m_print_status = status; // m_comboBox_printer @@ -1524,7 +1577,7 @@ void SelectMachineDialog::show_status(PrintDialogStatus status, std::vectorcommand_get_version(); + obj->command_request_push_all(); dev->set_selected_machine(m_printer_last_select); update_select_layout(obj); } else { @@ -2016,11 +2075,17 @@ void SelectMachineDialog::update_show_status() show_status(PrintDialogStatus::PrintStatusInPrinting); return; } + else if (!obj_->is_function_supported(PrinterFunction::FUNC_PRINT_WITHOUT_SD)) { + show_status(PrintDialogStatus::PrintStatusNoSdcard); + return; + } + + // check sdcard when if lan mode printer if (obj_->is_lan_mode_printer()) { if (!obj_->has_sdcard()) { - show_status(PrintDialogStatus::PrintStatusNoSdcard); + show_status(PrintDialogStatus::PrintStatusLanModeNoSdcard); return; } } diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 154e442fb..fcd0620ba 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -248,9 +248,12 @@ enum PrintDialogStatus { PrintStatusRefreshingMachineList, PrintStatusSending, PrintStatusSendingCanceled, + PrintStatusLanModeNoSdcard, PrintStatusNoSdcard }; +std::string get_print_status_info(PrintDialogStatus status); + class SelectMachineDialog : public DPIDialog { private: diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index d7d072fa5..a0a955e88 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1341,7 +1341,7 @@ void StatusPanel::update(MachineObject *obj) m_timelapse_button->Hide(); } - if (obj->is_function_supported(PrinterFunction::FUNC_RECORDING)) { + if (obj->is_function_supported(PrinterFunction::FUNC_RECORDING) || obj->has_ipcam) { m_recording_button->Show(); } else { m_recording_button->Hide();