diff --git a/I18N Commander/UI WinForms/Components/LoaderStart.cs b/I18N Commander/UI WinForms/Components/LoaderStart.cs index aeebe7a..ad55a5f 100644 --- a/I18N Commander/UI WinForms/Components/LoaderStart.cs +++ b/I18N Commander/UI WinForms/Components/LoaderStart.cs @@ -1,5 +1,5 @@ using System.ComponentModel; -using Microsoft.Win32; +using Microsoft.Win32; namespace UI_WinForms.Components; @@ -78,23 +78,50 @@ public partial class LoaderStart : UserControl private void buttonNew_Click(object sender, EventArgs e) { - // TODO: Browse for new project's location + var saveDialog = new SaveFileDialog + { + AddExtension = true, + CheckPathExists = true, + CheckFileExists = false, + CreatePrompt = false, + OverwritePrompt = true, + DereferenceLinks = true, + DefaultExt = ".i18nc", + Filter = "I18N Commander Files (*.i18nc)|*.i18nc", + RestoreDirectory = true, + Title = "Create a new I18N Commander file", + }; - // TODO: Apply new project's path - LoaderStart.UpdateRecentProjectsWithPruning(string.Empty); + var dialogResult = saveDialog.ShowDialog(this); + if (dialogResult != DialogResult.OK) + return; - // TODO: Open the project + var destinationFilePath = saveDialog.FileName; + LoaderStart.UpdateRecentProjectsWithPruning(destinationFilePath); + this.OpenProject(destinationFilePath); } private void BrowseForProject() { - // TODO: Browse for project - // TODO: Handle cancel event + var openDialog = new OpenFileDialog + { + AddExtension = true, + CheckPathExists = true, + CheckFileExists = true, + DereferenceLinks = true, + DefaultExt = ".i18nc", + Filter = "I18N Commander Files (*.i18nc)|*.i18nc", + Multiselect = false, + RestoreDirectory = true, + Title = "Open an I18N Commander file", + }; + var dialogResult = openDialog.ShowDialog(this); + if (dialogResult != DialogResult.OK) + return; - // TODO: Apply chosen project's path - LoaderStart.UpdateRecentProjectsWithPruning(string.Empty); - - // TODO: Open the project + var projectFilePath = openDialog.FileName; + LoaderStart.UpdateRecentProjectsWithPruning(projectFilePath); + this.OpenProject(projectFilePath); } private void OpenRecentProject(object? sender) @@ -104,8 +131,13 @@ public partial class LoaderStart : UserControl var path = (item.Tag as string)!; LoaderStart.UpdateRecentProjectsWithPruning(path); - - // TODO: Open the project + this.OpenProject(path); + } + + private void OpenProject(string path) + { + // Hint: the project file might or might not exist (new project vs. recent project) + this.LoadProject?.Invoke(this, path); } private void contextMenuRecentProjects_Closing(object sender, ToolStripDropDownClosingEventArgs e)