mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 03:37:59 +01:00
changed project creation save-cancel handles
https://github.com/JaneaSystems/PowerToys-DevProjects/issues/14
This commit is contained in:
@@ -6,6 +6,7 @@ using System.ComponentModel;
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
using ProjectsEditor.Data;
|
||||||
using ProjectsEditor.Models;
|
using ProjectsEditor.Models;
|
||||||
using ProjectsEditor.ViewModels;
|
using ProjectsEditor.ViewModels;
|
||||||
|
|
||||||
@@ -37,7 +38,15 @@ namespace ProjectsEditor
|
|||||||
private void SaveButtonClicked(object sender, RoutedEventArgs e)
|
private void SaveButtonClicked(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
Project projectToSave = this.DataContext as Project;
|
Project projectToSave = this.DataContext as Project;
|
||||||
_mainViewModel.SaveProject(projectToSave);
|
if (projectToSave.EditorWindowTitle == Properties.Resources.CreateProject)
|
||||||
|
{
|
||||||
|
_mainViewModel.AddNewProject(projectToSave);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_mainViewModel.SaveProject(projectToSave);
|
||||||
|
}
|
||||||
|
|
||||||
_mainViewModel.SwitchToMainView();
|
_mainViewModel.SwitchToMainView();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +58,10 @@ namespace ProjectsEditor
|
|||||||
|
|
||||||
private void CancelButtonClicked(object sender, RoutedEventArgs e)
|
private void CancelButtonClicked(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
_mainViewModel.CancelLastEdit();
|
// delete the temp file created by the snapshot tool
|
||||||
|
TempProjectData parser = new TempProjectData();
|
||||||
|
parser.DeleteTempFile();
|
||||||
|
|
||||||
_mainViewModel.SwitchToMainView();
|
_mainViewModel.SwitchToMainView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,6 +150,15 @@ namespace ProjectsEditor.Properties {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Project.
|
||||||
|
/// </summary>
|
||||||
|
public static string DefaultProjectNamePrefix {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("DefaultProjectNamePrefix", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Remove.
|
/// Looks up a localized string similar to Remove.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -147,6 +147,9 @@
|
|||||||
<data name="DaysAgo" xml:space="preserve">
|
<data name="DaysAgo" xml:space="preserve">
|
||||||
<value>days ago</value>
|
<value>days ago</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="DefaultProjectNamePrefix" xml:space="preserve">
|
||||||
|
<value>Project</value>
|
||||||
|
</data>
|
||||||
<data name="Delete" xml:space="preserve">
|
<data name="Delete" xml:space="preserve">
|
||||||
<value>Remove</value>
|
<value>Remove</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -2,19 +2,7 @@
|
|||||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||||
// See the LICENSE file in the project root for more information.
|
// 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;
|
||||||
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;
|
using ProjectsEditor.ViewModels;
|
||||||
|
|
||||||
namespace ProjectsEditor
|
namespace ProjectsEditor
|
||||||
@@ -41,7 +29,7 @@ namespace ProjectsEditor
|
|||||||
private void SnapshotButtonClicked(object sender, RoutedEventArgs e)
|
private void SnapshotButtonClicked(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
Close();
|
Close();
|
||||||
_mainViewModel.AddNewProject();
|
_mainViewModel.SnapNewProject();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ using System.Collections.ObjectModel;
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
using ManagedCommon;
|
using ManagedCommon;
|
||||||
@@ -127,7 +127,6 @@ namespace ProjectsEditor.ViewModels
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Project editedProject;
|
private Project editedProject;
|
||||||
private bool isEditedProjectNewlyCreated;
|
|
||||||
private string projectNameBeingEdited;
|
private string projectNameBeingEdited;
|
||||||
private MainWindow _mainWindow;
|
private MainWindow _mainWindow;
|
||||||
private System.Timers.Timer lastUpdatedTimer;
|
private System.Timers.Timer lastUpdatedTimer;
|
||||||
@@ -218,45 +217,62 @@ namespace ProjectsEditor.ViewModels
|
|||||||
project.Name = projectNameBeingEdited;
|
project.Name = projectNameBeingEdited;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void AddNewProject()
|
public async void SnapNewProject()
|
||||||
{
|
{
|
||||||
CancelSnapshot();
|
CancelSnapshot();
|
||||||
await Task.Run(() => RunSnapshotTool());
|
|
||||||
if (_projectsEditorIO.ParseProjects(this).Result == true && Projects.Count != 0)
|
|
||||||
{
|
|
||||||
int repeatCounter = 1;
|
|
||||||
string newName = Projects.Count != 0 ? Projects.Last().Name : "Project 1"; // TODO: localizable project name
|
|
||||||
while (Projects.Where(x => x.Name.Equals(Projects.Last().Name, StringComparison.Ordinal)).Count() > 1)
|
|
||||||
{
|
|
||||||
Projects.Last().Name = $"{newName} ({repeatCounter})";
|
|
||||||
repeatCounter++;
|
|
||||||
}
|
|
||||||
|
|
||||||
_projectsEditorIO.SerializeProjects(Projects.ToList());
|
await Task.Run(() => RunSnapshotTool());
|
||||||
EditProject(Projects.Last(), true);
|
|
||||||
|
Project project = new Project();
|
||||||
|
if (_projectsEditorIO.ParseTempProject(out project).Result)
|
||||||
|
{
|
||||||
|
EditProject(project, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EditProject(Project selectedProject, bool isNewlyCreated = false)
|
public void EditProject(Project selectedProject, bool isNewlyCreated = false)
|
||||||
{
|
{
|
||||||
isEditedProjectNewlyCreated = isNewlyCreated;
|
|
||||||
var editPage = new ProjectEditor(this);
|
var editPage = new ProjectEditor(this);
|
||||||
SetEditedProject(selectedProject);
|
SetEditedProject(selectedProject);
|
||||||
Project projectEdited = new Project(selectedProject) { EditorWindowTitle = isNewlyCreated ? Properties.Resources.CreateProject : Properties.Resources.EditProject };
|
|
||||||
projectEdited.Initialize();
|
|
||||||
|
|
||||||
editPage.DataContext = projectEdited;
|
if (isNewlyCreated)
|
||||||
|
{
|
||||||
|
// generate a default name for the new project
|
||||||
|
string defaultNamePrefix = Properties.Resources.DefaultProjectNamePrefix;
|
||||||
|
int nextProjectIndex = 0;
|
||||||
|
foreach (var proj in Projects)
|
||||||
|
{
|
||||||
|
if (proj.Name.StartsWith(defaultNamePrefix, StringComparison.CurrentCulture))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int index = int.Parse(proj.Name[(defaultNamePrefix.Length + 1)..], CultureInfo.CurrentCulture);
|
||||||
|
if (nextProjectIndex < index)
|
||||||
|
{
|
||||||
|
nextProjectIndex = index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
selectedProject.Name = defaultNamePrefix + " " + (nextProjectIndex + 1).ToString(CultureInfo.CurrentCulture);
|
||||||
|
}
|
||||||
|
|
||||||
|
selectedProject.EditorWindowTitle = isNewlyCreated ? Properties.Resources.CreateProject : Properties.Resources.EditProject;
|
||||||
|
selectedProject.Initialize();
|
||||||
|
|
||||||
|
editPage.DataContext = selectedProject;
|
||||||
_mainWindow.ShowPage(editPage);
|
_mainWindow.ShowPage(editPage);
|
||||||
lastUpdatedTimer.Stop();
|
lastUpdatedTimer.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CancelLastEdit()
|
public void AddNewProject(Project project)
|
||||||
{
|
{
|
||||||
if (isEditedProjectNewlyCreated)
|
Projects.Add(project);
|
||||||
{
|
_projectsEditorIO.SerializeProjects(Projects.ToList());
|
||||||
Projects.Remove(editedProject);
|
|
||||||
_projectsEditorIO.SerializeProjects(Projects.ToList());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteProject(Project selectedProject)
|
public void DeleteProject(Project selectedProject)
|
||||||
|
|||||||
Reference in New Issue
Block a user