From a898decf18c4c0ed56d020dc09df55df1ca0263a Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Mon, 9 Apr 2018 18:30:58 +0300 Subject: Lots of changes :/ --- .../ViewModels/MainViewVM.cs | 66 +++++++++-------- .../Views/RunningJobView.xaml | 83 ++++++++++++++++++++-- 2 files changed, 112 insertions(+), 37 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules') 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 7891f96b7..cdfeee54d 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 @@ -34,6 +34,7 @@ using Tango.Core.Helpers; using System.Speech.Synthesis; using System.Media; using Tango.MachineStudio.Common.EventLogging; +using Tango.MachineStudio.Common.Speech; namespace Tango.MachineStudio.Developer.ViewModels { @@ -55,10 +56,8 @@ namespace Tango.MachineStudio.Developer.ViewModels private IAuthenticationProvider _authentication; private ObservablesContext _machineDbContext; private ObservablesContext _activeJobDbContext; - private SpeechSynthesizer _speech; - private SoundPlayer _soundPlayer; - private SoundPlayer _soundPlayerErr; private IEventLogger _eventLogger; + private ISpeechProvider _speech; #region Properties @@ -112,7 +111,6 @@ namespace Tango.MachineStudio.Developer.ViewModels set { _spoolTypes = value; RaisePropertyChangedAuto(); } } - /// /// Gets or sets the application manager. /// @@ -473,6 +471,16 @@ namespace Tango.MachineStudio.Developer.ViewModels set { _jobFilter = value; RaisePropertyChangedAuto(); OnJobFilterChanged(); } } + private ObservableCollection _jobEvents; + /// + /// Gets or sets the running job events. + /// + public ObservableCollection JobEvents + { + get { return _jobEvents; } + set { _jobEvents = value; RaisePropertyChangedAuto(); } + } + #endregion #region Commands @@ -600,10 +608,12 @@ namespace Tango.MachineStudio.Developer.ViewModels /// /// The application manager. /// The notification provider. - public MainViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider, IDiagnosticsFrameProvider diagnosticsFrameProvider, IVideoCaptureProvider videoCaptureProvider, DeveloperNavigationManager navigation, IAuthenticationProvider authentication, IEventLogger eventLogger) + public MainViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider, IDiagnosticsFrameProvider diagnosticsFrameProvider, IVideoCaptureProvider videoCaptureProvider, DeveloperNavigationManager navigation, IAuthenticationProvider authentication, IEventLogger eventLogger, ISpeechProvider speech) { SelectedJobs = new ObservableCollection(); + JobEvents = new ObservableCollection(); + LogManager.Log("Initializing machine Db context..."); _machineDbContext = ObservablesContext.CreateDefault(); @@ -624,6 +634,7 @@ namespace Tango.MachineStudio.Developer.ViewModels _authentication = authentication; _notification = notificationProvider; + _speech = speech; _navigation = navigation; ApplicationManager = applicationManager; VideoCaptureProvider = videoCaptureProvider; @@ -631,11 +642,6 @@ namespace Tango.MachineStudio.Developer.ViewModels LogManager.Log("Initializing relay commands..."); - _speech = new SpeechSynthesizer(); - _soundPlayer = new SoundPlayer(EmbeddedResourceHelper.GetEmbeddedResourceStream("Tango.MachineStudio.Developer.bip.wav")); - _soundPlayerErr = new SoundPlayer(EmbeddedResourceHelper.GetEmbeddedResourceStream("Tango.MachineStudio.Developer.error.wav")); - _speech.SelectVoice(_speech.GetInstalledVoices().LastOrDefault(x => x.VoiceInfo.Gender == VoiceGender.Female).VoiceInfo.Name); - //Initialize Commands... EditMachineCommand = new RelayCommand(EditMachine, () => SelectedMachine != null); EditRMLCommand = new RelayCommand(EditRML, () => SelectedRML != null); @@ -662,12 +668,25 @@ namespace Tango.MachineStudio.Developer.ViewModels DisplayJobEmbroideryFileCommand = new RelayCommand(DisplayJobEmbroideryFile); ApplicationManager.ConnectedMachineChanged += ApplicationManager_ConnectedMachineChanged; + + _eventLogger.NewLog += _eventLogger_NewLog; } #endregion #region Event Handlers + private void _eventLogger_NewLog(object sender, MachinesEvent e) + { + if (IsJobRunning) + { + InvokeUI(() => + { + JobEvents.Add(e); + }); + } + } + /// /// Handles the application manager connected machine changes event. /// @@ -744,7 +763,7 @@ namespace Tango.MachineStudio.Developer.ViewModels { if (IsJobRunning) { - SpeakError(events.Last().EventType.Name); + _speech.SpeakError(events.Last().EventType.Name); if (events.ToList().Exists(x => x.ActionTypes.Contains(BL.Enumerations.ActionTypes.AbortRunningJob))) { @@ -758,22 +777,6 @@ namespace Tango.MachineStudio.Developer.ViewModels #endregion - #region Sound - - private void SpeakInfo(String text) - { - _soundPlayer.Play(); - _speech.SpeakAsync(text); - } - - private void SpeakError(String text) - { - _soundPlayerErr.Play(); - _speech.SpeakAsync(text); - } - - #endregion - #region Properties Changes /// @@ -961,7 +964,7 @@ namespace Tango.MachineStudio.Developer.ViewModels IsJobRunning = false; IsJobFailed = true; - SpeakError("Job Failed!"); + _speech.SpeakError("Job Failed!"); } } @@ -973,7 +976,7 @@ namespace Tango.MachineStudio.Developer.ViewModels LogManager.Log("Setting job completed state..."); IsJobRunning = false; IsJobCompleted = true; - SpeakInfo("Job Completed!"); + _speech.SpeakInfo("Job Completed!"); } /// @@ -994,6 +997,7 @@ namespace Tango.MachineStudio.Developer.ViewModels return; } + JobEvents.Clear(); RunningJobRemainingTime = TimeSpan.Zero; RunningJobProgress = 0; IsJobFailed = false; @@ -1048,12 +1052,12 @@ namespace Tango.MachineStudio.Developer.ViewModels if (segment.ID != -1) { - SpeakInfo(String.Format("Segment {0} Started.", segment.SegmentIndex)); + _speech.SpeakInfo(String.Format("Segment {0} Started.", segment.SegmentIndex)); _eventLogger.Log(String.Format("Segment {0} Started.", segment.SegmentIndex)); } else { - SpeakInfo(String.Format("Inter Segment Started.")); + _speech.SpeakInfo(String.Format("Inter Segment Started.")); _eventLogger.Log("Inter Segment Started."); } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml index 30941f3dd..94570196f 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/RunningJobView.xaml @@ -3,12 +3,18 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:vm="clr-namespace:Tango.MachineStudio.Developer.ViewModels" xmlns:global="clr-namespace:Tango.MachineStudio.Developer" xmlns:local="clr-namespace:Tango.MachineStudio.Developer.Views" mc:Ignorable="d" d:DesignHeight="1080" d:DesignWidth="1920" Background="Transparent" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}"> + + + + + @@ -29,13 +35,78 @@ - + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + -- cgit v1.3.1