From 6fa0049f620c161c93c4c355b4e9c672256f3b1f Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Mon, 20 Oct 2025 19:45:58 +1000 Subject: [PATCH] Create cs file v2 --- .../FileWatching/IdeFileOperationsService.cs | 15 +++++++++++++++ .../Features/FileWatching/NewFileTemplates.cs | 17 +++++++++++++++++ .../SharpIdeSolutionModificationService.cs | 9 +++++++++ .../ContextMenus/Dialogs/NewCsharpFileDialog.cs | 2 +- 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/SharpIDE.Application/Features/FileWatching/NewFileTemplates.cs diff --git a/src/SharpIDE.Application/Features/FileWatching/IdeFileOperationsService.cs b/src/SharpIDE.Application/Features/FileWatching/IdeFileOperationsService.cs index 70b53b7..8af22a9 100644 --- a/src/SharpIDE.Application/Features/FileWatching/IdeFileOperationsService.cs +++ b/src/SharpIDE.Application/Features/FileWatching/IdeFileOperationsService.cs @@ -18,4 +18,19 @@ public class IdeFileOperationsService(SharpIdeSolutionModificationService sharpI Directory.Delete(folder.Path, true); await _sharpIdeSolutionModificationService.RemoveDirectory(folder); } + + // public async Task DeleteFile(SharpIdeFile file) + // { + // File.Delete(file.Path); + // await _sharpIdeSolutionModificationService.RemoveFile(file); + // } + + public async Task CreateCsFile(SharpIdeFolder parentFolder, string newFileName, string @namespace) + { + var newFilePath = Path.Combine(parentFolder.Path, newFileName); + var className = Path.GetFileNameWithoutExtension(newFileName); + var fileText = NewFileTemplates.CsharpClass(className, @namespace); + await File.WriteAllTextAsync(newFilePath, fileText); + await _sharpIdeSolutionModificationService.CreateFile(parentFolder, newFileName, fileText); + } } diff --git a/src/SharpIDE.Application/Features/FileWatching/NewFileTemplates.cs b/src/SharpIDE.Application/Features/FileWatching/NewFileTemplates.cs new file mode 100644 index 0000000..60a9eda --- /dev/null +++ b/src/SharpIDE.Application/Features/FileWatching/NewFileTemplates.cs @@ -0,0 +1,17 @@ +namespace SharpIDE.Application.Features.FileWatching; + +public static class NewFileTemplates +{ + public static string CsharpClass(string className, string @namespace) + { + var text = $$""" + namespace {{@namespace}}; + + public class {{className}} + { + + } + """; + return text; + } +} diff --git a/src/SharpIDE.Application/Features/FileWatching/SharpIdeSolutionModificationService.cs b/src/SharpIDE.Application/Features/FileWatching/SharpIdeSolutionModificationService.cs index d0ca750..e9f20e4 100644 --- a/src/SharpIDE.Application/Features/FileWatching/SharpIdeSolutionModificationService.cs +++ b/src/SharpIDE.Application/Features/FileWatching/SharpIdeSolutionModificationService.cs @@ -59,4 +59,13 @@ public class SharpIdeSolutionModificationService(FileChangedService fileChangedS await _fileChangedService.SharpIdeFileRemoved(file); } } + + public async Task CreateFile(SharpIdeFolder parentFolder, string fileName, string contents) + { + var newFilePath = Path.Combine(parentFolder.Path, fileName); + var sharpIdeFile = new SharpIdeFile(newFilePath, fileName, parentFolder, []); + parentFolder.Files.Add(sharpIdeFile); + SolutionModel.AllFiles.Add(sharpIdeFile); + await _fileChangedService.SharpIdeFileAdded(sharpIdeFile, contents); + } } diff --git a/src/SharpIDE.Godot/Features/SolutionExplorer/ContextMenus/Dialogs/NewCsharpFileDialog.cs b/src/SharpIDE.Godot/Features/SolutionExplorer/ContextMenus/Dialogs/NewCsharpFileDialog.cs index b3942aa..545dccf 100644 --- a/src/SharpIDE.Godot/Features/SolutionExplorer/ContextMenus/Dialogs/NewCsharpFileDialog.cs +++ b/src/SharpIDE.Godot/Features/SolutionExplorer/ContextMenus/Dialogs/NewCsharpFileDialog.cs @@ -72,7 +72,7 @@ public partial class NewCsharpFileDialog : ConfirmationDialog _ = Task.GodotRun(async () => { - //await _ideFileOperationsService.CreateCSharpFile(ParentFolder, fileName); + await _ideFileOperationsService.CreateCsFile(ParentFolder, fileName, "asdf"); }); QueueFree(); }