diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-10-25 11:10:35 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-10-25 11:10:35 +0300 |
| commit | 2eb5e880d44c358ef6a97232e90e77ea0ec582ae (patch) | |
| tree | 156599c15b3013d83a29e8e36fc6f94b7d9fb9c7 /Software/Visual_Studio/MachineStudio/Modules | |
| parent | b2ff9df011e1e710381683f8c50d66e9f34616a2 (diff) | |
| parent | f24af73628e5e7ddfa3590fe278c1623f6ede2df (diff) | |
| download | Tango-2eb5e880d44c358ef6a97232e90e77ea0ec582ae.tar.gz Tango-2eb5e880d44c358ef6a97232e90e77ea0ec582ae.zip | |
merge
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules')
5 files changed, 177 insertions, 61 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ColorLabModuleSettings.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ColorLabModuleSettings.cs new file mode 100644 index 000000000..e2413f22b --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ColorLabModuleSettings.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.Settings; + +namespace Tango.MachineStudio.ColorLab +{ + public class ColorLabModuleSettings : SettingsBase + { + public String LastMachineSerialNumber { get; set; } + public String LastRmlGuid { get; set; } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Tango.MachineStudio.ColorLab.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Tango.MachineStudio.ColorLab.csproj index 64caa2a1d..080d35f5e 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Tango.MachineStudio.ColorLab.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Tango.MachineStudio.ColorLab.csproj @@ -72,6 +72,7 @@ <Compile Include="..\..\..\Versioning\GlobalVersionInfo.cs"> <Link>GlobalVersionInfo.cs</Link> </Compile> + <Compile Include="ColorLabModuleSettings.cs" /> <Compile Include="ViewModelLocator.cs" /> <Compile Include="ViewModels\CalibrationDataPointVM.cs" /> <Compile Include="ViewModels\CalibrationDataViewVM.cs" /> @@ -195,7 +196,7 @@ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> + <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs index d264dd209..f3e153134 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs @@ -20,6 +20,7 @@ using Tango.MachineStudio.Common.Controls; using Tango.MachineStudio.Common.Notifications; using Tango.PMR; using Tango.PMR.ColorLab; +using Tango.Settings; using Tango.SharedUI; using Tango.SharedUI.Controls; @@ -283,9 +284,9 @@ namespace Tango.MachineStudio.ColorLab.ViewModels #region Application Ready - public override void OnApplicationReady() + public async override void OnApplicationReady() { - Task.Factory.StartNew(() => + await Task.Factory.StartNew(() => { _dbContext = ObservablesContext.CreateDefault(); @@ -293,6 +294,25 @@ namespace Tango.MachineStudio.ColorLab.ViewModels ColorSpaces = _dbContext.ColorSpaces.ToObservableCollection(); Rmls = _dbContext.Rmls.ToObservableCollection(); }); + + var settings = SettingsManager.Default.GetOrCreate<ColorLabModuleSettings>(); + + try + { + if (settings.LastMachineSerialNumber != null) + { + SelectedMachine = Machines.SingleOrDefault(x => x.SerialNumber == settings.LastMachineSerialNumber); + + if (settings.LastRmlGuid != null) + { + SelectedRML = Rmls.SingleOrDefault(x => x.Guid == settings.LastRmlGuid); + } + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error loading last selected machine or RML."); + } } #endregion @@ -303,48 +323,59 @@ namespace Tango.MachineStudio.ColorLab.ViewModels { Task.Factory.StartNew(() => { - if (LiquidsCalibrationData == null || CCT.ForwardData == null) return; + try + { + if (LiquidsCalibrationData == null || CCT.ForwardData == null) return; - ConversionInput input = new ConversionInput(); - input.ColorSpace = SourceColor.IsLab ? PMR.ColorLab.ColorSpace.Lab : PMR.ColorLab.ColorSpace.Rgb; - input.DeltaChroma = DeltaChroma; - input.DeltaL = DeltaL; - input.ForwardData = ByteString.CopyFrom(CCT.ForwardData); + ConversionInput input = new ConversionInput(); + input.ColorSpace = SourceColor.IsLab ? PMR.ColorLab.ColorSpace.Lab : PMR.ColorLab.ColorSpace.Rgb; + input.DeltaChroma = DeltaChroma; + input.DeltaL = DeltaL; + input.ForwardData = ByteString.CopyFrom(CCT.ForwardData); - input.InputCoordinates = new InputCoordinates(); - input.InputCoordinates.Red = (int)SourceColor.Red; - input.InputCoordinates.Green = (int)SourceColor.Green; - input.InputCoordinates.Blue = (int)SourceColor.Blue; - input.InputCoordinates.L = SourceColor.L; - input.InputCoordinates.A = SourceColor.A; - input.InputCoordinates.B = SourceColor.B; - input.ThreadL = 92.1815; //SelectedRML.MediaColor.L; - input.ThreadA = 2.2555; //SelectedRML.MediaColor.A; - input.ThreadB = -10.9325; //SelectedRML.MediaColor.B; + input.InputCoordinates = new InputCoordinates(); + input.InputCoordinates.Red = (int)SourceColor.Red; + input.InputCoordinates.Green = (int)SourceColor.Green; + input.InputCoordinates.Blue = (int)SourceColor.Blue; + input.InputCoordinates.L = SourceColor.L; + input.InputCoordinates.A = SourceColor.A; + input.InputCoordinates.B = SourceColor.B; + input.ThreadL = 92.1815; //SelectedRML.MediaColor.L; + input.ThreadA = 2.2555; //SelectedRML.MediaColor.A; + input.ThreadB = -10.9325; //SelectedRML.MediaColor.B; - foreach (var vm in LiquidsCalibrationData) - { - InputLiquid inputLiquid = new InputLiquid(); + foreach (var vm in LiquidsCalibrationData) + { + InputLiquid inputLiquid = new InputLiquid(); - //TODO: Use the real calibration data... - //CalibrationData calData = new CalibrationData(); - //calData.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code; - //calData.CalibrationPoints.AddRange(vm.CalibrationPoints.Select(x => new CalibrationPoint() { X = x.X, Y = x.Y })); + CalibrationData calData = new CalibrationData(); + calData.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code; + calData.CalibrationPoints.AddRange(vm.CalibrationPoints.Select(x => new CalibrationPoint() { X = x.X, Y = x.Y })); - inputLiquid.CalibrationData = Cat.CreateDemoCalibrationData((PMR.ColorLab.LiquidType)vm.LiquidType.Code); + inputLiquid.CalibrationData = calData; - inputLiquid.LiquidType = (PMR.ColorLab.LiquidType)vm.LiquidType.Code; - inputLiquid.MaxNanoliterPerCentimeter = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == vm.LiquidType.Code).MaxNlPerCm; + inputLiquid.LiquidType = (PMR.ColorLab.LiquidType)vm.LiquidType.Code; + inputLiquid.MaxNanoliterPerCentimeter = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == vm.LiquidType.Code).MaxNlPerCm; - input.InputCoordinates.InputLiquids.Add(inputLiquid); - } + input.InputCoordinates.InputLiquids.Add(inputLiquid); + } - var output = TangoColorConverter.GetSuggestions(input); + var output = TangoColorConverter.GetSuggestions(input); - IsOutOfGamut = output.OutOfGamut; + IsOutOfGamut = output.OutOfGamut; - HiveSuggestions = TangoColorConverter.CreateHiveSuggestions(output); + HiveSuggestions = TangoColorConverter.CreateHiveSuggestions(output); + } + catch (Exception ex) + { + LogManager.Log(ex, "Error in color conversion."); + + InvokeUI(() => + { + _notification.ShowError($"An error occurred while trying to convert from source color to Volume.\n" + ex.Message); + }); + } }); } @@ -497,7 +528,7 @@ namespace Tango.MachineStudio.ColorLab.ViewModels if (LiquidsCalibrationData == null || _prevent_inverse_conversion) return; //TODO: This is temporary because of out of range volumes. - if (LiquidVolumes.Where(x => x.IdsPack.IdsPackFormula.Code == IdsPackFormulas.StandardColor.ToInt32()).Sum(x => x.Volume) > 200) + if (LiquidVolumes.Where(x => x.IdsPack.IdsPackFormula.Code == IdsPackFormulas.StandardColor.ToInt32()).Sum(x => x.Volume) > 100) { IsVolumesOutOfRange = true; return; @@ -522,13 +553,11 @@ namespace Tango.MachineStudio.ColorLab.ViewModels { InputLiquid inputLiquid = new InputLiquid(); - //TODO: Use the real calibration data... + CalibrationData calData = new CalibrationData(); + calData.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code; + calData.CalibrationPoints.AddRange(vm.CalibrationPoints.Select(x => new CalibrationPoint() { X = x.X, Y = x.Y })); - //CalibrationData calData = new CalibrationData(); - //calData.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code; - //calData.CalibrationPoints.AddRange(vm.CalibrationPoints.Select(x => new CalibrationPoint() { X = x.X, Y = x.Y })); - - inputLiquid.CalibrationData = Cat.CreateDemoCalibrationData((PMR.ColorLab.LiquidType)vm.LiquidType.Code); + inputLiquid.CalibrationData = calData; inputLiquid.LiquidType = (PMR.ColorLab.LiquidType)vm.LiquidType.Code; inputLiquid.MaxNanoliterPerCentimeter = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == vm.LiquidType.Code).MaxNlPerCm; @@ -549,7 +578,7 @@ namespace Tango.MachineStudio.ColorLab.ViewModels catch (Exception ex) { LogManager.Log(ex, "Error in inversed color conversion!"); - _notification.ShowError("Error in inversed color conversion!"); + _notification.ShowError("An error occurred while trying to convert from Volume to RGB.\n" + ex.Message); } } @@ -563,6 +592,8 @@ namespace Tango.MachineStudio.ColorLab.ViewModels { IsFree = false; + List<IdsPack> default_calibration_to_notify = new List<IdsPack>(); + await Task.Factory.StartNew(() => { using (_notification.PushTaskItem("Loading RML data...")) @@ -590,6 +621,17 @@ namespace Tango.MachineStudio.ColorLab.ViewModels var calData = cat.GetCalibrationData(); vm.CalibrationPoints = calData.CalibrationPoints.Select(x => new CalibrationDataPointVM(x)).ToObservableCollection(); } + else + { + var liquidTypeRml = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType == idsPack.LiquidType && x.Rml == SelectedRML); + + if (liquidTypeRml != null) + { + default_calibration_to_notify.Add(idsPack); + var calData = liquidTypeRml.GetCalibrationData(); + vm.CalibrationPoints = calData.CalibrationPoints.Select(x => new CalibrationDataPointVM(x)).ToObservableCollection(); + } + } InvokeUINow(() => { @@ -606,9 +648,31 @@ namespace Tango.MachineStudio.ColorLab.ViewModels CCT.Rml = SelectedRML; _isNewCCT = true; } + + var settings = SettingsManager.Default.GetOrCreate<ColorLabModuleSettings>(); + settings.LastMachineSerialNumber = SelectedMachine.SerialNumber; + settings.LastRmlGuid = SelectedRML.Guid; + settings.Save(); } }); + + //TODO: not sure is this is really needed.. + + //if (default_calibration_to_notify.Count > 0) + //{ + // String message = "The following calibration tables were loaded from the selected RML default calibration." + Environment.NewLine; + + // foreach (var pack in default_calibration_to_notify) + // { + // message += SelectedRML.Name + " >> " + pack.LiquidType.Name + "." + Environment.NewLine; + // } + + // _notification.ShowWarning(message); + //} + + + IsFree = true; } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs index 07686165b..f55ece6a1 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs @@ -45,6 +45,7 @@ using Tango.AutoComplete.Editors; using System.Data.Entity; using System.Runtime.ExceptionServices; using Tango.BL.Builders; +using Tango.MachineStudio.Common.Navigation; namespace Tango.MachineStudio.Developer.ViewModels { @@ -63,6 +64,7 @@ namespace Tango.MachineStudio.Developer.ViewModels private TimeSpan _runningJobEstimatedDuration; private JobHandler _jobHandler; private DeveloperNavigationManager _navigation; + private INavigationManager _msNavigation; private bool _blockInvalidateCommands; private IAuthenticationProvider _authentication; private ObservablesContext _machineDbContext; @@ -685,7 +687,7 @@ namespace Tango.MachineStudio.Developer.ViewModels /// </summary> /// <param name="applicationManager">The application manager.</param> /// <param name="notificationProvider">The notification provider.</param> - public MainViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider, IDiagnosticsFrameProvider diagnosticsFrameProvider, IVideoCaptureProvider videoCaptureProvider, DeveloperNavigationManager navigation, IAuthenticationProvider authentication, IEventLogger eventLogger, ISpeechProvider speech) + public MainViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider, IDiagnosticsFrameProvider diagnosticsFrameProvider, IVideoCaptureProvider videoCaptureProvider, DeveloperNavigationManager navigation, INavigationManager navigationManager, IAuthenticationProvider authentication, IEventLogger eventLogger, ISpeechProvider speech) { CanWork = true; EnableColorConversion = true; @@ -695,6 +697,7 @@ namespace Tango.MachineStudio.Developer.ViewModels _notification = notificationProvider; _speech = speech; _navigation = navigation; + _msNavigation = navigationManager; ApplicationManager = applicationManager; VideoCaptureProvider = videoCaptureProvider; _eventLogger = eventLogger; @@ -720,11 +723,11 @@ namespace Tango.MachineStudio.Developer.ViewModels RemoveBrushStopCommand = new RelayCommand(RemoveSelectedBrushStops, () => SelectedBrushStop != null && CanWork); SaveJobCommand = new RelayCommand(SaveActiveJob, () => SelectedMachine != null && CanWork); DiscardJobCommand = new RelayCommand(BackToJobs, () => SelectedMachine != null && CanWork); - StartJobCommand = new RelayCommand(StartJob, () => ActiveJob != null && CanWork && !IsJobRunning && MachineOperator != null && !MachineOperator.MachineEventsStateProvider.Events.ToList().Exists(x => x.ActionTypes.Contains(BL.Enumerations.ActionTypes.PreventJobExecution))); + StartJobCommand = new RelayCommand(() => StartJob(), () => ActiveJob != null && CanWork && !IsJobRunning && MachineOperator != null && !MachineOperator.MachineEventsStateProvider.Events.ToList().Exists(x => x.ActionTypes.Contains(BL.Enumerations.ActionTypes.PreventJobExecution))); StartJobAndRecordCommand = new RelayCommand(StartJobAndRecord, () => _dataCaptureVM != null && !_dataCaptureVM.Recorder.IsRecording && !_dataCaptureVM.Player.IsPlaying && ActiveJob != null && !IsJobRunning && MachineOperator != null && !MachineOperator.MachineEventsStateProvider.Events.ToList().Exists(x => x.ActionTypes.Contains(BL.Enumerations.ActionTypes.PreventJobExecution))); StopJobCommand = new RelayCommand(StopJob, () => IsJobRunning && CanWork); CloseJobCompletionStatusCommand = new RelayCommand(CloseJobCompletionStatusBar); - LoadJobCommand = new RelayCommand(LoadSelectedJob, () => SelectedMachineJob != null && CanWork); + LoadJobCommand = new RelayCommand(() => LoadSelectedJob(), () => SelectedMachineJob != null && CanWork); DuplicateJobCommand = new RelayCommand(DuplicateSelectedJobs, () => SelectedMachineJob != null && CanWork); DuplicateSegmentCommand = new RelayCommand(DuplicateSelectedSegments, () => SelectedSegment != null && CanWork); DuplicateBrushStopCommand = new RelayCommand(DuplicateSelectedBrushStops, () => SelectedBrushStop != null && CanWork); @@ -912,6 +915,33 @@ namespace Tango.MachineStudio.Developer.ViewModels MachineOperator.MachineEventsStateProvider.NewEvents -= MachineEventsStateProvider_NewEvents; MachineOperator.MachineEventsStateProvider.NewEvents += MachineEventsStateProvider_NewEvents; + + MachineOperator.ResumingJob -= MachineOperator_ResumingJob; + MachineOperator.ResumingJob += MachineOperator_ResumingJob; + } + } + + private void MachineOperator_ResumingJob(object sender, ResumingJobEventArgs e) + { + if (_notification.ShowQuestion("Machine studio has detected a job in progress. Would you like to try and continue from there you were?")) + { + var job = _machineDbContext.Jobs.SingleOrDefault(x => x.Guid == e.JobGuid); + + if (job != null) + { + _msNavigation.NavigateToModule<DeveloperModule>(); + SelectedMachine = _machineDbContext.Machines.SingleOrDefault(x => x.Guid == job.MachineGuid); + SelectedMachineJob = SelectedMachine.Jobs.SingleOrDefault(x => x.Guid == job.Guid); + LoadSelectedJob(() => + { + StartJob(e.Approve); + }); + } + else + { + LogManager.Log($"Could not resume job. The running job with guid '{e.JobGuid}' was not found."); + _notification.ShowError("Could not resume job. The running job was not found."); + } } } @@ -1010,7 +1040,11 @@ namespace Tango.MachineStudio.Developer.ViewModels SelectedProcessParametersTable.DyeingSpeedMinInkUptakeChanged -= SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged; SelectedProcessParametersTable.DyeingSpeedMinInkUptakeChanged += SelectedProcessParametersTable_DyeingSpeedMinInkUptakeChanged; - SetSegmentBrushStopsLiquidVolumes(SelectedSegment); + foreach (var segment in ActiveJob.Segments) + { + SetSegmentBrushStopsLiquidVolumes(segment); + } + UpdateEstimatedDuration(); } } @@ -1205,7 +1239,7 @@ namespace Tango.MachineStudio.Developer.ViewModels /// <summary> /// Starts the job. /// </summary> - private void StartJob() + private void StartJob(Func<Job, JobHandler> resumeFunc = null) { LogManager.Log(String.Format("Starting job {0}...", ActiveJob.Name)); if (MachineOperator == null || MachineOperator.State != TransportComponentState.Connected) @@ -1242,7 +1276,14 @@ namespace Tango.MachineStudio.Developer.ViewModels { LogManager.Log("Sending job to machine operator..."); - _jobHandler = MachineOperator.Print(ActiveJob, SelectedProcessParametersTable); + if (resumeFunc == null) + { + _jobHandler = MachineOperator.Print(ActiveJob, SelectedProcessParametersTable); + } + else + { + _jobHandler = resumeFunc(ActiveJob); + } _eventLogger.Log(String.Format("Job '{0}' started...", ActiveJob.Name)); @@ -1377,9 +1418,9 @@ namespace Tango.MachineStudio.Developer.ViewModels await SelectedRML.SaveAsync(_activeJobDbContext); LiquidTypesRmls = ActiveJob.Machine.Configuration.NoneEmptyIdsPacks.Where(x => !x.IsEmpty).OrderBy(x => x.PackIndex).Select(x => x.LiquidType).SelectMany(x => x.LiquidTypesRmls).Where(x => x.Rml.Guid == SelectedRML.Guid).ToList(); - if (SelectedSegment != null) + foreach (var segment in ActiveJob.Segments) { - SetSegmentBrushStopsLiquidVolumes(SelectedSegment); + SetSegmentBrushStopsLiquidVolumes(segment); } } @@ -1406,7 +1447,7 @@ namespace Tango.MachineStudio.Developer.ViewModels _selectedRML = new RmlBuilder(_activeJobDbContext).Set(SelectedRML).WithAllParametersGroup().WithCAT(SelectedMachine.Guid).WithCCT().WithLiquidFactors().WithMediaProperties().Build(); - if (_selectedRML.Cats.Count == 0) + if (_selectedRML.Ccts.Count == 0) { InvokeUI(() => { @@ -1573,7 +1614,7 @@ namespace Tango.MachineStudio.Developer.ViewModels /// <summary> /// Loads the selected job. /// </summary> - private async void LoadSelectedJob() + private async void LoadSelectedJob(Action onCompleted = null) { if (SelectedMachineJob != null) { @@ -1662,6 +1703,8 @@ namespace Tango.MachineStudio.Developer.ViewModels } CanWork = true; + + onCompleted?.Invoke(); } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml index 1c0bc515b..884f60875 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml @@ -353,15 +353,8 @@ </Polygon> <Border Height="100" Padding="5" IsHitTestVisible="False"> <Grid> - <Rectangle VerticalAlignment="Bottom" Height="8"> - <Rectangle.Fill> - <MultiBinding Converter="{StaticResource SegmentToBrushConverterMulti}"> - <Binding Path="."></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.ActiveJob"></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.ActiveJob.Length"></Binding> - <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.SelectedBrushStop.Color"></Binding> - </MultiBinding> - </Rectangle.Fill> + <Rectangle VerticalAlignment="Bottom" Height="8" Fill="{Binding SegmentBrush}"> + </Rectangle> </Grid> </Border> |
