ENH: valid print all when selecting blank plate

and give a tips when print blank plate

Change-Id: Ic243dcee87d4a5a09de91c5806f1a94735f1052b
Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
Stone Li 2022-12-13 18:03:56 +08:00 committed by Lane.Wei
parent 026bd3d872
commit 52847b8bb4
3 changed files with 64 additions and 49 deletions

View file

@ -185,13 +185,13 @@ void MachineObjectPanel::show_bind_dialog()
}
}
void MachineObjectPanel::set_printer_state(PrinterState state)
void MachineObjectPanel::set_printer_state(PrinterState state)
{
m_state = state;
m_state = state;
Refresh();
}
void MachineObjectPanel::show_edit_printer_name(bool show)
void MachineObjectPanel::show_edit_printer_name(bool show)
{
m_show_edit = show;
Refresh();
@ -277,10 +277,10 @@ void MachineObjectPanel::doRender(wxDC &dc)
dc.DrawRectangle(0, 0, size.x, size.y);
if (m_show_bind) {
if (m_bind_state == ALLOW_UNBIND) {
if (m_bind_state == ALLOW_UNBIND) {
left = size.x - m_unbind_img.GetBmpSize().x - 6;
dc.DrawBitmap(m_unbind_img.bmp(), left, (size.y - m_unbind_img.GetBmpSize().y) / 2);
}
}
}
if (m_show_edit) {
@ -371,7 +371,7 @@ void MachineObjectPanel::on_mouse_left_up(wxMouseEvent &evt)
}
SelectMachinePopup::SelectMachinePopup(wxWindow *parent)
SelectMachinePopup::SelectMachinePopup(wxWindow *parent)
: wxPopupTransientWindow(parent, wxBORDER_NONE | wxPU_CONTAINS_CONTROLS), m_dismiss(false)
{
#ifdef __WINDOWS__
@ -491,11 +491,11 @@ void SelectMachinePopup::OnDismiss()
wxPostEvent(this, event);
}
bool SelectMachinePopup::ProcessLeftDown(wxMouseEvent &event) {
return wxPopupTransientWindow::ProcessLeftDown(event);
bool SelectMachinePopup::ProcessLeftDown(wxMouseEvent &event) {
return wxPopupTransientWindow::ProcessLeftDown(event);
}
bool SelectMachinePopup::Show(bool show) {
bool SelectMachinePopup::Show(bool show) {
if (show) {
for (int i = 0; i < m_user_list_machine_panel.size(); i++) {
m_user_list_machine_panel[i]->mPanel->update_machine_info(nullptr);
@ -507,7 +507,7 @@ bool SelectMachinePopup::Show(bool show) {
m_other_list_machine_panel[j]->mPanel->Hide();
}
}
return wxPopupTransientWindow::Show(show);
return wxPopupTransientWindow::Show(show);
}
wxWindow *SelectMachinePopup::create_title_panel(wxString text)
@ -567,7 +567,7 @@ void SelectMachinePopup::update_other_devices()
auto it = m_bind_machine_list.find(mobj->dev_id);
if (it != m_bind_machine_list.end())
continue;
MachineObjectPanel* op = nullptr;
if (i < m_other_list_machine_panel.size()) {
op = m_other_list_machine_panel[i]->mPanel;
@ -586,7 +586,7 @@ void SelectMachinePopup::update_other_devices()
m_sizer_other_devices->Add(op, 0, wxEXPAND, 0);
}
i++;
op->update_machine_info(mobj);
if (mobj->is_lan_mode_printer()) {
@ -824,11 +824,11 @@ bool SelectMachinePopup::search_for_printer(MachineObject* obj)
return false;
}
void SelectMachinePopup::on_dissmiss_win(wxCommandEvent &event)
{
void SelectMachinePopup::on_dissmiss_win(wxCommandEvent &event)
{
Dismiss();
}
void SelectMachinePopup::update_machine_list(wxCommandEvent &event)
{
update_user_devices();
@ -842,7 +842,7 @@ void SelectMachinePopup::start_ssdp(bool start)
//if (wxGetApp().getAgent()) { wxGetApp().getAgent()->start_discovery(true, start); }
}
void SelectMachinePopup::OnLeftUp(wxMouseEvent &event)
void SelectMachinePopup::OnLeftUp(wxMouseEvent &event)
{
auto mouse_pos = ClientToScreen(event.GetPosition());
auto wxscroll_win_pos = m_scrolledWindow->ClientToScreen(wxPoint(0, 0));
@ -876,7 +876,7 @@ void SelectMachinePopup::OnLeftUp(wxMouseEvent &event)
auto h_rect = m_hyperlink->ClientToScreen(wxPoint(0, 0));
if (mouse_pos.x > h_rect.x && mouse_pos.y > h_rect.y && mouse_pos.x < (h_rect.x + m_hyperlink->GetSize().x) && mouse_pos.y < (h_rect.y + m_hyperlink->GetSize().y)) {
wxLaunchDefaultBrowser(wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"));
}
}
}
}
@ -962,10 +962,10 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
m_line_top->SetBackgroundColour(wxColour(166, 169, 170));
m_scrollable_view = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize);
m_sizer_scrollable_view = new wxBoxSizer(wxVERTICAL);
m_sizer_scrollable_view = new wxBoxSizer(wxVERTICAL);
m_scrollable_region = new wxPanel(m_scrollable_view, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
m_sizer_scrollable_region = new wxBoxSizer(wxVERTICAL);
m_sizer_scrollable_region = new wxBoxSizer(wxVERTICAL);
//rename normal
@ -1176,7 +1176,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
//hyperlink_sizer->Add(linkimg, 0, wxALIGN_CENTER | wxALL, FromDIP(5));
m_sizer_prepare->Add(hyperlink_sizer, 0, wxALIGN_CENTER | wxALL, 5);
m_sizer_pcont->Add(0, 0, 1, wxEXPAND, 0);
m_button_ensure = new Button(m_panel_prepare, _L("Send"));
@ -1444,7 +1444,7 @@ void SelectMachineDialog::prepare_mode()
m_simplebook->SetSelection(0);
Layout();
Fit();
}
}
}
void SelectMachineDialog::sending_mode()
@ -1566,7 +1566,7 @@ bool SelectMachineDialog::get_ams_mapping_result(std::string &mapping_array_str,
{
if (m_ams_mapping_result.empty())
return false;
bool valid_mapping_result = true;
int invalid_count = 0;
for (int i = 0; i < m_ams_mapping_result.size(); i++) {
@ -1658,7 +1658,7 @@ void SelectMachineDialog::update_ams_status_msg(wxString msg, bool is_warning)
}
}
void SelectMachineDialog::update_priner_status_msg(wxString msg, bool is_warning)
void SelectMachineDialog::update_priner_status_msg(wxString msg, bool is_warning)
{
auto colour = is_warning ? wxColour(0xFF, 0x6F, 0x00) : wxColour(0x6B, 0x6B, 0x6B);
m_statictext_printer_msg->SetForegroundColour(colour);
@ -1707,7 +1707,7 @@ void SelectMachineDialog::update_print_status_msg(wxString msg, bool is_warning,
bool SelectMachineDialog::has_tips(MachineObject* obj)
{
if (!obj) return false;
// must set to a status if return true
if (select_timelapse->IsShown() &&
m_checkbox_list["timelapse"]->GetValue()) {
@ -1864,6 +1864,11 @@ void SelectMachineDialog::show_status(PrintDialogStatus status, std::vector<wxSt
update_print_status_msg(msg_text, true, true);
Enable_Send_Button(false);
Enable_Refresh_Button(true);
} else if (status == PrintDialogStatus::PrintStatusBlankPlate) {
wxString msg_text = _L("Cannot send the print job for empty plate");
update_print_status_msg(msg_text, true, true);
Enable_Send_Button(false);
Enable_Refresh_Button(true);
}
}
@ -1972,7 +1977,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
has_slice_warnings = true;
}
}
//check for unidentified material
auto mapping_result = m_mapping_popup.parse_ams_mapping(obj_->amsList);
@ -2024,7 +2029,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
else {
info_msg += wxString::Format("%d:%s\n",i, confirm_text[i]);
}
}
confirm_dlg.update_text(info_msg);
confirm_dlg.on_show();
@ -2138,12 +2143,12 @@ void SelectMachineDialog::on_ok()
}
m_print_job->has_sdcard = obj_->has_sdcard();
if (obj_->is_only_support_cloud_print()) {
m_print_job->cloud_print_only = true;
}
bool timelapse_option = select_timelapse->IsShown() ? m_checkbox_list["timelapse"]->GetValue() : true;
m_print_job->set_print_config(
@ -2340,7 +2345,7 @@ void SelectMachineDialog::update_user_printer()
else {
m_printer_last_select = obj->dev_id;
}
} else {
m_printer_last_select = "";
}
@ -2375,7 +2380,7 @@ void SelectMachineDialog::update_user_printer()
wxCommandEvent event(wxEVT_COMBOBOX);
event.SetEventObject(m_comboBox_printer);
wxPostEvent(m_comboBox_printer, event);
}
}
}
}
}
@ -2443,11 +2448,11 @@ void SelectMachineDialog::on_rename_enter()
if (m_valid_type != Valid) {
MessageDialog msg_wingow(nullptr, info_line, "", wxICON_WARNING | wxOK);
if (msg_wingow.ShowModal() == wxID_OK) {
if (msg_wingow.ShowModal() == wxID_OK) {
m_rename_switch_panel->SetSelection(0);
m_rename_text->SetLabel(m_current_project_name);
m_rename_normal_panel->Layout();
return;
return;
}
}
@ -2499,7 +2504,7 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event)
m_printer_last_select = m_list[i]->dev_id;
obj = m_list[i];
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "for send task, current printer id = " << m_printer_last_select << std::endl;
break;
}
@ -2554,6 +2559,13 @@ void SelectMachineDialog::update_show_status()
if (!dev) return;
dev->check_pushing();
PartPlate* plate = m_plater->get_partplate_list().get_curr_plate();
// blank plate has no valid gcode file
if (plate&& !plate->is_valid_gcode_file()) {
show_status(PrintDialogStatus::PrintStatusBlankPlate);
return;
}
MachineObject* obj_ = dev->get_my_machine(m_printer_last_select);
if (!obj_) {
update_ams_check(nullptr);
@ -2614,7 +2626,7 @@ void SelectMachineDialog::update_show_status()
show_status(PrintDialogStatus::PrintStatusNeedForceUpgrading);
return;
}
if (obj_->upgrade_consistency_request) {
show_status(PrintStatusNeedConsistencyUpgrading);
return;
@ -2831,8 +2843,8 @@ void SelectMachineDialog::set_default()
{
//project name
m_rename_switch_panel->SetSelection(0);
wxString filename = m_plater->get_export_gcode_filename("", false,
wxString filename = m_plater->get_export_gcode_filename("", false,
m_print_plate_idx == PLATE_ALL_IDX ?true:false);
if (m_print_plate_idx == PLATE_ALL_IDX && filename.empty()) {
@ -2850,7 +2862,7 @@ void SelectMachineDialog::set_default()
m_current_project_name = wxString::FromUTF8(filename_path.filename().string());
m_rename_text->SetLabelText(m_current_project_name);
m_rename_normal_panel->Layout();
//clear combobox
m_list.clear();
@ -2861,7 +2873,7 @@ void SelectMachineDialog::set_default()
m_comboBox_printer->Enable();
// rset status bar
m_status_bar->reset();
NetworkAgent* agent = wxGetApp().getAgent();
if (agent) {
if (agent->is_user_login()) {
@ -2897,7 +2909,7 @@ void SelectMachineDialog::set_default()
m_thumbnailPanel->set_thumbnail(image);
//bitmap = wxBitmap(image);
}
//m_staticbitmap->SetBitmap(bitmap);
//sizer_thumbnail->Layout();
@ -2957,7 +2969,7 @@ void SelectMachineDialog::set_default()
m_sizer_material->Add(item, 0, wxALL, FromDIP(4));
item->Bind(wxEVT_LEFT_UP, [this, item, materials, extruder](wxMouseEvent &e) {
});
item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent &e) {
@ -3012,7 +3024,7 @@ void SelectMachineDialog::set_default()
}
if (extruders.size() <= 4) {
m_sizer_material->SetCols(extruders.size());
m_sizer_material->SetCols(extruders.size());
} else {
m_sizer_material->SetCols(4);
}
@ -3030,7 +3042,7 @@ void SelectMachineDialog::set_default()
Layout();
Fit();
wxSize screenSize = wxGetDisplaySize();
auto dialogSize = this->GetSize();
@ -3125,7 +3137,7 @@ void SelectMachineDialog::update_lan_machine_list()
std::map<std::string, MachineObject*> option_list;
// same machine only appear once
/* machine_list = sort_string(machine_list);
for (auto tt = machine_list.begin(); tt != machine_list.end(); tt++) {
for (auto it = option_list.begin(); it != option_list.end(); it++) {
@ -3155,7 +3167,7 @@ void SelectMachineDialog::update_lan_machine_list()
}
BOOST_LOG_TRIVIAL(trace) << "SelectMachineDialog update_lan_devices end";
}
@ -3276,7 +3288,7 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e)
}
}
ThumbnailPanel::ThumbnailPanel(wxWindow *parent, wxWindowID winid, const wxPoint &pos, const wxSize &size)
ThumbnailPanel::ThumbnailPanel(wxWindow *parent, wxWindowID winid, const wxPoint &pos, const wxSize &size)
: wxPanel(parent, winid, pos, size)
{
#ifdef __WINDOWS__
@ -3292,8 +3304,8 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e)
Fit();
}
void ThumbnailPanel::set_thumbnail(wxImage img)
{
void ThumbnailPanel::set_thumbnail(wxImage img)
{
wxBitmap bitmap(img);
m_staticbitmap->SetBitmap(bitmap);
}