diff --git a/src/modules/Projects/ProjectsEditor/MainPage.xaml.cs b/src/modules/Projects/ProjectsEditor/MainPage.xaml.cs index fdc3bf894a..eab91b83a8 100644 --- a/src/modules/Projects/ProjectsEditor/MainPage.xaml.cs +++ b/src/modules/Projects/ProjectsEditor/MainPage.xaml.cs @@ -25,7 +25,7 @@ namespace ProjectsEditor private /*async*/ void NewProjectButton_Click(object sender, RoutedEventArgs e) { - _mainViewModel.AddNewProject(); + _mainViewModel.EnterSnapshotMode(); } private void EditButtonClicked(object sender, RoutedEventArgs e) diff --git a/src/modules/Projects/ProjectsEditor/OverlayWindow.xaml b/src/modules/Projects/ProjectsEditor/OverlayWindow.xaml new file mode 100644 index 0000000000..225b58a59e --- /dev/null +++ b/src/modules/Projects/ProjectsEditor/OverlayWindow.xaml @@ -0,0 +1,15 @@ + + + diff --git a/src/modules/Projects/ProjectsEditor/OverlayWindow.xaml.cs b/src/modules/Projects/ProjectsEditor/OverlayWindow.xaml.cs new file mode 100644 index 0000000000..8ebd96e585 --- /dev/null +++ b/src/modules/Projects/ProjectsEditor/OverlayWindow.xaml.cs @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace ProjectsEditor +{ + /// + /// Interaction logic for OverlayWindow.xaml + /// + public partial class OverlayWindow : Window + { + public OverlayWindow() + { + InitializeComponent(); + } + } +} diff --git a/src/modules/Projects/ProjectsEditor/Properties/Resources.Designer.cs b/src/modules/Projects/ProjectsEditor/Properties/Resources.Designer.cs index 250071953a..3346fa1123 100644 --- a/src/modules/Projects/ProjectsEditor/Properties/Resources.Designer.cs +++ b/src/modules/Projects/ProjectsEditor/Properties/Resources.Designer.cs @@ -483,6 +483,24 @@ namespace ProjectsEditor.Properties { } } + /// + /// Looks up a localized string similar to Move the windows you want to include to the project into the desired position. There will be later a possibility to deselect the windows you don't want to include to the project.. + /// + public static string SnapshotDescription { + get { + return ResourceManager.GetString("SnapshotDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Snapshot Creator. + /// + public static string SnapshotWindowTitle { + get { + return ResourceManager.GetString("SnapshotWindowTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to Sort by. /// @@ -492,6 +510,15 @@ namespace ProjectsEditor.Properties { } } + /// + /// Looks up a localized string similar to Take Snapshot. + /// + public static string Take_Snapshot { + get { + return ResourceManager.GetString("Take_Snapshot", resourceCulture); + } + } + /// /// Looks up a localized string similar to Write arguments here. /// diff --git a/src/modules/Projects/ProjectsEditor/Properties/Resources.resx b/src/modules/Projects/ProjectsEditor/Properties/Resources.resx index 64f0e567e0..add139fea5 100644 --- a/src/modules/Projects/ProjectsEditor/Properties/Resources.resx +++ b/src/modules/Projects/ProjectsEditor/Properties/Resources.resx @@ -258,9 +258,18 @@ Select All Apps in Project + + Move the windows you want to include to the project into the desired position. There will be later a possibility to deselect the windows you don't want to include to the project. + + + Snapshot Creator + Sort by + + Take Snapshot + Write arguments here diff --git a/src/modules/Projects/ProjectsEditor/SnapshotWindow.xaml b/src/modules/Projects/ProjectsEditor/SnapshotWindow.xaml new file mode 100644 index 0000000000..f436698119 --- /dev/null +++ b/src/modules/Projects/ProjectsEditor/SnapshotWindow.xaml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + diff --git a/src/modules/Projects/ProjectsEditor/SnapshotWindow.xaml.cs b/src/modules/Projects/ProjectsEditor/SnapshotWindow.xaml.cs new file mode 100644 index 0000000000..55485add8d --- /dev/null +++ b/src/modules/Projects/ProjectsEditor/SnapshotWindow.xaml.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; +using ProjectsEditor.ViewModels; + +namespace ProjectsEditor +{ + /// + /// Interaction logic for SnapshotWindow.xaml + /// + public partial class SnapshotWindow : Window + { + private MainViewModel _mainViewModel; + + public SnapshotWindow(MainViewModel mainViewModel) + { + _mainViewModel = mainViewModel; + InitializeComponent(); + } + + private void CancelButtonClicked(object sender, RoutedEventArgs e) + { + Close(); + _mainViewModel.CancelSnapshot(); + } + + private void SnapshotButtonClicked(object sender, RoutedEventArgs e) + { + _mainViewModel.AddNewProject(); + } + + private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) + { + _mainViewModel.CancelSnapshot(); + } + } +} diff --git a/src/modules/Projects/ProjectsEditor/ViewModels/MainViewModel.cs b/src/modules/Projects/ProjectsEditor/ViewModels/MainViewModel.cs index 3765821afb..90ad646e33 100644 --- a/src/modules/Projects/ProjectsEditor/ViewModels/MainViewModel.cs +++ b/src/modules/Projects/ProjectsEditor/ViewModels/MainViewModel.cs @@ -22,6 +22,8 @@ namespace ProjectsEditor.ViewModels public class MainViewModel : INotifyPropertyChanged, IDisposable { private ProjectsEditorIO _projectsEditorIO; + private SnapshotWindow _snapshotWindow; + private List _overlayWindows = new List(); public ObservableCollection Projects { get; set; } = new ObservableCollection(); @@ -217,6 +219,7 @@ namespace ProjectsEditor.ViewModels public async void AddNewProject() { + CancelSnapshot(); await Task.Run(() => RunSnapshotTool()); if (_projectsEditorIO.ParseProjects(this).Result == true && Projects.Count != 0) { @@ -388,5 +391,39 @@ namespace ProjectsEditor.ViewModels project.OnPropertyChanged(new PropertyChangedEventArgs(nameof(Project.IsAnySelected))); } + + internal void EnterSnapshotMode() + { + _mainWindow.WindowState = System.Windows.WindowState.Minimized; + _overlayWindows.Clear(); + var screens = System.Windows.Forms.Screen.AllScreens; + foreach (var screen in screens) + { + OverlayWindow overlayWindow = new OverlayWindow(); + overlayWindow.Top = screen.Bounds.Top; + overlayWindow.Left = screen.Bounds.Left; + overlayWindow.Width = screen.Bounds.Width; + overlayWindow.Height = screen.Bounds.Height; + overlayWindow.ShowActivated = true; + overlayWindow.Topmost = true; + overlayWindow.Show(); + _overlayWindows.Add(overlayWindow); + } + + _snapshotWindow = new SnapshotWindow(this); + _snapshotWindow.ShowActivated = true; + _snapshotWindow.Topmost = true; + _snapshotWindow.Show(); + } + + internal void CancelSnapshot() + { + foreach (OverlayWindow overlayWindow in _overlayWindows) + { + overlayWindow.Close(); + } + + _mainWindow.WindowState = System.Windows.WindowState.Normal; + } } }