From 3d990a918904fb1ab10afa4f95f2885350821994 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Mon, 20 Jul 2020 16:27:39 +0200 Subject: First try to convert a user printer profiles to the physical printers --- src/libslic3r/Preset.cpp | 33 +++++++++++++++++++++++++++++++-- src/libslic3r/Preset.hpp | 1 + src/libslic3r/PresetBundle.cpp | 1 + src/slic3r/GUI/PresetComboBoxes.cpp | 6 ++++++ src/slic3r/GUI/PresetComboBoxes.hpp | 9 +++------ 5 files changed, 42 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index a55dc24ca..401de0fc3 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1481,7 +1481,7 @@ PhysicalPrinterCollection::PhysicalPrinterCollection( const std::vectorfind_printer(name, false)) { // This happens when there's is a preset (most likely legacy one) with the same name as a system preset // that's already been loaded from a bundle. - BOOST_LOG_TRIVIAL(warning) << "Preset already present, not loading: " << name; + BOOST_LOG_TRIVIAL(warning) << "Printer already present, not loading: " << name; continue; } try { @@ -1530,6 +1530,35 @@ void PhysicalPrinterCollection::load_printers(const std::string& dir_path, const throw std::runtime_error(errors_cummulative); } +// if there is saved user presets, contains information about "Print Host upload", +// Create default printers with this presets +// Throws an exception on error. +void PhysicalPrinterCollection::load_printers(const PrinterPresetCollection& printer_presets, std::string def_printer_name/* = ""*/) +{ + if (def_printer_name.empty()) + def_printer_name = "Printer"; + + int cnt=0; + std::string errors_cummulative; + // Store the loaded printers into a new vector + std::deque printers_loaded; + for (const Preset& preset: printer_presets) { + const DynamicPrintConfig& config = preset.config; + if (!config.opt_string("print_host").empty() || + !config.opt_string("printhost_apikey").empty() || + !config.opt_string("printhost_cafile").empty() ) { + PhysicalPrinter printer((boost::format("%1% %2%") % def_printer_name % ++cnt ).str(), preset); + printer.loaded = true; + printers_loaded.emplace_back(printer); + + save_printer(printer); + } + } + + if (!errors_cummulative.empty()) + throw std::runtime_error(errors_cummulative); +} + PhysicalPrinter* PhysicalPrinterCollection::find_printer( const std::string& name, bool first_visible_if_not_found) { PhysicalPrinter key(name); diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index e8afb0f6f..02f831136 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -626,6 +626,7 @@ public: // Load ini files of the particular type from the provided directory path. void load_printers(const std::string& dir_path, const std::string& subdir); + void load_printers(const PrinterPresetCollection &printer_presets, std::string def_printer_name = ""); // Save the printer under a new name. If the name is different from the old one, // a new printer is stored into the list of printers. diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 7969966e5..0e215a2ae 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -201,6 +201,7 @@ void PresetBundle::load_presets(AppConfig &config, const std::string &preferred_ } try { this->physical_printers.load_printers(dir_user_presets, "physical_printer"); + this->physical_printers.load_printers(this->printers); } catch (const std::runtime_error &err) { errors_cummulative += err.what(); } diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index bc1f48dd6..2d74344bd 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -131,6 +131,12 @@ PresetComboBox::~PresetComboBox() { } +BitmapCache& PresetComboBox::bitmap_cache() +{ + static BitmapCache bmps; + return bmps; +} + void PresetComboBox::set_label_marker(int item, LabelItemType label_item_type) { this->SetClientData(item, (void*)label_item_type); diff --git a/src/slic3r/GUI/PresetComboBoxes.hpp b/src/slic3r/GUI/PresetComboBoxes.hpp index 1cea97e41..89d043f7b 100644 --- a/src/slic3r/GUI/PresetComboBoxes.hpp +++ b/src/slic3r/GUI/PresetComboBoxes.hpp @@ -10,7 +10,7 @@ #include "libslic3r/Preset.hpp" #include "wxExtensions.hpp" #include "GUI_Utils.hpp" -#include "BitmapCache.hpp" +//#include "BitmapCache.hpp" class wxString; class wxTextCtrl; @@ -22,7 +22,7 @@ namespace Slic3r { namespace GUI { - +class BitmapCache; // --------------------------------- // *** PresetComboBox *** // --------------------------------- @@ -72,10 +72,7 @@ protected: PresetCollection* m_collection {nullptr}; // Caching bitmaps for the all bitmaps, used in preset comboboxes - static BitmapCache& bitmap_cache() { - static BitmapCache bmps; - return bmps; - } + static BitmapCache& bitmap_cache(); // Indicator, that the preset is compatible with the selected printer. ScalableBitmap m_bitmapCompatible; -- cgit v1.2.3