aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-02-20 15:53:44 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-02-20 15:53:44 +0200
commitdb89412e079e151a3217ed2a108820ebe6ba2f30 (patch)
tree6a301ca19bae8982c7a786cfd6db5fa753ddaa1b /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI
parent2fe707abce023813d234b57b097a731174fd4a26 (diff)
downloadTango-db89412e079e151a3217ed2a108820ebe6ba2f30.tar.gz
Tango-db89412e079e151a3217ed2a108820ebe6ba2f30.zip
Improved module popout..
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs44
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs43
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml4
3 files changed, 65 insertions, 26 deletions
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>