diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-02-20 15:53:44 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-02-20 15:53:44 +0200 |
| commit | db89412e079e151a3217ed2a108820ebe6ba2f30 (patch) | |
| tree | 6a301ca19bae8982c7a786cfd6db5fa753ddaa1b /Software/Visual_Studio | |
| parent | 2fe707abce023813d234b57b097a731174fd4a26 (diff) | |
| download | Tango-db89412e079e151a3217ed2a108820ebe6ba2f30.tar.gz Tango-db89412e079e151a3217ed2a108820ebe6ba2f30.zip | |
Improved module popout..
Diffstat (limited to 'Software/Visual_Studio')
4 files changed, 72 insertions, 48 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs index 6ccc1caa0..ad763fe54 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs @@ -18,6 +18,7 @@ using Tango.Editors; using Tango.Integration.Observables; using Tango.Integration.Observables.Enumerations; using Tango.Integration.Operators; +using Tango.MachineStudio.Common.Diagnostics; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.StudioApplication; using Tango.MachineStudio.Technician.Editors; @@ -168,19 +169,7 @@ namespace Tango.MachineStudio.Technician.ViewModels /// </summary> /// <param name="applicationManager">The application manager.</param> /// <param name="notificationProvider">The notification provider.</param> - [PreferredConstructor] - public MachineTechViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider) : this(applicationManager, notificationProvider, true) - { - - } - - /// <summary> - /// Initializes a new instance of the <see cref="MachineTechViewVM"/> class. - /// </summary> - /// <param name="applicationManager">The application manager.</param> - /// <param name="notificationProvider">The notification provider.</param> - /// <param name="loadLastProject">if set to <c>true</c> [load last project].</param> - public MachineTechViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider, bool loadLastProject) + public MachineTechViewVM(IStudioApplicationManager applicationManager, INotificationProvider notificationProvider, IDiagnosticsFrameProvider _diagnosticsFrameProvider) { _notification = notificationProvider; _singleControllers = new Dictionary<SingleGraphItem, GraphController>(); @@ -200,10 +189,12 @@ namespace Tango.MachineStudio.Technician.ViewModels _lastTechProjectFile = SettingsManager.Default.MachineStudio.TechnicianModule.LasTechProjectFile; - if (File.Exists(_lastTechProjectFile) && loadLastProject) + if (File.Exists(_lastTechProjectFile)) { OpenProjectFile(_lastTechProjectFile); } + + _diagnosticsFrameProvider.FrameReceived += DiagnosticsFrameProvider_FrameReceived; } #endregion @@ -218,20 +209,14 @@ namespace Tango.MachineStudio.Technician.ViewModels private void ApplicationManager_ConnectedMachineChanged(object sender, Integration.Services.IExternalBridgeClient machine) { MachineOperator = machine; - - if (MachineOperator != null) - { - MachineOperator.DiagnosticsDataAvailable -= MachineOperator_DiagnosticsDataAvailable; - MachineOperator.DiagnosticsDataAvailable += MachineOperator_DiagnosticsDataAvailable; - } } /// <summary> - /// Machines the operator diagnostics data available. + /// Handles the diagnostics frame provider data. /// </summary> /// <param name="sender">The sender.</param> /// <param name="response">The response.</param> - private void MachineOperator_DiagnosticsDataAvailable(object sender, PushDiagnosticsResponse response) + private void DiagnosticsFrameProvider_FrameReceived(object sender, PushDiagnosticsResponse response) { PopulateDiagnosticsData(response); } diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs index 886985c92..ee1724435 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs @@ -17,6 +17,7 @@ using Tango.Logging; using Tango.MachineStudio.Common.Modules; using Tango.MachineStudio.Common; using Tango.Settings; +using System.Windows; namespace Tango.MachineStudio.UI.StudioApplication { @@ -29,6 +30,7 @@ namespace Tango.MachineStudio.UI.StudioApplication { private INavigationManager _navigationManager; private IStudioModuleLoader _moduleLoader; + private List<Window> _openedWindows; /// <summary> /// Initializes a new instance of the <see cref="DefaultStudioApplicationManager" /> class. @@ -38,6 +40,7 @@ namespace Tango.MachineStudio.UI.StudioApplication { _moduleLoader = moduleLoader; _navigationManager = navigationManager; + _openedWindows = new List<Window>(); } /// <summary> @@ -137,35 +140,45 @@ namespace Tango.MachineStudio.UI.StudioApplication } } + foreach (var vm in ServiceLocator.Current.GetAllInstancesByBase<IShutdownListener>()) + { + vm.OnShuttingDown(); + } + try { - if (ConnectedMachine != null) - { - ConnectedMachine.Disconnect().Wait(); - } + SettingsManager.SaveDefaultSettings(); } catch (Exception ex) { - LogManager.Log(ex, "Error disconnecting from machine."); + LogManager.Log(ex, "Error saving settings."); } - foreach (var vm in ServiceLocator.Current.GetAllInstancesByBase<IShutdownListener>()) + _navigationManager.NavigateTo(NavigationView.ShutdownView); + + Thread.Sleep(1500); + + foreach (var window in _openedWindows) { - vm.OnShuttingDown(); + ThreadsHelper.InvokeUI(() => + { + window.Close(); + }); } try { - SettingsManager.SaveDefaultSettings(); + if (ConnectedMachine != null) + { + ConnectedMachine.Disconnect().Wait(); + } } catch (Exception ex) { - LogManager.Log(ex, "Error saving settings."); + LogManager.Log(ex, "Error disconnecting from machine."); } - _navigationManager.NavigateTo(NavigationView.ShutdownView); - - Thread.Sleep(3000); + Thread.Sleep(1500); Environment.Exit(0); @@ -196,5 +209,12 @@ namespace Tango.MachineStudio.UI.StudioApplication throw new InvalidOperationException("The module was not found or you do not have sufficient privileges."); } } + + public void RegisterOpenedWindow(Window window) + { + _openedWindows.Add(window); + + window.Closed += (x, y) => { _openedWindows.Remove(window); }; + } } } diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs index 503532223..da73e8eae 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs @@ -19,6 +19,7 @@ using Tango.MachineStudio.Common.Modules; using Tango.MachineStudio.Common.Navigation; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.Common.StudioApplication; +using Tango.MachineStudio.UI.StudioApplication; using Tango.MachineStudio.UI.SupervisingController; using Tango.MachineStudio.UI.Views; using Tango.MachineStudio.UI.Windows; @@ -316,25 +317,39 @@ namespace Tango.MachineStudio.UI.ViewModels private void OpenModuleInWindow(IStudioModule module) { - module.InNewWindow = true; + if (module == null) return; - var parent = (MainView.Self as MainView).TransitionControl.Controls.SingleOrDefault(x => x.Tag.ToString() == module.Name).Content as Grid; + try + { + StartModule(null); - var view = parent.Children[0] as FrameworkElement; - parent.Children.Remove(view); + module.InNewWindow = true; - ModuleWindowVM vm = new ModuleWindowVM(module, parent); - ModuleWindow window = new ModuleWindow(this, vm, view); + var parent = (MainView.Self as MainView).TransitionControl.Controls.SingleOrDefault(x => x.Tag.ToString() == module.Name).Content as Grid; - window.Closing += (x, y) => - { - window.grid.Children.Remove(view); - parent.Children.Add(view); - module.InNewWindow = false; - }; + var view = parent.Children[0] as FrameworkElement; + parent.Children.Remove(view); + + ModuleWindowVM vm = new ModuleWindowVM(module, parent); + ModuleWindow window = new ModuleWindow(this, vm, view); + + window.Closing += (x, y) => + { + window.grid.Children.Remove(view); + parent.Children.Add(view); + module.InNewWindow = false; + }; - window.Owner = MainWindow.Instance; - window.Show(); + window.Owner = MainWindow.Instance; + window.Show(); + + (_applicationManager as DefaultStudioApplicationManager).RegisterOpenedWindow(window); + } + catch (Exception ex) + { + LogManager.Log(ex, "Error popping out module " + module.Name); + _notificationProvider.ShowError("Error popping out module " + module.Name); + } } } } diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml index 19a5283c2..9a2cc37a4 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml @@ -18,6 +18,7 @@ <UserControl.Resources> <converters:StringEllipsisConverter x:Key="StringEllipsisConverter" /> <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter" /> + <converters:NullObjectToBooleanConverter x:Key="NullObjectToBooleanConverter" /> </UserControl.Resources> <Grid> @@ -70,6 +71,7 @@ <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter> + <Setter Property="Visibility" Value="{Binding InNewWindow,Converter={StaticResource BooleanToVisibilityInverseConverter}}"></Setter> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> @@ -122,6 +124,8 @@ <Button Content="Machine Connection" Command="{Binding ConnectCommand}" /> <Button Content="Disconnect Machine" Command="{Binding DisconnectCommand}" /> <Separator/> + <Button Content="Open Module In New Window" IsEnabled="{Binding IsModuleLoaded}" Command="{Binding OpenModuleInWindowCommand}" CommandParameter="{Binding CurrentModule}" /> + <Separator/> <Button Content="Exit" /> </StackPanel> </materialDesign:PopupBox> |
