mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-12 03:27:55 +00:00
Merge branch '2.2.3' into dev_upgrade_alves
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1745,165 +1745,123 @@ wxBoxSizer* MainFrame::create_side_tools()
|
|||||||
|
|
||||||
m_print_option_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& event)
|
m_print_option_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
SidePopup* p = new SidePopup(this);
|
SidePopup* p = new SidePopup(this);
|
||||||
|
|
||||||
if (wxGetApp().preset_bundle
|
// if (wxGetApp().preset_bundle && !wxGetApp().preset_bundle->is_bbl_vendor())
|
||||||
&& !wxGetApp().preset_bundle->is_bbl_vendor()) {
|
if (0) {
|
||||||
// ThirdParty Buttons
|
// ThirdParty Buttons
|
||||||
SideButton* export_gcode_btn = new SideButton(p, _L("Export G-code file"), "");
|
SideButton* export_gcode_btn = new SideButton(p, _L("Export G-code file"), "");
|
||||||
export_gcode_btn->SetCornerRadius(0);
|
export_gcode_btn->SetCornerRadius(0);
|
||||||
export_gcode_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
export_gcode_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
||||||
m_print_btn->SetLabel(_L("Export G-code file"));
|
m_print_btn->SetLabel(_L("Export G-code file"));
|
||||||
m_print_select = eExportGcode;
|
m_print_select = eExportGcode;
|
||||||
m_print_enable = get_enable_print_status();
|
m_print_enable = get_enable_print_status();
|
||||||
m_print_btn->Enable(m_print_enable);
|
m_print_btn->Enable(m_print_enable);
|
||||||
this->Layout();
|
this->Layout();
|
||||||
p->Dismiss();
|
p->Dismiss();
|
||||||
});
|
});
|
||||||
|
|
||||||
// upload and print
|
// upload and print
|
||||||
SideButton* send_gcode_btn = new SideButton(p, _L("Print"), "");
|
SideButton* send_gcode_btn = new SideButton(p, _L("Print"), "");
|
||||||
send_gcode_btn->SetCornerRadius(0);
|
send_gcode_btn->SetCornerRadius(0);
|
||||||
send_gcode_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
send_gcode_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
||||||
m_print_btn->SetLabel(_L("Print"));
|
m_print_btn->SetLabel(_L("Print"));
|
||||||
m_print_select = eSendGcode;
|
m_print_select = eSendGcode;
|
||||||
m_print_enable = get_enable_print_status();
|
m_print_enable = get_enable_print_status();
|
||||||
m_print_btn->Enable(m_print_enable);
|
m_print_btn->Enable(m_print_enable);
|
||||||
this->Layout();
|
this->Layout();
|
||||||
p->Dismiss();
|
p->Dismiss();
|
||||||
});
|
});
|
||||||
|
|
||||||
p->append_button(send_gcode_btn);
|
p->append_button(send_gcode_btn);
|
||||||
p->append_button(export_gcode_btn);
|
p->append_button(export_gcode_btn);
|
||||||
|
} else {
|
||||||
|
SideButton* print_plate_btn = new SideButton(p, _L("Print"), "");
|
||||||
|
print_plate_btn->SetCornerRadius(0);
|
||||||
|
|
||||||
|
SideButton* export_sliced_file_btn = new SideButton(p, _L("Export plate sliced file"), "");
|
||||||
|
export_sliced_file_btn->SetCornerRadius(0);
|
||||||
|
|
||||||
|
SideButton* export_all_sliced_file_btn = new SideButton(p, _L("Export all sliced file"), "");
|
||||||
|
export_all_sliced_file_btn->SetCornerRadius(0);
|
||||||
|
|
||||||
|
print_plate_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
||||||
|
m_print_btn->SetLabel(_L("Print"));
|
||||||
|
m_print_select = eSendGcode;
|
||||||
|
m_print_enable = get_enable_print_status();
|
||||||
|
m_print_btn->Enable(m_print_enable);
|
||||||
|
this->Layout();
|
||||||
|
p->Dismiss();
|
||||||
|
});
|
||||||
|
|
||||||
|
export_sliced_file_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
||||||
|
m_print_btn->SetLabel(_L("Export plate sliced file"));
|
||||||
|
m_print_select = eExportSlicedFile;
|
||||||
|
m_print_enable = get_enable_print_status();
|
||||||
|
m_print_btn->Enable(m_print_enable);
|
||||||
|
this->Layout();
|
||||||
|
p->Dismiss();
|
||||||
|
});
|
||||||
|
|
||||||
|
export_all_sliced_file_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
||||||
|
m_print_btn->SetLabel(_L("Export all sliced file"));
|
||||||
|
m_print_select = eExportAllSlicedFile;
|
||||||
|
m_print_enable = get_enable_print_status();
|
||||||
|
m_print_btn->Enable(m_print_enable);
|
||||||
|
this->Layout();
|
||||||
|
p->Dismiss();
|
||||||
|
});
|
||||||
|
|
||||||
|
bool support_send = true;
|
||||||
|
bool support_print_all = true;
|
||||||
|
|
||||||
|
const auto preset_bundle = wxGetApp().preset_bundle;
|
||||||
|
if (preset_bundle) {
|
||||||
|
if (preset_bundle->use_bbl_network()) {
|
||||||
|
// BBL network support everything
|
||||||
|
} else {
|
||||||
|
support_send = false; // All 3rd print hosts do not have the send options
|
||||||
|
|
||||||
|
auto cfg = preset_bundle->printers.get_edited_preset().config;
|
||||||
|
const auto host_type = cfg.option<ConfigOptionEnum<PrintHostType>>("host_type")->value;
|
||||||
|
|
||||||
|
// Only simply print support uploading all plates
|
||||||
|
support_print_all = host_type == PrintHostType::htSimplyPrint;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
//Snapmaker Orca Buttons
|
|
||||||
SideButton* print_plate_btn = new SideButton(p, _L("Print plate"), "");
|
|
||||||
print_plate_btn->SetCornerRadius(0);
|
|
||||||
|
|
||||||
SideButton* send_to_printer_btn = new SideButton(p, _L("Send"), "");
|
p->append_button(print_plate_btn);
|
||||||
send_to_printer_btn->SetCornerRadius(0);
|
|
||||||
|
|
||||||
SideButton* export_sliced_file_btn = new SideButton(p, _L("Export plate sliced file"), "");
|
if (enable_multi_machine) {
|
||||||
export_sliced_file_btn->SetCornerRadius(0);
|
SideButton* print_multi_machine_btn = new SideButton(p, _L("Send to Multi-device"), "");
|
||||||
|
print_multi_machine_btn->SetCornerRadius(0);
|
||||||
SideButton* export_all_sliced_file_btn = new SideButton(p, _L("Export all sliced file"), "");
|
print_multi_machine_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
||||||
export_all_sliced_file_btn->SetCornerRadius(0);
|
m_print_btn->SetLabel(_L("Send to Multi-device"));
|
||||||
|
m_print_select = ePrintMultiMachine;
|
||||||
print_plate_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
|
||||||
m_print_btn->SetLabel(_L("Print plate"));
|
|
||||||
m_print_select = ePrintPlate;
|
|
||||||
m_print_enable = get_enable_print_status();
|
|
||||||
m_print_btn->Enable(m_print_enable);
|
|
||||||
this->Layout();
|
|
||||||
p->Dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
SideButton* print_all_btn = new SideButton(p, _L("Print all"), "");
|
|
||||||
print_all_btn->SetCornerRadius(0);
|
|
||||||
print_all_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
|
||||||
m_print_btn->SetLabel(_L("Print all"));
|
|
||||||
m_print_select = ePrintAll;
|
|
||||||
m_print_enable = get_enable_print_status();
|
|
||||||
m_print_btn->Enable(m_print_enable);
|
|
||||||
this->Layout();
|
|
||||||
p->Dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
send_to_printer_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
|
||||||
m_print_btn->SetLabel(_L("Send"));
|
|
||||||
m_print_select = eSendToPrinter;
|
|
||||||
m_print_enable = get_enable_print_status();
|
|
||||||
m_print_btn->Enable(m_print_enable);
|
|
||||||
this->Layout();
|
|
||||||
p->Dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
SideButton* send_to_printer_all_btn = new SideButton(p, _L("Send all"), "");
|
|
||||||
send_to_printer_all_btn->SetCornerRadius(0);
|
|
||||||
send_to_printer_all_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
|
||||||
m_print_btn->SetLabel(_L("Send all"));
|
|
||||||
m_print_select = eSendToPrinterAll;
|
|
||||||
m_print_enable = get_enable_print_status();
|
|
||||||
m_print_btn->Enable(m_print_enable);
|
|
||||||
this->Layout();
|
|
||||||
p->Dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
export_sliced_file_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
|
||||||
m_print_btn->SetLabel(_L("Export plate sliced file"));
|
|
||||||
m_print_select = eExportSlicedFile;
|
|
||||||
m_print_enable = get_enable_print_status();
|
|
||||||
m_print_btn->Enable(m_print_enable);
|
|
||||||
this->Layout();
|
|
||||||
p->Dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
export_all_sliced_file_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
|
||||||
m_print_btn->SetLabel(_L("Export all sliced file"));
|
|
||||||
m_print_select = eExportAllSlicedFile;
|
|
||||||
m_print_enable = get_enable_print_status();
|
|
||||||
m_print_btn->Enable(m_print_enable);
|
|
||||||
this->Layout();
|
|
||||||
p->Dismiss();
|
|
||||||
});
|
|
||||||
|
|
||||||
bool support_send = true;
|
|
||||||
bool support_print_all = true;
|
|
||||||
|
|
||||||
const auto preset_bundle = wxGetApp().preset_bundle;
|
|
||||||
if (preset_bundle) {
|
|
||||||
if (preset_bundle->use_bbl_network()) {
|
|
||||||
// BBL network support everything
|
|
||||||
} else {
|
|
||||||
support_send = false; // All 3rd print hosts do not have the send options
|
|
||||||
|
|
||||||
auto cfg = preset_bundle->printers.get_edited_preset().config;
|
|
||||||
const auto host_type = cfg.option<ConfigOptionEnum<PrintHostType>>("host_type")->value;
|
|
||||||
|
|
||||||
// Only simply print support uploading all plates
|
|
||||||
support_print_all = host_type == PrintHostType::htSimplyPrint;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p->append_button(print_plate_btn);
|
|
||||||
if (support_print_all) {
|
|
||||||
p->append_button(print_all_btn);
|
|
||||||
}
|
|
||||||
if (support_send) {
|
|
||||||
p->append_button(send_to_printer_btn);
|
|
||||||
p->append_button(send_to_printer_all_btn);
|
|
||||||
}
|
|
||||||
if (enable_multi_machine) {
|
|
||||||
SideButton* print_multi_machine_btn = new SideButton(p, _L("Send to Multi-device"), "");
|
|
||||||
print_multi_machine_btn->SetCornerRadius(0);
|
|
||||||
print_multi_machine_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
|
||||||
m_print_btn->SetLabel(_L("Send to Multi-device"));
|
|
||||||
m_print_select = ePrintMultiMachine;
|
|
||||||
m_print_enable = get_enable_print_status();
|
|
||||||
m_print_btn->Enable(m_print_enable);
|
|
||||||
this->Layout();
|
|
||||||
p->Dismiss();
|
|
||||||
});
|
|
||||||
p->append_button(print_multi_machine_btn);
|
|
||||||
}
|
|
||||||
p->append_button(export_sliced_file_btn);
|
|
||||||
p->append_button(export_all_sliced_file_btn);
|
|
||||||
SideButton* export_gcode_btn = new SideButton(p, _L("Export G-code file"), "");
|
|
||||||
export_gcode_btn->SetCornerRadius(0);
|
|
||||||
export_gcode_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
|
||||||
m_print_btn->SetLabel(_L("Export G-code file"));
|
|
||||||
m_print_select = eExportGcode;
|
|
||||||
m_print_enable = get_enable_print_status();
|
m_print_enable = get_enable_print_status();
|
||||||
m_print_btn->Enable(m_print_enable);
|
m_print_btn->Enable(m_print_enable);
|
||||||
this->Layout();
|
this->Layout();
|
||||||
p->Dismiss();
|
p->Dismiss();
|
||||||
});
|
});
|
||||||
p->append_button(export_gcode_btn);
|
p->append_button(print_multi_machine_btn);
|
||||||
}
|
}
|
||||||
|
p->append_button(export_sliced_file_btn);
|
||||||
p->Popup(m_print_btn);
|
p->append_button(export_all_sliced_file_btn);
|
||||||
|
SideButton* export_gcode_btn = new SideButton(p, _L("Export G-code file"), "");
|
||||||
|
export_gcode_btn->SetCornerRadius(0);
|
||||||
|
export_gcode_btn->Bind(wxEVT_BUTTON, [this, p](wxCommandEvent&) {
|
||||||
|
m_print_btn->SetLabel(_L("Export G-code file"));
|
||||||
|
m_print_select = eExportGcode;
|
||||||
|
m_print_enable = get_enable_print_status();
|
||||||
|
m_print_btn->Enable(m_print_enable);
|
||||||
|
this->Layout();
|
||||||
|
p->Dismiss();
|
||||||
|
});
|
||||||
|
p->append_button(export_gcode_btn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p->Popup(m_print_btn);
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -4948,8 +4948,8 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
|||||||
|
|
||||||
if (is_snapmaker_u1) {
|
if (is_snapmaker_u1) {
|
||||||
if (q->get_notification_manager()) {
|
if (q->get_notification_manager()) {
|
||||||
std::string warning_text = _u8L("Warning: Printing by object with caution. This function may cause the print head to collide with printed parts during switching.");
|
wxString warning_text = _L("Printing by object with caution. This function may cause the print head to collide with printed parts during switching.");
|
||||||
q->get_notification_manager()->push_plater_error_notification(warning_text);
|
q->get_notification_manager()->push_plater_error_notification(warning_text.ToStdString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1567,16 +1567,16 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value)
|
|||||||
if (is_snapmaker_u1) {
|
if (is_snapmaker_u1) {
|
||||||
// Show red warning notification
|
// Show red warning notification
|
||||||
if (wxGetApp().plater() && wxGetApp().plater()->get_notification_manager()) {
|
if (wxGetApp().plater() && wxGetApp().plater()->get_notification_manager()) {
|
||||||
std::string warning_text = _u8L("Warning: Printing by object with caution. This function may cause the print head to collide with printed parts during switching.");
|
wxString warning_text = _L("Printing by object with caution. This function may cause the print head to collide with printed parts during switching.");
|
||||||
wxGetApp().plater()->get_notification_manager()->push_plater_error_notification(warning_text);
|
wxGetApp().plater()->get_notification_manager()->push_plater_error_notification(warning_text.ToStdString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Clear warning when switching away from ByObject
|
// Clear warning when switching away from ByObject
|
||||||
if (wxGetApp().plater() && wxGetApp().plater()->get_notification_manager()) {
|
if (wxGetApp().plater() && wxGetApp().plater()->get_notification_manager()) {
|
||||||
std::string warning_text = _u8L("Warning: Printing by object with caution. This function may cause the print head to collide with printed parts during switching.");
|
wxString warning_text = _L("Printing by object with caution. This function may cause the print head to collide with printed parts during switching.");
|
||||||
wxGetApp().plater()->get_notification_manager()->close_plater_error_notification(warning_text);
|
wxGetApp().plater()->get_notification_manager()->close_plater_error_notification(warning_text.ToStdString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1056,6 +1056,18 @@ int GuideFrame::LoadProfileData()
|
|||||||
}
|
}
|
||||||
loaded_vendors.insert(PresetBundle::ORCA_FILAMENT_LIBRARY);
|
loaded_vendors.insert(PresetBundle::ORCA_FILAMENT_LIBRARY);
|
||||||
|
|
||||||
|
// Load Snapmaker vendor first to ensure it appears at the top of the machine list
|
||||||
|
auto sm_bundle_name = boost::filesystem::path(PresetBundle::SM_BUNDLE).replace_extension(".json");
|
||||||
|
if (boost::filesystem::exists(vendor_dir / sm_bundle_name)) {
|
||||||
|
LoadProfileFamily(PresetBundle::SM_BUNDLE, (vendor_dir / sm_bundle_name).string());
|
||||||
|
loaded_vendors.insert(PresetBundle::SM_BUNDLE);
|
||||||
|
} else if (boost::filesystem::exists(rsrc_vendor_dir / sm_bundle_name)) {
|
||||||
|
LoadProfileFamily(PresetBundle::SM_BUNDLE, (rsrc_vendor_dir / sm_bundle_name).string());
|
||||||
|
loaded_vendors.insert(PresetBundle::SM_BUNDLE);
|
||||||
|
}
|
||||||
|
if (m_destroy)
|
||||||
|
return 0;
|
||||||
|
|
||||||
//load custom bundle from user data path
|
//load custom bundle from user data path
|
||||||
boost::filesystem::directory_iterator endIter;
|
boost::filesystem::directory_iterator endIter;
|
||||||
for (boost::filesystem::directory_iterator iter(vendor_dir); iter != endIter; iter++) {
|
for (boost::filesystem::directory_iterator iter(vendor_dir); iter != endIter; iter++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user