NEW:add nozzle settings
jira:[STUDIO-6226] Change-Id: I0db8333e5b5c8195add111fdcfa2e92387997815
This commit is contained in:
parent
d871339f0d
commit
428180c483
|
@ -385,4 +385,181 @@ bool PrintOptionsDialog::Show(bool show)
|
||||||
return DPIDialog::Show(show);
|
return DPIDialog::Show(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PrinterPartsDialog::PrinterPartsDialog(wxWindow* parent)
|
||||||
|
: DPIDialog(parent, wxID_ANY, _L("Printer Parts"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
|
||||||
|
{
|
||||||
|
nozzle_type_map[0] = "hardened_steel";
|
||||||
|
nozzle_type_map[1] = "stainless_steel";
|
||||||
|
|
||||||
|
nozzle_stainless_diameter_map[0] = 0.2;
|
||||||
|
nozzle_stainless_diameter_map[1] = 0.4;
|
||||||
|
|
||||||
|
nozzle_hard_diameter_map[0] = 0.4;
|
||||||
|
nozzle_hard_diameter_map[1] = 0.6;
|
||||||
|
nozzle_hard_diameter_map[2] = 0.8;
|
||||||
|
|
||||||
|
SetBackgroundColour(*wxWHITE);
|
||||||
|
wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
|
||||||
|
auto m_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
||||||
|
m_line->SetBackgroundColour(wxColour(166, 169, 170));
|
||||||
|
|
||||||
|
//nozzle type
|
||||||
|
wxBoxSizer* line_sizer_nozzle_type = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
|
auto nozzle_type = new Label(this, _L("Nozzle Type"));
|
||||||
|
nozzle_type->SetFont(Label::Body_14);
|
||||||
|
nozzle_type->SetMinSize(wxSize(FromDIP(180), -1));
|
||||||
|
nozzle_type->SetMaxSize(wxSize(FromDIP(180), -1));
|
||||||
|
nozzle_type->SetForegroundColour(STATIC_TEXT_CAPTION_COL);
|
||||||
|
nozzle_type->Wrap(-1);
|
||||||
|
|
||||||
|
nozzle_type_checkbox = new ComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(140), -1), 0, NULL, wxCB_READONLY);
|
||||||
|
nozzle_type_checkbox->Append(_L("Stainless Steel"));
|
||||||
|
nozzle_type_checkbox->Append(_L("Hardened Steel"));
|
||||||
|
nozzle_type_checkbox->SetSelection(0);
|
||||||
|
|
||||||
|
|
||||||
|
line_sizer_nozzle_type->Add(nozzle_type, 0, wxALIGN_CENTER, 5);
|
||||||
|
line_sizer_nozzle_type->Add(0, 0, 1, wxEXPAND, 5);
|
||||||
|
line_sizer_nozzle_type->Add(nozzle_type_checkbox, 0, wxALIGN_CENTER, 5);
|
||||||
|
|
||||||
|
|
||||||
|
//nozzle diameter
|
||||||
|
wxBoxSizer* line_sizer_nozzle_diameter = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
auto nozzle_diameter = new Label(this, _L("Nozzle Diameter"));
|
||||||
|
nozzle_diameter->SetFont(Label::Body_14);
|
||||||
|
nozzle_diameter->SetMinSize(wxSize(FromDIP(180), -1));
|
||||||
|
nozzle_diameter->SetMaxSize(wxSize(FromDIP(180), -1));
|
||||||
|
nozzle_diameter->SetForegroundColour(STATIC_TEXT_CAPTION_COL);
|
||||||
|
nozzle_diameter->Wrap(-1);
|
||||||
|
|
||||||
|
nozzle_diameter_checkbox = new ComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(140), -1), 0, NULL, wxCB_READONLY);
|
||||||
|
|
||||||
|
|
||||||
|
line_sizer_nozzle_diameter->Add(nozzle_diameter, 0, wxALIGN_CENTER, 5);
|
||||||
|
line_sizer_nozzle_diameter->Add(0, 0, 1, wxEXPAND, 5);
|
||||||
|
line_sizer_nozzle_diameter->Add(nozzle_diameter_checkbox, 0, wxALIGN_CENTER, 5);
|
||||||
|
|
||||||
|
sizer->Add(m_line, 0, wxEXPAND, 0);
|
||||||
|
sizer->Add(0, 0, 0, wxTOP, FromDIP(24));
|
||||||
|
sizer->Add(line_sizer_nozzle_type, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(18));
|
||||||
|
sizer->Add(0, 0, 0, wxTOP, FromDIP(20));
|
||||||
|
sizer->Add(line_sizer_nozzle_diameter, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(18));
|
||||||
|
sizer->Add(0, 0, 0, wxTOP, FromDIP(24));
|
||||||
|
|
||||||
|
|
||||||
|
nozzle_type_checkbox->Connect( wxEVT_COMBOBOX, wxCommandEventHandler(PrinterPartsDialog::set_nozzle_type), NULL, this );
|
||||||
|
nozzle_diameter_checkbox->Connect( wxEVT_COMBOBOX, wxCommandEventHandler(PrinterPartsDialog::set_nozzle_diameter), NULL, this );
|
||||||
|
|
||||||
|
SetSizer(sizer);
|
||||||
|
Layout();
|
||||||
|
Fit();
|
||||||
|
wxGetApp().UpdateDlgDarkUI(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
PrinterPartsDialog::~PrinterPartsDialog()
|
||||||
|
{
|
||||||
|
nozzle_type_checkbox->Disconnect(wxEVT_COMBOBOX, wxCommandEventHandler(PrinterPartsDialog::set_nozzle_type), NULL, this);
|
||||||
|
nozzle_diameter_checkbox->Disconnect(wxEVT_COMBOBOX, wxCommandEventHandler(PrinterPartsDialog::set_nozzle_diameter), NULL, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrinterPartsDialog::set_nozzle_type(wxCommandEvent& evt)
|
||||||
|
{
|
||||||
|
auto type = nozzle_type_map[nozzle_type_checkbox->GetSelection()];
|
||||||
|
|
||||||
|
if (type == last_nozzle_type) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<int, float> diameter_list;
|
||||||
|
if (type == "hardened_steel") {
|
||||||
|
diameter_list = nozzle_hard_diameter_map;
|
||||||
|
}
|
||||||
|
else if (type == "stainless_steel") {
|
||||||
|
diameter_list = nozzle_stainless_diameter_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
nozzle_diameter_checkbox->Clear();
|
||||||
|
for (int i = 0; i < diameter_list.size(); i++)
|
||||||
|
{
|
||||||
|
nozzle_diameter_checkbox->Append(wxString::Format(_L("%.1f"), diameter_list[i]));
|
||||||
|
}
|
||||||
|
nozzle_diameter_checkbox->SetSelection(0);
|
||||||
|
last_nozzle_type = type;
|
||||||
|
set_nozzle_diameter(evt);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrinterPartsDialog::set_nozzle_diameter(wxCommandEvent& evt)
|
||||||
|
{
|
||||||
|
if (obj) {
|
||||||
|
try
|
||||||
|
{
|
||||||
|
auto nozzle_type = nozzle_type_map[nozzle_type_checkbox->GetSelection()];
|
||||||
|
auto nozzle_diameter = std::stof(nozzle_diameter_checkbox->GetStringSelection().ToStdString());
|
||||||
|
nozzle_diameter = round(nozzle_diameter * 10) / 10;
|
||||||
|
obj->command_set_printer_nozzle(nozzle_type, nozzle_diameter);
|
||||||
|
}
|
||||||
|
catch (...) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrinterPartsDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||||
|
{
|
||||||
|
Fit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrinterPartsDialog::update_machine_obj(MachineObject* obj_)
|
||||||
|
{
|
||||||
|
obj = obj_;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PrinterPartsDialog::Show(bool show)
|
||||||
|
{
|
||||||
|
if (show) {
|
||||||
|
wxGetApp().UpdateDlgDarkUI(this);
|
||||||
|
CentreOnParent();
|
||||||
|
|
||||||
|
auto type = obj->nozzle_type;
|
||||||
|
auto diameter = round(obj->nozzle_diameter * 10) / 10;
|
||||||
|
|
||||||
|
nozzle_type_checkbox->Clear();
|
||||||
|
nozzle_diameter_checkbox->Clear();
|
||||||
|
|
||||||
|
if (type.empty()) {
|
||||||
|
nozzle_type_checkbox->Disable();
|
||||||
|
nozzle_diameter_checkbox->Disable();
|
||||||
|
return DPIDialog::Show(show);
|
||||||
|
}
|
||||||
|
|
||||||
|
last_nozzle_type = type;
|
||||||
|
|
||||||
|
for (int i=0; i < nozzle_type_map.size(); i++)
|
||||||
|
{
|
||||||
|
nozzle_type_checkbox->Append( nozzle_type_map[i] );
|
||||||
|
if (nozzle_type_map[i] == type) {
|
||||||
|
nozzle_type_checkbox->SetSelection(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<int, float> diameter_list;
|
||||||
|
if (type == "hardened_steel") {
|
||||||
|
diameter_list = nozzle_hard_diameter_map;
|
||||||
|
}
|
||||||
|
else if (type == "stainless_steel") {
|
||||||
|
diameter_list = nozzle_stainless_diameter_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < diameter_list.size(); i++)
|
||||||
|
{
|
||||||
|
nozzle_diameter_checkbox->Append( wxString::Format(_L("%.1f"), diameter_list[i]));
|
||||||
|
if (diameter_list[i] == diameter) {
|
||||||
|
nozzle_diameter_checkbox->SetSelection(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DPIDialog::Show(show);
|
||||||
|
}
|
||||||
|
|
||||||
}} // namespace Slic3r::GUI
|
}} // namespace Slic3r::GUI
|
||||||
|
|
|
@ -18,6 +18,27 @@
|
||||||
|
|
||||||
namespace Slic3r { namespace GUI {
|
namespace Slic3r { namespace GUI {
|
||||||
|
|
||||||
|
class PrinterPartsDialog : public DPIDialog
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
MachineObject* obj{ nullptr };
|
||||||
|
ComboBox* nozzle_type_checkbox;
|
||||||
|
ComboBox* nozzle_diameter_checkbox;
|
||||||
|
std::string last_nozzle_type;
|
||||||
|
std::map<int, std::string> nozzle_type_map;
|
||||||
|
std::map<int, float> nozzle_stainless_diameter_map;
|
||||||
|
std::map<int, float> nozzle_hard_diameter_map;
|
||||||
|
public:
|
||||||
|
PrinterPartsDialog(wxWindow* parent);
|
||||||
|
~PrinterPartsDialog();
|
||||||
|
void set_nozzle_type(wxCommandEvent& evt);
|
||||||
|
void set_nozzle_diameter(wxCommandEvent& evt);
|
||||||
|
void on_dpi_changed(const wxRect& suggested_rect) override;
|
||||||
|
void update_machine_obj(MachineObject* obj_);
|
||||||
|
bool Show(bool show) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class PrintOptionsDialog : public DPIDialog
|
class PrintOptionsDialog : public DPIDialog
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -976,16 +976,46 @@ void ConfirmBeforeSendDialog::update_text(wxString text)
|
||||||
sizer_text_release_note->Add(bottom_blank_sizer, 0, wxALIGN_CENTER | wxALL, FromDIP(5));
|
sizer_text_release_note->Add(bottom_blank_sizer, 0, wxALIGN_CENTER | wxALL, FromDIP(5));
|
||||||
m_vebview_release_note->SetSizer(sizer_text_release_note);
|
m_vebview_release_note->SetSizer(sizer_text_release_note);
|
||||||
}
|
}
|
||||||
m_staticText_release_note->SetMaxSize(wxSize(FromDIP(330), -1));
|
m_staticText_release_note->SetMaxSize(wxSize(FromDIP(380), -1));
|
||||||
m_staticText_release_note->SetMinSize(wxSize(FromDIP(330), -1));
|
m_staticText_release_note->SetMinSize(wxSize(FromDIP(380), -1));
|
||||||
m_staticText_release_note->SetLabelText(text);
|
m_staticText_release_note->SetLabelText(text);
|
||||||
m_vebview_release_note->Layout();
|
m_vebview_release_note->Layout();
|
||||||
|
|
||||||
auto text_size = m_staticText_release_note->GetBestSize();
|
auto text_size = m_staticText_release_note->GetBestSize();
|
||||||
if (text_size.y < FromDIP(360))
|
if (text_size.y < FromDIP(380))
|
||||||
m_vebview_release_note->SetMinSize(wxSize(FromDIP(360), text_size.y + FromDIP(25)));
|
m_vebview_release_note->SetMinSize(wxSize(FromDIP(400), text_size.y + FromDIP(25)));
|
||||||
else {
|
else {
|
||||||
m_vebview_release_note->SetMinSize(wxSize(FromDIP(360), FromDIP(360)));
|
m_vebview_release_note->SetMinSize(wxSize(FromDIP(400), FromDIP(380)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Layout();
|
||||||
|
Fit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfirmBeforeSendDialog::update_text(std::vector<ConfirmBeforeSendInfo> texts)
|
||||||
|
{
|
||||||
|
wxBoxSizer* sizer_text_release_note = new wxBoxSizer(wxVERTICAL);
|
||||||
|
m_vebview_release_note->SetSizer(sizer_text_release_note);
|
||||||
|
|
||||||
|
auto height = 0;
|
||||||
|
for (auto text : texts) {
|
||||||
|
auto label_item = new Label(m_vebview_release_note, text.text, LB_AUTO_WRAP);
|
||||||
|
if (text.level == ConfirmBeforeSendInfo::InfoLevel::Warning) {
|
||||||
|
label_item->SetForegroundColour(wxColour(0xFF, 0x6F, 0x00));
|
||||||
|
}
|
||||||
|
label_item->SetMaxSize(wxSize(FromDIP(380), -1));
|
||||||
|
label_item->SetMinSize(wxSize(FromDIP(380), -1));
|
||||||
|
label_item->Wrap(FromDIP(380));
|
||||||
|
label_item->Layout();
|
||||||
|
sizer_text_release_note->Add(label_item, 0, wxALIGN_CENTER | wxALL, FromDIP(3));
|
||||||
|
height += label_item->GetSize().y;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_vebview_release_note->Layout();
|
||||||
|
if (height < FromDIP(380))
|
||||||
|
m_vebview_release_note->SetMinSize(wxSize(FromDIP(400), height + FromDIP(25)));
|
||||||
|
else {
|
||||||
|
m_vebview_release_note->SetMinSize(wxSize(FromDIP(400), FromDIP(380)));
|
||||||
}
|
}
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
|
@ -1046,12 +1076,28 @@ void ConfirmBeforeSendDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||||
rescale();
|
rescale();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfirmBeforeSendDialog::show_update_nozzle_button()
|
void ConfirmBeforeSendDialog::show_update_nozzle_button(bool show)
|
||||||
{
|
{
|
||||||
m_button_update_nozzle->Show(true);
|
m_button_update_nozzle->Show(show);
|
||||||
Layout();
|
Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ConfirmBeforeSendDialog::disable_button_ok()
|
||||||
|
{
|
||||||
|
m_button_ok->Disable();
|
||||||
|
m_button_ok->SetBackgroundColor(wxColour(0x90, 0x90, 0x90));
|
||||||
|
m_button_ok->SetBorderColor(wxColour(0x90, 0x90, 0x90));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfirmBeforeSendDialog::enable_button_ok()
|
||||||
|
{
|
||||||
|
m_button_ok->Enable();
|
||||||
|
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
|
||||||
|
std::pair<wxColour, int>(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal));
|
||||||
|
m_button_ok->SetBackgroundColor(btn_bg_green);
|
||||||
|
m_button_ok->SetBorderColor(btn_bg_green);
|
||||||
|
}
|
||||||
|
|
||||||
void ConfirmBeforeSendDialog::rescale()
|
void ConfirmBeforeSendDialog::rescale()
|
||||||
{
|
{
|
||||||
m_button_ok->Rescale();
|
m_button_ok->Rescale();
|
||||||
|
|
|
@ -157,6 +157,18 @@ public:
|
||||||
std::string show_again_config_text = "";
|
std::string show_again_config_text = "";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct ConfirmBeforeSendInfo
|
||||||
|
{
|
||||||
|
enum InfoLevel {
|
||||||
|
Normal = 0,
|
||||||
|
Warning = 1
|
||||||
|
};
|
||||||
|
InfoLevel level;
|
||||||
|
wxString text;
|
||||||
|
ConfirmBeforeSendInfo(wxString txt, InfoLevel lev = Normal) : text(txt), level(lev) {}
|
||||||
|
};
|
||||||
|
|
||||||
class ConfirmBeforeSendDialog : public DPIDialog
|
class ConfirmBeforeSendDialog : public DPIDialog
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -176,12 +188,15 @@ public:
|
||||||
bool not_show_again_check = false
|
bool not_show_again_check = false
|
||||||
);
|
);
|
||||||
void update_text(wxString text);
|
void update_text(wxString text);
|
||||||
|
void update_text(std::vector<ConfirmBeforeSendInfo> texts);
|
||||||
void on_show();
|
void on_show();
|
||||||
void on_hide();
|
void on_hide();
|
||||||
void update_btn_label(wxString ok_btn_text, wxString cancel_btn_text);
|
void update_btn_label(wxString ok_btn_text, wxString cancel_btn_text);
|
||||||
void rescale();
|
void rescale();
|
||||||
void on_dpi_changed(const wxRect& suggested_rect);
|
void on_dpi_changed(const wxRect& suggested_rect);
|
||||||
void show_update_nozzle_button();
|
void show_update_nozzle_button(bool show = false);
|
||||||
|
void disable_button_ok();
|
||||||
|
void enable_button_ok();
|
||||||
wxString format_text(wxString str, int warp);
|
wxString format_text(wxString str, int warp);
|
||||||
|
|
||||||
~ConfirmBeforeSendDialog();
|
~ConfirmBeforeSendDialog();
|
||||||
|
|
|
@ -2376,7 +2376,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
||||||
{
|
{
|
||||||
|
|
||||||
bool has_slice_warnings = false;
|
bool has_slice_warnings = false;
|
||||||
bool has_update_nozzle = false;
|
bool is_printing_block = false;
|
||||||
|
|
||||||
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
|
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
|
||||||
if (!dev) return;
|
if (!dev) return;
|
||||||
|
@ -2384,14 +2384,13 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
||||||
if (!obj_) return;
|
if (!obj_) return;
|
||||||
|
|
||||||
|
|
||||||
std::vector<wxString> confirm_text;
|
std::vector<ConfirmBeforeSendInfo> confirm_text;
|
||||||
confirm_text.push_back(_L("Please check the following:") + "\n\n");
|
confirm_text.push_back(ConfirmBeforeSendInfo(_L("Please check the following:")));
|
||||||
|
|
||||||
//Check Printer Model Id
|
//Check Printer Model Id
|
||||||
bool is_same_printer_type = is_same_printer_model();
|
bool is_same_printer_type = is_same_printer_model();
|
||||||
if (!is_same_printer_type && (m_print_type == PrintFromType::FROM_NORMAL)) {
|
if (!is_same_printer_type && (m_print_type == PrintFromType::FROM_NORMAL)) {
|
||||||
confirm_text.push_back(_L("The printer type selected when generating G-Code is not consistent with the currently selected printer. It is recommended that you use the same printer type for slicing.") + "\n");
|
confirm_text.push_back(ConfirmBeforeSendInfo(_L("The printer type selected when generating G-Code is not consistent with the currently selected printer. It is recommended that you use the same printer type for slicing.")));
|
||||||
|
|
||||||
has_slice_warnings = true;
|
has_slice_warnings = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2419,7 +2418,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
||||||
if (in_blacklist && action == "warning") {
|
if (in_blacklist && action == "warning") {
|
||||||
wxString prohibited_error = wxString::FromUTF8(info);
|
wxString prohibited_error = wxString::FromUTF8(info);
|
||||||
|
|
||||||
confirm_text.push_back(prohibited_error + "\n");
|
confirm_text.push_back(ConfirmBeforeSendInfo(prohibited_error));
|
||||||
has_slice_warnings = true;
|
has_slice_warnings = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2435,20 +2434,20 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
||||||
}
|
}
|
||||||
else if (warning.msg == NOT_SUPPORT_TRADITIONAL_TIMELAPSE) {
|
else if (warning.msg == NOT_SUPPORT_TRADITIONAL_TIMELAPSE) {
|
||||||
if (obj_->get_printer_arch() == PrinterArch::ARCH_I3 && m_checkbox_list["timelapse"]->GetValue()) {
|
if (obj_->get_printer_arch() == PrinterArch::ARCH_I3 && m_checkbox_list["timelapse"]->GetValue()) {
|
||||||
confirm_text.push_back(Plater::get_slice_warning_string(warning) + "\n");
|
confirm_text.push_back(ConfirmBeforeSendInfo(Plater::get_slice_warning_string(warning)));
|
||||||
has_slice_warnings = true;
|
has_slice_warnings = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (warning.msg == NOT_GENERATE_TIMELAPSE) {
|
else if (warning.msg == NOT_GENERATE_TIMELAPSE) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else {
|
else if(warning.msg == NOZZLE_HRC_CHECKER){
|
||||||
wxString error_info = Plater::get_slice_warning_string(warning);
|
wxString error_info = Plater::get_slice_warning_string(warning);
|
||||||
if (error_info.IsEmpty()) {
|
if (error_info.IsEmpty()) {
|
||||||
error_info = wxString::Format("%s\n", warning.msg);
|
error_info = wxString::Format("%s\n", warning.msg);
|
||||||
confirm_text.push_back(error_info + "\n");
|
}
|
||||||
} else
|
|
||||||
confirm_text.push_back(error_info + "\n");
|
confirm_text.push_back(ConfirmBeforeSendInfo(error_info));
|
||||||
has_slice_warnings = true;
|
has_slice_warnings = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2506,7 +2505,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
||||||
|
|
||||||
if (has_unknown_filament) {
|
if (has_unknown_filament) {
|
||||||
has_slice_warnings = true;
|
has_slice_warnings = true;
|
||||||
confirm_text.push_back(_L("There are some unknown filaments in the AMS mappings. Please check whether they are the required filaments. If they are okay, press \"Confirm\" to start printing.") + "\n");
|
confirm_text.push_back(ConfirmBeforeSendInfo(_L("There are some unknown filaments in the AMS mappings. Please check whether they are the required filaments. If they are okay, press \"Confirm\" to start printing.")));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string nozzle_diameter;
|
std::string nozzle_diameter;
|
||||||
|
@ -2516,23 +2515,24 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
||||||
if (!obj_->nozzle_type.empty() && (m_print_type == PrintFromType::FROM_NORMAL)) {
|
if (!obj_->nozzle_type.empty() && (m_print_type == PrintFromType::FROM_NORMAL)) {
|
||||||
if (!is_same_nozzle_diameters(tag_nozzle_type, nozzle_diameter)) {
|
if (!is_same_nozzle_diameters(tag_nozzle_type, nozzle_diameter)) {
|
||||||
has_slice_warnings = true;
|
has_slice_warnings = true;
|
||||||
has_update_nozzle = true;
|
is_printing_block = true;
|
||||||
|
|
||||||
wxString nozzle_in_preset = wxString::Format(_L("nozzle in preset: %s %s"),nozzle_diameter, "");
|
wxString nozzle_in_preset = wxString::Format(_L("nozzle in preset: %s %s"),nozzle_diameter, "");
|
||||||
wxString nozzle_in_printer = wxString::Format(_L("nozzle memorized: %.1f %s"), obj_->nozzle_diameter, "");
|
wxString nozzle_in_printer = wxString::Format(_L("nozzle memorized: %.1f %s"), obj_->nozzle_diameter, "");
|
||||||
|
|
||||||
confirm_text.push_back(_L("Your nozzle diameter in preset is not consistent with memorized nozzle diameter. Did you change your nozzle lately?")
|
confirm_text.push_back(ConfirmBeforeSendInfo(_L("Your nozzle diameter in sliced file is not consistent with memorized nozzle. If you changed your nozzle lately, please go to Device > Printer Parts to change settings.")
|
||||||
+ "\n " + nozzle_in_preset
|
+ "\n " + nozzle_in_preset
|
||||||
+ "\n " + nozzle_in_printer
|
+ "\n " + nozzle_in_printer
|
||||||
+ "\n");
|
+ "\n", ConfirmBeforeSendInfo::InfoLevel::Warning));
|
||||||
}
|
}
|
||||||
else if (!is_same_nozzle_type(filament_type, tag_nozzle_type)){
|
|
||||||
|
if (!is_same_nozzle_type(filament_type, tag_nozzle_type)){
|
||||||
has_slice_warnings = true;
|
has_slice_warnings = true;
|
||||||
has_update_nozzle = true;
|
is_printing_block = true;
|
||||||
nozzle_diameter = wxString::Format("%.1f", obj_->nozzle_diameter).ToStdString();
|
nozzle_diameter = wxString::Format("%.1f", obj_->nozzle_diameter).ToStdString();
|
||||||
|
|
||||||
wxString nozzle_in_preset = wxString::Format(_L("*Printing %s material with %s may cause nozzle damage"), filament_type, format_steel_name(obj_->nozzle_type));
|
wxString nozzle_in_preset = wxString::Format(_L("Printing high temperature material(%s material) with %s may cause nozzle damage"), filament_type, format_steel_name(obj_->nozzle_type));
|
||||||
confirm_text.push_back(nozzle_in_preset + "\n");
|
confirm_text.push_back(ConfirmBeforeSendInfo(nozzle_in_preset, ConfirmBeforeSendInfo::InfoLevel::Warning));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2541,7 +2541,13 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
||||||
wxString confirm_title = _L("Warning");
|
wxString confirm_title = _L("Warning");
|
||||||
ConfirmBeforeSendDialog confirm_dlg(this, wxID_ANY, confirm_title);
|
ConfirmBeforeSendDialog confirm_dlg(this, wxID_ANY, confirm_title);
|
||||||
|
|
||||||
if(has_update_nozzle){confirm_dlg.show_update_nozzle_button();}
|
if(is_printing_block){
|
||||||
|
confirm_dlg.disable_button_ok();
|
||||||
|
confirm_text.push_back(ConfirmBeforeSendInfo(_L("Please fix the error above, otherwise printing cannot continue."), ConfirmBeforeSendInfo::InfoLevel::Warning));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
confirm_text.push_back(ConfirmBeforeSendInfo(_L("Please click the confirm button if you still want to proceed with printing.")));
|
||||||
|
}
|
||||||
|
|
||||||
confirm_dlg.Bind(EVT_SECONDARY_CHECK_CONFIRM, [this, &confirm_dlg](wxCommandEvent& e) {
|
confirm_dlg.Bind(EVT_SECONDARY_CHECK_CONFIRM, [this, &confirm_dlg](wxCommandEvent& e) {
|
||||||
confirm_dlg.on_hide();
|
confirm_dlg.on_hide();
|
||||||
|
@ -2553,34 +2559,34 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
confirm_dlg.Bind(EVT_UPDATE_NOZZLE, [this, obj_, tag_nozzle_type, nozzle_diameter, &confirm_dlg](wxCommandEvent& e) {
|
//confirm_dlg.Bind(EVT_UPDATE_NOZZLE, [this, obj_, tag_nozzle_type, nozzle_diameter, &confirm_dlg](wxCommandEvent& e) {
|
||||||
if (obj_ && !tag_nozzle_type.empty() && !nozzle_diameter.empty()) {
|
// if (obj_ && !tag_nozzle_type.empty() && !nozzle_diameter.empty()) {
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
float diameter = std::stof(nozzle_diameter);
|
// float diameter = std::stof(nozzle_diameter);
|
||||||
diameter = round(diameter * 10) / 10;
|
// diameter = round(diameter * 10) / 10;
|
||||||
obj_->command_set_printer_nozzle(tag_nozzle_type, diameter);
|
// obj_->command_set_printer_nozzle(tag_nozzle_type, diameter);
|
||||||
}
|
// }
|
||||||
catch (...) {}
|
// catch (...) {}
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
|
|
||||||
|
|
||||||
confirm_text.push_back(_L("Please click the confirm button if you still want to proceed with printing.") + "\n");
|
|
||||||
wxString info_msg = wxEmptyString;
|
wxString info_msg = wxEmptyString;
|
||||||
|
|
||||||
for (auto i = 0; i < confirm_text.size(); i++) {
|
for (auto i = 0; i < confirm_text.size(); i++) {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
info_msg += confirm_text[i];
|
//info_msg += confirm_text[i];
|
||||||
}
|
}
|
||||||
else if (i == confirm_text.size() - 1) {
|
else if (i == confirm_text.size() - 1) {
|
||||||
info_msg += confirm_text[i];
|
//info_msg += confirm_text[i];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
info_msg += wxString::Format("%d. %s\n",i, confirm_text[i]);
|
confirm_text[i].text = wxString::Format("%d. %s",i, confirm_text[i].text);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
confirm_dlg.update_text(info_msg);
|
confirm_dlg.update_text(confirm_text);
|
||||||
confirm_dlg.on_show();
|
confirm_dlg.on_show();
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1017,6 +1017,13 @@ wxBoxSizer *StatusBasePanel::create_machine_control_page(wxWindow *parent)
|
||||||
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered), std::pair<wxColour, int>(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal));
|
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered), std::pair<wxColour, int>(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal));
|
||||||
StateColor btn_bd_green(std::pair<wxColour, int>(AMS_CONTROL_WHITE_COLOUR, StateColor::Disabled), std::pair<wxColour, int>(AMS_CONTROL_BRAND_COLOUR, StateColor::Enabled));
|
StateColor btn_bd_green(std::pair<wxColour, int>(AMS_CONTROL_WHITE_COLOUR, StateColor::Disabled), std::pair<wxColour, int>(AMS_CONTROL_BRAND_COLOUR, StateColor::Enabled));
|
||||||
|
|
||||||
|
m_parts_btn = new Button(m_panel_control_title, _L("Printer Parts"));
|
||||||
|
m_parts_btn->SetBackgroundColor(btn_bg_green);
|
||||||
|
m_parts_btn->SetBorderColor(btn_bd_green);
|
||||||
|
m_parts_btn->SetTextColor(wxColour("#FFFFFE"));
|
||||||
|
m_parts_btn->SetSize(wxSize(FromDIP(128), FromDIP(26)));
|
||||||
|
m_parts_btn->SetMinSize(wxSize(-1, FromDIP(26)));
|
||||||
|
|
||||||
m_options_btn = new Button(m_panel_control_title, _L("Print Options"));
|
m_options_btn = new Button(m_panel_control_title, _L("Print Options"));
|
||||||
m_options_btn->SetBackgroundColor(btn_bg_green);
|
m_options_btn->SetBackgroundColor(btn_bg_green);
|
||||||
m_options_btn->SetBorderColor(btn_bd_green);
|
m_options_btn->SetBorderColor(btn_bd_green);
|
||||||
|
@ -1034,6 +1041,7 @@ wxBoxSizer *StatusBasePanel::create_machine_control_page(wxWindow *parent)
|
||||||
|
|
||||||
bSizer_control_title->Add(m_staticText_control, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, PAGE_TITLE_LEFT_MARGIN);
|
bSizer_control_title->Add(m_staticText_control, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, PAGE_TITLE_LEFT_MARGIN);
|
||||||
bSizer_control_title->Add(0, 0, 1, wxEXPAND, 0);
|
bSizer_control_title->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
|
bSizer_control_title->Add(m_parts_btn, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(10));
|
||||||
bSizer_control_title->Add(m_options_btn, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(10));
|
bSizer_control_title->Add(m_options_btn, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(10));
|
||||||
bSizer_control_title->Add(m_calibration_btn, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(10));
|
bSizer_control_title->Add(m_calibration_btn, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(10));
|
||||||
|
|
||||||
|
@ -1696,6 +1704,7 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co
|
||||||
m_switch_speed->Connect(wxEVT_LEFT_DOWN, wxCommandEventHandler(StatusPanel::on_switch_speed), NULL, this);
|
m_switch_speed->Connect(wxEVT_LEFT_DOWN, wxCommandEventHandler(StatusPanel::on_switch_speed), NULL, this);
|
||||||
m_calibration_btn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_calibration), NULL, this);
|
m_calibration_btn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_calibration), NULL, this);
|
||||||
m_options_btn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_show_print_options), NULL, this);
|
m_options_btn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_show_print_options), NULL, this);
|
||||||
|
m_parts_btn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_show_parts_options), NULL, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusPanel::~StatusPanel()
|
StatusPanel::~StatusPanel()
|
||||||
|
@ -1728,6 +1737,7 @@ StatusPanel::~StatusPanel()
|
||||||
m_switch_speed->Disconnect(wxEVT_LEFT_DOWN, wxCommandEventHandler(StatusPanel::on_switch_speed), NULL, this);
|
m_switch_speed->Disconnect(wxEVT_LEFT_DOWN, wxCommandEventHandler(StatusPanel::on_switch_speed), NULL, this);
|
||||||
m_calibration_btn->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_calibration), NULL, this);
|
m_calibration_btn->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_calibration), NULL, this);
|
||||||
m_options_btn->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_show_print_options), NULL, this);
|
m_options_btn->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_show_print_options), NULL, this);
|
||||||
|
m_parts_btn->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_show_parts_options), NULL, this);
|
||||||
m_button_unload->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_unload), NULL, this);
|
m_button_unload->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_unload), NULL, this);
|
||||||
|
|
||||||
// remove warning dialogs
|
// remove warning dialogs
|
||||||
|
@ -2011,6 +2021,8 @@ void StatusPanel::update(MachineObject *obj)
|
||||||
m_options_btn->Hide();
|
m_options_btn->Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_parts_btn->Show();
|
||||||
|
|
||||||
//support edit chamber temp
|
//support edit chamber temp
|
||||||
if (obj->is_support_chamber_edit) {
|
if (obj->is_support_chamber_edit) {
|
||||||
m_tempCtrl_chamber->SetReadOnly(false);
|
m_tempCtrl_chamber->SetReadOnly(false);
|
||||||
|
@ -3965,7 +3977,8 @@ void StatusPanel::on_xyz_abs(wxCommandEvent &event)
|
||||||
if (obj) obj->command_xyz_abs();
|
if (obj) obj->command_xyz_abs();
|
||||||
}
|
}
|
||||||
|
|
||||||
void StatusPanel::on_show_print_options(wxCommandEvent &event)
|
|
||||||
|
void StatusPanel::on_show_print_options(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
if (obj) {
|
if (obj) {
|
||||||
if (print_options_dlg == nullptr) {
|
if (print_options_dlg == nullptr) {
|
||||||
|
@ -3980,6 +3993,22 @@ void StatusPanel::on_show_print_options(wxCommandEvent &event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void StatusPanel::on_show_parts_options(wxCommandEvent &event)
|
||||||
|
{
|
||||||
|
if (obj) {
|
||||||
|
if (print_parts_dlg == nullptr) {
|
||||||
|
print_parts_dlg = new PrinterPartsDialog(this);
|
||||||
|
print_parts_dlg->update_machine_obj(obj);
|
||||||
|
print_parts_dlg->ShowModal();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print_parts_dlg->update_machine_obj(obj);
|
||||||
|
print_parts_dlg->ShowModal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void StatusPanel::on_start_calibration(wxCommandEvent &event)
|
void StatusPanel::on_start_calibration(wxCommandEvent &event)
|
||||||
{
|
{
|
||||||
if (obj) {
|
if (obj) {
|
||||||
|
@ -4033,6 +4062,7 @@ void StatusPanel::set_default()
|
||||||
m_setting_button->Show();
|
m_setting_button->Show();
|
||||||
m_tempCtrl_chamber->Show();
|
m_tempCtrl_chamber->Show();
|
||||||
m_options_btn->Show();
|
m_options_btn->Show();
|
||||||
|
m_parts_btn->Show();
|
||||||
|
|
||||||
reset_temp_misc_control();
|
reset_temp_misc_control();
|
||||||
m_ams_control->Hide();
|
m_ams_control->Hide();
|
||||||
|
@ -4055,11 +4085,13 @@ void StatusPanel::show_status(int status)
|
||||||
show_printing_status(false, false);
|
show_printing_status(false, false);
|
||||||
m_calibration_btn->Disable();
|
m_calibration_btn->Disable();
|
||||||
m_options_btn->Disable();
|
m_options_btn->Disable();
|
||||||
|
m_parts_btn->Disable();
|
||||||
m_panel_monitoring_title->Disable();
|
m_panel_monitoring_title->Disable();
|
||||||
} else if ((status & (int) MonitorStatus::MONITOR_NORMAL) != 0) {
|
} else if ((status & (int) MonitorStatus::MONITOR_NORMAL) != 0) {
|
||||||
show_printing_status(true, true);
|
show_printing_status(true, true);
|
||||||
m_calibration_btn->Disable();
|
m_calibration_btn->Disable();
|
||||||
m_options_btn->Enable();
|
m_options_btn->Enable();
|
||||||
|
m_parts_btn->Enable();
|
||||||
m_panel_monitoring_title->Enable();
|
m_panel_monitoring_title->Enable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4186,6 +4218,9 @@ void StatusPanel::msw_rescale()
|
||||||
m_options_btn->SetMinSize(wxSize(-1, FromDIP(26)));
|
m_options_btn->SetMinSize(wxSize(-1, FromDIP(26)));
|
||||||
m_options_btn->Rescale();
|
m_options_btn->Rescale();
|
||||||
|
|
||||||
|
m_parts_btn->SetMinSize(wxSize(-1, FromDIP(26)));
|
||||||
|
m_parts_btn->Rescale();
|
||||||
|
|
||||||
rescale_camera_icons();
|
rescale_camera_icons();
|
||||||
|
|
||||||
Layout();
|
Layout();
|
||||||
|
|
|
@ -388,6 +388,7 @@ protected:
|
||||||
wxStaticText* m_staticText_calibration_caption;
|
wxStaticText* m_staticText_calibration_caption;
|
||||||
wxStaticText* m_staticText_calibration_caption_top;
|
wxStaticText* m_staticText_calibration_caption_top;
|
||||||
wxStaticText* m_calibration_text;
|
wxStaticText* m_calibration_text;
|
||||||
|
Button* m_parts_btn;
|
||||||
Button* m_options_btn;
|
Button* m_options_btn;
|
||||||
Button* m_calibration_btn;
|
Button* m_calibration_btn;
|
||||||
StepIndicator* m_calibration_flow;
|
StepIndicator* m_calibration_flow;
|
||||||
|
@ -454,6 +455,7 @@ protected:
|
||||||
std::shared_ptr<CameraPopup> m_camera_popup;
|
std::shared_ptr<CameraPopup> m_camera_popup;
|
||||||
std::set<int> rated_model_id;
|
std::set<int> rated_model_id;
|
||||||
AMSSetting *m_ams_setting_dlg{nullptr};
|
AMSSetting *m_ams_setting_dlg{nullptr};
|
||||||
|
PrinterPartsDialog* print_parts_dlg { nullptr };
|
||||||
PrintOptionsDialog* print_options_dlg { nullptr };
|
PrintOptionsDialog* print_options_dlg { nullptr };
|
||||||
CalibrationDialog* calibration_dlg {nullptr};
|
CalibrationDialog* calibration_dlg {nullptr};
|
||||||
AMSMaterialsSetting *m_filament_setting_dlg{nullptr};
|
AMSMaterialsSetting *m_filament_setting_dlg{nullptr};
|
||||||
|
@ -568,6 +570,7 @@ protected:
|
||||||
void on_auto_leveling(wxCommandEvent &event);
|
void on_auto_leveling(wxCommandEvent &event);
|
||||||
void on_xyz_abs(wxCommandEvent &event);
|
void on_xyz_abs(wxCommandEvent &event);
|
||||||
|
|
||||||
|
void on_show_parts_options(wxCommandEvent& event);
|
||||||
/* print options */
|
/* print options */
|
||||||
void on_show_print_options(wxCommandEvent &event);
|
void on_show_print_options(wxCommandEvent &event);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue