aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs
diff options
context:
space:
mode:
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.cs32
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)
{