aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-10-25 11:10:35 +0300
committerShlomo Hecht <shlomo@twine-s.com>2018-10-25 11:10:35 +0300
commit2eb5e880d44c358ef6a97232e90e77ea0ec582ae (patch)
tree156599c15b3013d83a29e8e36fc6f94b7d9fb9c7 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer
parentb2ff9df011e1e710381683f8c50d66e9f34616a2 (diff)
parentf24af73628e5e7ddfa3590fe278c1623f6ede2df (diff)
downloadTango-2eb5e880d44c358ef6a97232e90e77ea0ec582ae.tar.gz
Tango-2eb5e880d44c358ef6a97232e90e77ea0ec582ae.zip
merge
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/ViewModels/MainViewVM.cs63
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml11
2 files changed, 55 insertions, 19 deletions
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>