From 741e98804cf2a32172cc7989d53202c99c76feb1 Mon Sep 17 00:00:00 2001
From: Lukas Matena <lukasmatena@seznam.cz>
Date: Wed, 18 Sep 2019 11:47:19 +0200
Subject: [PATCH 1/2] Purging volumes dialog now uses filament colour in case
 extruder color is undefined

---
 src/slic3r/GUI/Plater.cpp | 11 ++++++++++-
 src/slic3r/GUI/Plater.hpp |  1 +
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp
index c5aad48a9..e548ed3ba 100644
--- a/src/slic3r/GUI/Plater.cpp
+++ b/src/slic3r/GUI/Plater.cpp
@@ -522,7 +522,11 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) :
             const std::vector<double> &init_extruders = (project_config.option<ConfigOptionFloats>("wiping_volumes_extruders"))->values;
 
             const DynamicPrintConfig* config = &wxGetApp().preset_bundle->printers.get_edited_preset().config;
-            const std::vector<std::string> &extruder_colours = (config->option<ConfigOptionStrings>("extruder_colour"))->values;
+            std::vector<std::string> extruder_colours = (config->option<ConfigOptionStrings>("extruder_colour"))->values;
+            const std::vector<std::string>& filament_colours = (wxGetApp().plater()->get_plater_config()->option<ConfigOptionStrings>("filament_colour"))->values;
+            for (size_t i=0; i<extruder_colours.size(); ++i)
+                if (extruder_colours[i] == "")
+                    extruder_colours[i] = filament_colours[i];
 
             WipingDialog dlg(parent, cast<float>(init_matrix), cast<float>(init_extruders), extruder_colours);
 
@@ -4838,6 +4842,11 @@ void Plater::on_activate()
 	this->p->show_delayed_error_message();
 }
 
+const DynamicPrintConfig* Plater::get_plater_config() const
+{
+    return p->config;
+}
+
 wxString Plater::get_project_filename(const wxString& extension) const
 {
     return p->get_project_filename(extension);
diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp
index 6b488fef1..0dc298566 100644
--- a/src/slic3r/GUI/Plater.hpp
+++ b/src/slic3r/GUI/Plater.hpp
@@ -213,6 +213,7 @@ public:
     void on_config_change(const DynamicPrintConfig &config);
     // On activating the parent window.
     void on_activate();
+    const DynamicPrintConfig* get_plater_config() const;
 
     void update_object_menu();
 

From 76a657ce5217ffb92cfa1b68e2080575186e3244 Mon Sep 17 00:00:00 2001
From: Lukas Matena <lukasmatena@seznam.cz>
Date: Wed, 18 Sep 2019 12:54:21 +0200
Subject: [PATCH 2/2] Plater.cpp - better added a range-check when selecting
 filament color in purging volumes dialog

---
 src/slic3r/GUI/Plater.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp
index e548ed3ba..0dc7519e8 100644
--- a/src/slic3r/GUI/Plater.cpp
+++ b/src/slic3r/GUI/Plater.cpp
@@ -525,7 +525,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent) :
             std::vector<std::string> extruder_colours = (config->option<ConfigOptionStrings>("extruder_colour"))->values;
             const std::vector<std::string>& filament_colours = (wxGetApp().plater()->get_plater_config()->option<ConfigOptionStrings>("filament_colour"))->values;
             for (size_t i=0; i<extruder_colours.size(); ++i)
-                if (extruder_colours[i] == "")
+                if (extruder_colours[i] == "" && i < filament_colours.size())
                     extruder_colours[i] = filament_colours[i];
 
             WipingDialog dlg(parent, cast<float>(init_matrix), cast<float>(init_extruders), extruder_colours);