diff options
Diffstat (limited to 'Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs index 6f7717a90..777b1f24d 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs @@ -519,7 +519,7 @@ namespace Tango.PPC.Jobs.ViewModels ValidateBrushStops(); - CoerceBrushStopsColorSpaceChange(); + RegisterJobBrushStopsColorSpaceChange(); DyeCommand.RaiseCanExecuteChanged(); StartSampleDyeCommand.RaiseCanExecuteChanged(); @@ -657,8 +657,15 @@ namespace Tango.PPC.Jobs.ViewModels /// </summary> private bool CanStartJob() { - return - Job != null && Job.Validate(_db) && !Job.Segments.SelectMany(x => x.BrushStops).Where(x => !x.IsTransparent && !x.IsWhite).ToList().Exists(x => x.IsOutOfGamut || x.IsLiquidVolumesOutOfRange); + try + { + return Job != null && Job.Validate(_db) && !Job.Segments.SelectMany(x => x.BrushStops).Where(x => !x.IsTransparent && !x.IsWhite).ToList().Exists(x => x.IsOutOfGamut || (x.BrushColorSpace == BL.Enumerations.ColorSpaces.Volume && x.IsLiquidVolumesOutOfRange)); + } + catch (Exception ex) + { + Debug.WriteLine(ex); + return false; + } } #endregion @@ -702,7 +709,7 @@ namespace Tango.PPC.Jobs.ViewModels LogManager.Log("Adding new solid segment..."); var s = Job.AddSolidSegment(Settings.DefaultSegmentLength > 0 ? Settings.DefaultSegmentLength : 10); SetSegmentLiquidVolumes(s); - CoerceBrushStopsColorSpaceChange(); + RegisterJobBrushStopsColorSpaceChange(); return s; } catch (Exception ex) @@ -723,7 +730,7 @@ namespace Tango.PPC.Jobs.ViewModels LogManager.Log("Adding new gradient segment..."); var s = Job.AddGradientSegment(Settings.DefaultSegmentLength > 0 ? Settings.DefaultSegmentLength : 10); SetSegmentLiquidVolumes(s); - CoerceBrushStopsColorSpaceChange(); + RegisterJobBrushStopsColorSpaceChange(); return s; } catch (Exception ex) @@ -771,6 +778,7 @@ namespace Tango.PPC.Jobs.ViewModels segment.BrushStops.ToList().ForEach(x => { + x.ColorSpaceChanged -= Stop_ColorSpaceChanged; _db.BrushStops.Remove(x); }); _db.Segments.Remove(segment); @@ -826,7 +834,7 @@ namespace Tango.PPC.Jobs.ViewModels #region Brush Stops Management - private void CoerceBrushStopsColorSpaceChange() + private void RegisterJobBrushStopsColorSpaceChange() { if (Job != null) { @@ -842,6 +850,8 @@ namespace Tango.PPC.Jobs.ViewModels { BrushStop stop = sender as BrushStop; stop.Segment.BrushStops.Where(x => x != stop).ToList().ForEach(x => x.ColorSpace = stop.ColorSpace); + + DyeCommand.RaiseCanExecuteChanged(); } /// <summary> @@ -853,7 +863,7 @@ namespace Tango.PPC.Jobs.ViewModels LogManager.Log($"Adding new brush stop to segment {segment.SegmentIndex}."); segment.AddBrushStop(); SetSegmentLiquidVolumes(segment); - CoerceBrushStopsColorSpaceChange(); + RegisterJobBrushStopsColorSpaceChange(); } /// <summary> @@ -866,6 +876,7 @@ namespace Tango.PPC.Jobs.ViewModels { LogManager.Log($"removing brush stop {brushStop.StopIndex} from segment {brushStop.Segment.SegmentIndex}."); var segment = brushStop.Segment; + brushStop.ColorSpaceChanged -= Stop_ColorSpaceChanged; _db.BrushStops.Remove(brushStop); ArrangeBrushStopsIndices(segment); } @@ -956,10 +967,7 @@ namespace Tango.PPC.Jobs.ViewModels } else if (brushStop.BrushColorSpace == BL.Enumerations.ColorSpaces.Volume) { - if (vm.SelectedSuggestion != suggestions.GetCenterSuggestion()) - { - vm.SelectedSuggestion.ApplyOnBrushStop(brushStop); - } + vm.SelectedSuggestion.ApplyOnBrushStop(brushStop); } brushStop.Corrected = true; @@ -1323,7 +1331,7 @@ namespace Tango.PPC.Jobs.ViewModels if (Job != null && Job.Rml.Cct != null && IsVisible) { - var brushStops = Job.Segments.SelectMany(x => x.BrushStops).Where(x => (x.BrushColorSpace == BL.Enumerations.ColorSpaces.LAB || x.BrushColorSpace == BL.Enumerations.ColorSpaces.RGB) && !x.Corrected && !x.OutOfGamutChecked).ToList(); + var brushStops = Job.Segments.SelectMany(x => x.BrushStops).Where(x => x.ColorSpace != null).Where(x => (x.BrushColorSpace == BL.Enumerations.ColorSpaces.LAB || x.BrushColorSpace == BL.Enumerations.ColorSpaces.RGB) && !x.Corrected && !x.OutOfGamutChecked).ToList(); foreach (var stop in brushStops) { |
