From 2cb108fbf841a3fe5be317e8cbf3d863ff8ec6a2 Mon Sep 17 00:00:00 2001
From: Enrico Turri <enricoturri@seznam.cz>
Date: Thu, 17 May 2018 12:56:14 +0200
Subject: [PATCH 1/3] Fix in File menu

---
 lib/Slic3r/GUI/MainFrame.pm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm
index fbcd34a3f..a8de4a135 100644
--- a/lib/Slic3r/GUI/MainFrame.pm
+++ b/lib/Slic3r/GUI/MainFrame.pm
@@ -191,7 +191,7 @@ sub _init_menubar {
     # File menu
     my $fileMenu = Wx::Menu->new;
     {
-        wxTheApp->append_menu_item($fileMenu, L("Open STL/OBJ/AMF…\tCtrl+O"), L('Open a model'), sub {
+        wxTheApp->append_menu_item($fileMenu, L("Open STL/OBJ/AMF/3MF…\tCtrl+O"), L('Open a model'), sub {
             $self->{plater}->add if $self->{plater};
         }, undef, undef); #'brick_add.png');
         $self->_append_menu_item($fileMenu, L("&Load Config…\tCtrl+L"), L('Load exported configuration file'), sub {

From 96c7c4a58b819b8cc0ca0dd1c9e00717a9b04e42 Mon Sep 17 00:00:00 2001
From: Vojtech Kral <vojtech@kral.hk>
Date: Wed, 16 May 2018 19:41:35 +0200
Subject: [PATCH 2/3] PresetUpdater: Remove obsolete presets

---
 xs/src/slic3r/Utils/PresetUpdater.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/xs/src/slic3r/Utils/PresetUpdater.cpp b/xs/src/slic3r/Utils/PresetUpdater.cpp
index fcbe20fb7..a5208e3c2 100644
--- a/xs/src/slic3r/Utils/PresetUpdater.cpp
+++ b/xs/src/slic3r/Utils/PresetUpdater.cpp
@@ -409,6 +409,17 @@ void PresetUpdater::priv::perform_updates(Updates &&updates, bool snapshot) cons
 			for (const auto &preset : bundle.prints)    { preset_remover(preset); }
 			for (const auto &preset : bundle.filaments) { preset_remover(preset); }
 			for (const auto &preset : bundle.printers)  { preset_remover(preset); }
+
+			// Also apply the `obsolete_presets` property, removing obsolete ini files
+			auto obsolete_remover = [](const char *subdir, const std::string &preset) {
+				auto path = fs::path(Slic3r::data_dir()) / subdir / preset;
+				path += ".ini";
+				fs::remove(path);
+			};
+
+			for (const auto &name : bundle.obsolete_presets.prints)    { obsolete_remover("print", name); }
+			for (const auto &name : bundle.obsolete_presets.filaments) { obsolete_remover("filament", name); }
+			for (const auto &name : bundle.obsolete_presets.printers)  { obsolete_remover("printer", name); }
 		}
 	}
 }

From 35bf4aee7df3baee5f64b769d58d20199bb5268a Mon Sep 17 00:00:00 2001
From: bubnikv <bubnikv@gmail.com>
Date: Thu, 17 May 2018 14:08:50 +0200
Subject: [PATCH 3/3] Fixed loading of configuraton values octoprint_host,
 support_material_threshold They were incorrectly handled by the
 handle_legacy() function, which has been ported from the upstream Slic3r
 without inspecting its content.

---
 xs/src/libslic3r/PrintConfig.cpp | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp
index 697a6f0d4..dcfc3ffe7 100644
--- a/xs/src/libslic3r/PrintConfig.cpp
+++ b/xs/src/libslic3r/PrintConfig.cpp
@@ -1911,8 +1911,10 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va
         std::ostringstream oss;
         oss << "0x0," << p.value.x << "x0," << p.value.x << "x" << p.value.y << ",0x" << p.value.y;
         value = oss.str();
-    } else if (opt_key == "octoprint_host" && !value.empty()) {
-        opt_key = "print_host";
+// Maybe one day we will rename octoprint_host to print_host as it has been done in the upstream Slic3r.
+// Commenting this out fixes github issue #869 for now.
+//    } else if (opt_key == "octoprint_host" && !value.empty()) {
+//        opt_key = "print_host";
     } else if ((opt_key == "perimeter_acceleration" && value == "25")
         || (opt_key == "infill_acceleration" && value == "50")) {
         /*  For historical reasons, the world's full of configs having these very low values;
@@ -1923,10 +1925,6 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va
     } else if (opt_key == "support_material_pattern" && value == "pillars") {
         // Slic3r PE does not support the pillars. They never worked well.
         value = "rectilinear";
-    } else if (opt_key == "support_material_threshold" && value == "0") {
-        // 0 used to be automatic threshold, but we introduced percent values so let's
-        // transform it into the default value
-        value = "60%";
     }
     
     // Ignore the following obsolete configuration keys: