From ddb0330fc1043d1b4928f2b993d346ce0c99ad88 Mon Sep 17 00:00:00 2001
From: Alessandro Ranellucci <aar@cpan.org>
Date: Mon, 6 Feb 2012 16:52:11 +0100
Subject: [PATCH] Validate configuration before saving from GUI

---
 lib/Slic3r/GUI/SkeinPanel.pm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/lib/Slic3r/GUI/SkeinPanel.pm b/lib/Slic3r/GUI/SkeinPanel.pm
index 8f2c50a89..21f6b77a8 100644
--- a/lib/Slic3r/GUI/SkeinPanel.pm
+++ b/lib/Slic3r/GUI/SkeinPanel.pm
@@ -227,6 +227,13 @@ sub do_slice {
 sub save_config {
     my $self = shift;
     
+    my $process_dialog;
+    eval {
+        # validate configuration
+        Slic3r::Config->validate;
+    };
+    $self->catch_error(sub { $process_dialog->Destroy if $process_dialog }) and return;
+    
     my $dir = $last_config ? dirname($last_config) : $last_config_dir || $last_skein_dir || "";
     my $filename = $last_config ? basename($last_config) : "config.ini";
     my $dlg = Wx::FileDialog->new($self, 'Save configuration as:', $dir, $filename, 
@@ -263,7 +270,9 @@ sub catch_error {
     if (my $err = $@) {
         $cb->() if $cb;
         Wx::MessageDialog->new($self, $err, 'Error', wxOK | wxICON_ERROR)->ShowModal;
+        return 1;
     }
+    return 0;
 }
 
 sub catch_warning {