diff --git a/resources/model/QIDI.stl b/resources/model/QIDI.stl new file mode 100644 index 0000000..df55348 Binary files /dev/null and b/resources/model/QIDI.stl differ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dbf0062..8ad7b43 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -253,7 +253,7 @@ else () set(MACOSX_BUNDLE_ICON_FILE Icon.icns) set(MACOSX_BUNDLE_BUNDLE_NAME "QIDI Studio") set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${SLIC3R_VERSION}) - set(MACOSX_BUNDLE_COPYRIGHT "Copyright(C) 2021-2023 Lunkuo All Rights Reserved") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright(C) 2024 QIDI All Rights Reserved") endif() add_custom_command(TARGET QIDIStudio POST_BUILD COMMAND ln -sfn "${SLIC3R_RESOURCES_DIR}" "${BIN_RESOURCES_DIR}" diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 4c5676e..faea877 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -3263,6 +3263,18 @@ GCode::LayerResult GCode::process_layer( // QDS int bed_temp = get_bed_temperature(first_extruder_id, false, print.config().curr_bed_type); gcode += m_writer.set_bed_temperature(bed_temp); + + //w32 + { + int min_chamber_temp = 0; + min_chamber_temp = m_config.chamber_temperatures.get_at(m_writer.extruders().front().id()); + for (const auto& extruder : m_writer.extruders()) + min_chamber_temp = std::min(min_chamber_temp, m_config.chamber_temperatures.get_at(extruder.id())); + if ( print.config().support_chamber_temp_control.value && min_chamber_temp > 0) { + gcode += m_writer.set_chamber_temperature(min_chamber_temp, false); + } + } + // Mark the temperature transition from 1st to 2nd layer to be finished. m_second_layer_things_done = true; } diff --git a/src/platform/msw/QIDIStudio-gcodeviewer.rc.in b/src/platform/msw/QIDIStudio-gcodeviewer.rc.in index b073620..3d77a36 100644 --- a/src/platform/msw/QIDIStudio-gcodeviewer.rc.in +++ b/src/platform/msw/QIDIStudio-gcodeviewer.rc.in @@ -12,7 +12,7 @@ PRODUCTVERSION @SLIC3R_VERSION@ VALUE "ProductName", "@SLIC3R_APP_NAME@ G-code Viewer" VALUE "ProductVersion", "@SLIC3R_BUILD_ID@" VALUE "InternalName", "@SLIC3R_APP_NAME@ G-code Viewer" - VALUE "LegalCopyright", "Copyright(C) 2021-2023 Lunkuo All Rights Reserved" + VALUE "LegalCopyright", "Copyright(C) 2024 QIDI All Rights Reserved" VALUE "OriginalFilename", "qidi-gcodeviewer.exe" } } diff --git a/src/platform/msw/QIDIStudio.rc.in b/src/platform/msw/QIDIStudio.rc.in index 440b8a7..93a9ad9 100644 --- a/src/platform/msw/QIDIStudio.rc.in +++ b/src/platform/msw/QIDIStudio.rc.in @@ -12,7 +12,7 @@ PRODUCTVERSION @SLIC3R_VERSION@ VALUE "ProductName", "@SLIC3R_APP_NAME@" VALUE "ProductVersion", "@SLIC3R_BUILD_ID@" VALUE "InternalName", "@SLIC3R_APP_NAME@" - VALUE "LegalCopyright", "Copyright(C) 2021-2023 Lunkuo All Rights Reserved" + VALUE "LegalCopyright", "Copyright(C) 2024 QIDI All Rights Reserved" VALUE "OriginalFilename", "qidi-studio.exe" } } diff --git a/src/platform/osx/Info.plist.in b/src/platform/osx/Info.plist.in index fe888ab..6c27992 100644 --- a/src/platform/osx/Info.plist.in +++ b/src/platform/osx/Info.plist.in @@ -5,7 +5,7 @@ CFBundleExecutable @SLIC3R_APP_KEY@ CFBundleGetInfoString - @SLIC3R_APP_NAME@ Copyright(C) 2021-2023 Lunkuo All Rights Reserved + @SLIC3R_APP_NAME@ Copyright(C) 2024 QIDI All Rights Reserved CFBundleIconFile images/QIDIStudio.icns CFBundleName diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 1a6aeb3..4d98c58 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -242,7 +242,7 @@ AboutDialog::AboutDialog() //B // version { - vesizer->Add(0, FromDIP(165), 1, wxEXPAND, FromDIP(5)); + vesizer->Add(0, FromDIP(190), 1, wxEXPAND, FromDIP(5)); auto version_text = GUI_App::format_display_version(); #if QDT_INTERNAL_TESTING wxString versionText = QDT_INTERNAL_TESTING == 1 ? _L("Internal Version") : _L("Beta Version"); @@ -260,19 +260,19 @@ AboutDialog::AboutDialog() version_font.SetPointSize(FromDIP(16)); version->SetFont(version_font); version->SetForegroundColour(wxColour("#FFFFFD")); - version->SetBackgroundColour(wxColour("#4479FB")); + version->SetBackgroundColour(wxColour("#303ab2")); vesizer->Add(version, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, FromDIP(5)); #if QDT_INTERNAL_TESTING wxString plugin_version = wxString::Format("Plugin Version: %s", wxGetApp().getAgent() ? wxGetApp().getAgent()->get_version() : ""); wxStaticText *plugin_version_text = new wxStaticText(this, wxID_ANY, plugin_version, wxDefaultPosition, wxDefaultSize); plugin_version_text->SetForegroundColour(wxColour("#FFFFFE")); - plugin_version_text->SetBackgroundColour(wxColour("#4479FB")); + plugin_version_text->SetBackgroundColour(wxColour("#303ab2")); vesizer->Add(plugin_version_text, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, FromDIP(5)); wxString build_time = wxString::Format("Build Time: %s", std::string(SLIC3R_BUILD_TIME)); wxStaticText* build_time_text = new wxStaticText(this, wxID_ANY, build_time, wxDefaultPosition, wxDefaultSize); build_time_text->SetForegroundColour(wxColour("#FFFFFE")); - build_time_text->SetBackgroundColour(wxColour("#4479FB")); + build_time_text->SetBackgroundColour(wxColour("#303ab2")); vesizer->Add(build_time_text, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, FromDIP(5)); #endif vesizer->Add(0, 0, 1, wxEXPAND, FromDIP(5)); @@ -331,7 +331,7 @@ AboutDialog::AboutDialog() copyright_hor_sizer->Add(copyright_ver_sizer, 0, wxLEFT, FromDIP(20)); - wxStaticText *html_text = new wxStaticText(this, wxID_ANY, "Copyright(C) 2021-2024 Lunkuo All Rights Reserved", wxDefaultPosition, wxDefaultSize); + wxStaticText *html_text = new wxStaticText(this, wxID_ANY, "Copyright(C) 2024 QIDI All Rights Reserved", wxDefaultPosition, wxDefaultSize); html_text->SetForegroundColour(wxColour(107, 107, 107)); copyright_ver_sizer->Add(html_text, 0, wxALL , 0); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 0626021..8ae93b4 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -96,8 +96,6 @@ #include "Notebook.hpp" #include "Widgets/Label.hpp" #include "Widgets/ProgressDialog.hpp" -#include -#include //QDS: DailyTip and UserGuide Dialog #include "WebDownPluginDlg.hpp" @@ -3956,18 +3954,9 @@ void GUI_App::get_login_info() { m_user_name = ""; wxGetApp().app_config->set("user_token", ""); - wxGetApp().app_config->set("user_head_url", ""); - wxGetApp().app_config->set("user_head_name", ""); wxString user_head_path = (boost::filesystem::path(Slic3r::data_dir()) / "user" / head_name).make_preferred().string(); wxString strJS = wxString::Format("SetUserOffline()"); GUI::wxGetApp().run_script_left(strJS); - //y34 - std::ifstream file(user_head_path); - if (file.good()) - { - file.close(); - remove(user_head_path.c_str()); - } m_qidi_login = false; } else @@ -4003,22 +3992,8 @@ void GUI_App::get_login_info() } else { - std::string head_name = wxGetApp().app_config->get("user_head_name"); - //y34 - if (!head_name.empty()) - { - wxString user_head_path = (boost::filesystem::path(Slic3r::data_dir()) / "user" / head_name).make_preferred().string(); - std::ifstream file(user_head_path); - if (file.good()) - { - file.close(); - remove(user_head_path.c_str()); - } - } m_user_name = ""; wxGetApp().app_config->set("user_token", ""); - wxGetApp().app_config->set("user_head_url", ""); - wxGetApp().app_config->set("user_head_name", ""); wxString strJS = wxString::Format("SetUserOffline()"); GUI::wxGetApp().run_script_left(strJS); m_qidi_login = false; diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 4a069c6..cd50a3d 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -500,7 +500,7 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty //B if (type == ModelVolumeType::INVALID) { sub_menu->AppendSeparator(); - for (auto &item : { L("3DBenchy"), L("ksr FDMTest")}) { + for (auto &item : { L("QIDI"), L("3DBenchy"), L("ksr FDMTest")}) { append_menu_item( sub_menu, wxID_ANY, _(item), "", [type, item](wxCommandEvent &) { obj_list()->load_generic_subobject(item, type); }, "", menu); } diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 4af9110..d63dd71 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2106,6 +2106,9 @@ static TriangleMesh create_mesh(const std::string& type_name, const BoundingBoxf mesh.ReadSTLFile((Slic3r::resources_dir() + "/model/torus.stl").c_str(), true, nullptr); else if (type_name == "Rounded Rectangle") mesh.ReadSTLFile((Slic3r::resources_dir() + "/model/rounded_rectangle.stl").c_str(), true, nullptr); +//ZY3 + else if (type_name == "QIDI") + mesh.ReadSTLFile((Slic3r::resources_dir() + "/model/QIDI.stl").c_str(), true, nullptr); else if (type_name == "3DBenchy") mesh.ReadSTLFile((Slic3r::resources_dir() + "/model/3DBenchy.stl").c_str(), true, nullptr); else if (type_name == "ksr FDMTest") diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 61b5233..0fea8a2 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -1950,6 +1950,9 @@ bool MainFrame::get_enable_print_status() { enable = false; } + //y37 + if(m_plater->only_gcode_mode()) + enable = false; enable = enable && !is_all_plates; } else if (m_print_select == eExportGcode) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 1e56c8b..44b5f38 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -1317,7 +1317,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater, wxString title) // wxString hyperlink_1 = wxString::Format(L"https://wiki.qidi3d.com/%s/software/qidi-studio/fluidd", region); // m_hyperlink = new wxHyperlinkCtrl(m_panel_prepare, wxID_ANY, _L("Click here if you can't connect to the printer"), hyperlink_1, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); wxString hyperlink_2 = wxString::Format(L"https://wiki.qidi3d.com/%s/software/qidi-studio/troubleshooting/connect-send-problem", region); - m_hyperlink = new wxHyperlinkCtrl(m_panel_prepare, wxID_ANY, _L("Click here if you failed to send the task"), hyperlink_2, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); + m_hyperlink = new wxHyperlinkCtrl(m_panel_prepare, wxID_ANY, _L("Click here if you failed to send the print job"), hyperlink_2, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); hyperlink_sizer->Add(m_hyperlink, 0, wxALIGN_CENTER | wxALL, 5); m_sizer_prepare->Add(hyperlink_sizer, 0, wxALIGN_CENTER | wxALL, 5); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index cdd831e..5a2cc1d 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -492,12 +492,12 @@ wxBitmap create_scaled_bitmap_of_login(const std::string& bmp_name_in, Slic3r::GUI::wxGetApp().dark_mode(); // Try loading an SVG first, then PNG if SVG is not found: - wxBitmap* bmp; + wxBitmap* bmp{nullptr}; if(!bmp_name.empty()) bmp = cache.load_login_png(bmp_name, width, height, grayscale, resize ? win->FromDIP(10) * 0.1f : 0.f); else { - if(px_cnt > 50) + if (px_cnt > 50) bmp = cache.load_png("user_dark", width, height, grayscale, resize ? win->FromDIP(10) * 0.1f : 0.f); else { @@ -505,11 +505,8 @@ wxBitmap create_scaled_bitmap_of_login(const std::string& bmp_name_in, bmp = cache.load_png("user_dark_tiny", width, height, grayscale, resize ? win->FromDIP(10) * 0.1f : 0.f); } } - - if (bmp == nullptr) { - // Neither SVG nor PNG has been found, raise error + if (bmp == nullptr) throw Slic3r::RuntimeError("Could not load bitmap: " + bmp_name); - } return *bmp; } diff --git a/src/slic3r/Utils/OctoPrint.cpp b/src/slic3r/Utils/OctoPrint.cpp index 2f6123a..a81865c 100644 --- a/src/slic3r/Utils/OctoPrint.cpp +++ b/src/slic3r/Utils/OctoPrint.cpp @@ -175,10 +175,9 @@ wxString OctoPrint::get_test_ok_msg () const wxString OctoPrint::get_test_failed_msg (wxString &msg) const { - return GUI::from_u8((boost::format("%s: %s\n\n%s") - % _utf8(L("Could not connect to OctoPrint")) - % std::string(msg.ToUTF8()) - % _utf8(L("Note: OctoPrint version at least 1.1.0 is required."))).str()); + return GUI::from_u8((boost::format("%s: %s\n") + % _utf8(L("Could not connect to Moonraker")) + % std::string(msg.ToUTF8())).str()); } bool OctoPrint::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn) const