From a16a6415dd827d781550d052a1e5911afad94a27 Mon Sep 17 00:00:00 2001 From: remi durand Date: Tue, 1 Jun 2021 09:41:51 +0200 Subject: [PATCH] add klipper to export gcode target --- src/libslic3r/PrintConfig.cpp | 2 ++ src/libslic3r/PrintConfig.hpp | 8 ++++++- src/slic3r/CMakeLists.txt | 2 ++ src/slic3r/GUI/PhysicalPrinterDialog.cpp | 9 +++++-- src/slic3r/Utils/Klipper.cpp | 30 ++++++++++++++++++++++++ src/slic3r/Utils/Klipper.hpp | 30 ++++++++++++++++++++++++ src/slic3r/Utils/OctoPrint.cpp | 9 +++---- src/slic3r/Utils/PrintHost.cpp | 2 ++ 8 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 src/slic3r/Utils/Klipper.cpp create mode 100644 src/slic3r/Utils/Klipper.hpp diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 098225b01..d61c8abeb 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2688,11 +2688,13 @@ void PrintConfigDef::init_fff_params() def->enum_values.push_back("flashair"); def->enum_values.push_back("astrobox"); def->enum_values.push_back("repetier"); + def->enum_values.push_back("klipper"); def->enum_labels.push_back("OctoPrint"); def->enum_labels.push_back("Duet"); def->enum_labels.push_back("FlashAir"); def->enum_labels.push_back("AstroBox"); def->enum_labels.push_back("Repetier"); + def->enum_labels.push_back("Klipper"); def->mode = comAdvanced; def->set_default_value(new ConfigOptionEnum(htOctoPrint)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 5b3998acd..b702f01a5 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -72,7 +72,12 @@ enum class MachineLimitsUsage : uint8_t { }; enum PrintHostType { - htOctoPrint, htDuet, htFlashAir, htAstroBox, htRepetier + htOctoPrint, + htDuet, + htFlashAir, + htAstroBox, + htRepetier, + htKlipper, }; enum AuthorizationType { @@ -222,6 +227,7 @@ template<> inline const t_config_enum_values& ConfigOptionEnum::g {"flashair", htFlashAir}, {"astrobox", htAstroBox}, {"repetier", htRepetier}, + {"klipper", htKlipper}, }; return keys_map; } diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index f8a4a797e..3beacae68 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -215,6 +215,8 @@ set(SLIC3R_GUI_SOURCES Utils/FixModelByWin10.hpp Utils/OctoPrint.cpp Utils/OctoPrint.hpp + Utils/Klipper.cpp + Utils/Klipper.hpp Utils/Duet.cpp Utils/Duet.hpp Utils/FlashAir.cpp diff --git a/src/slic3r/GUI/PhysicalPrinterDialog.cpp b/src/slic3r/GUI/PhysicalPrinterDialog.cpp index 45e0fdab9..a98ef4593 100644 --- a/src/slic3r/GUI/PhysicalPrinterDialog.cpp +++ b/src/slic3r/GUI/PhysicalPrinterDialog.cpp @@ -496,10 +496,15 @@ void PhysicalPrinterDialog::update() m_optgroup->hide_field("printhost_authorization_type"); m_optgroup->show_field("printhost_apikey", true); for (const std::string& opt_key : std::vector{ "printhost_user", "printhost_password" }) - m_optgroup->hide_field(opt_key); + m_optgroup->hide_field(opt_key); const auto opt = m_config->option>("host_type"); supports_multiple_printers = opt && opt->value == htRepetier; - } + + // hide api key for klipper + if (opt && opt->value == htKlipper) { + m_optgroup->hide_field("printhost_apikey"); + } + } else { m_optgroup->set_value("host_type", int(PrintHostType::htOctoPrint), false); m_optgroup->hide_field("host_type"); diff --git a/src/slic3r/Utils/Klipper.cpp b/src/slic3r/Utils/Klipper.cpp new file mode 100644 index 000000000..0135d88c9 --- /dev/null +++ b/src/slic3r/Utils/Klipper.cpp @@ -0,0 +1,30 @@ +#include "Klipper.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "slic3r/GUI/I18N.hpp" +#include "slic3r/GUI/GUI.hpp" +#include "Http.hpp" + + +namespace fs = boost::filesystem; +namespace pt = boost::property_tree; + + +namespace Slic3r { + +Klipper::Klipper(DynamicPrintConfig *config) : OctoPrint(config) {} + +const char* Klipper::get_name() const { return "Klipper"; } + +} \ No newline at end of file diff --git a/src/slic3r/Utils/Klipper.hpp b/src/slic3r/Utils/Klipper.hpp new file mode 100644 index 000000000..74022b98e --- /dev/null +++ b/src/slic3r/Utils/Klipper.hpp @@ -0,0 +1,30 @@ +#ifndef slic3r_Klipper_hpp_ +#define slic3r_Klipper_hpp_ + +#include + +#include +#include +#include +#include + +#include "OctoPrint.hpp" +#include "libslic3r/PrintConfig.hpp" + + +namespace Slic3r { + +class DynamicPrintConfig; + +class Klipper : public OctoPrint +{ +public: + Klipper(DynamicPrintConfig *config); + ~Klipper() override = default; + + const char* get_name() const; +}; + +} + +#endif diff --git a/src/slic3r/Utils/OctoPrint.cpp b/src/slic3r/Utils/OctoPrint.cpp index fad45f822..b3fe215d9 100644 --- a/src/slic3r/Utils/OctoPrint.cpp +++ b/src/slic3r/Utils/OctoPrint.cpp @@ -80,15 +80,12 @@ bool OctoPrint::test(wxString &msg) const wxString OctoPrint::get_test_ok_msg () const { - return _(L("Connection to OctoPrint works correctly.")); + return wxString::Format(_(L("Connection to %s works correctly.")), get_name()); } 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 wxString::Format("%s: %s\n\n%s", wxString::Format(_(L("Could not connect to %s")), get_name()), msg, _(L("Note: OctoPrint version at least 1.1.0 is required."))); } bool OctoPrint::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn) const @@ -133,7 +130,7 @@ bool OctoPrint::upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, Erro prorgess_fn(std::move(progress), cancel); if (cancel) { // Upload was canceled - BOOST_LOG_TRIVIAL(info) << "Octoprint: Upload canceled"; + BOOST_LOG_TRIVIAL(info) << get_name() << ": Upload canceled"; res = false; } }) diff --git a/src/slic3r/Utils/PrintHost.cpp b/src/slic3r/Utils/PrintHost.cpp index 589679e47..4f7728540 100644 --- a/src/slic3r/Utils/PrintHost.cpp +++ b/src/slic3r/Utils/PrintHost.cpp @@ -18,6 +18,7 @@ #include "FlashAir.hpp" #include "AstroBox.hpp" #include "Repetier.hpp" +#include "Klipper.hpp" #include "../GUI/PrintHostDialogs.hpp" namespace fs = boost::filesystem; @@ -50,6 +51,7 @@ PrintHost* PrintHost::get_print_host(DynamicPrintConfig *config) case htFlashAir: return new FlashAir(config); case htAstroBox: return new AstroBox(config); case htRepetier: return new Repetier(config); + case htKlipper: return new Klipper(config); default: return nullptr; } } else {