From cddf6798a6f7a104bf489fa8d48658f58dfb1baf Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Sun, 31 Aug 2025 00:25:32 -0500 Subject: [PATCH] First Commit --- .gitignore | 5 + App.axaml | 24 ++ App.axaml.cs | 47 +++ Assets/Fonts/aardvark-fixed-regular.ttf | Bin 0 -> 399304 bytes Assets/crosslang.ico | Bin 0 -> 46215 bytes CrossLangDevStudio.csproj | 31 ++ CrossLangFile.cs | 407 +++++++++++++++++++ CrossLangShell.cs | 270 +++++++++++++ Messages/GetWindowMessage.cs | 7 + Messages/NewProjectCloseMessage.cs | 9 + Messages/NewProjectMessage.cs | 6 + Models/ProjectFileNode.cs | 25 ++ Packaging/Linux/build.sh | 0 Packaging/Windows/Toolchain.cmake | 12 + Packaging/Windows/build.sh | 19 + Packaging/Windows/license.txt | 0 Packaging/Windows/script.nsh | 147 +++++++ Program.cs | 21 + ViewLocator.cs | 31 ++ ViewModels/FileEditorViewModel.cs | 65 ++++ ViewModels/ISavable.cs | 5 + ViewModels/MainWindowViewModel.cs | 409 ++++++++++++++++++++ ViewModels/NewProjectDialogViewModel.cs | 120 ++++++ ViewModels/ProjectConfigurationViewModel.cs | 220 +++++++++++ ViewModels/TabItemViewModel.cs | 24 ++ ViewModels/ViewModelBase.cs | 7 + ViewModels/WelcomeViewModel.cs | 66 ++++ Views/FileEditorView.axaml | 17 + Views/FileEditorView.axaml.cs | 12 + Views/MainWindow.axaml | 86 ++++ Views/MainWindow.axaml.cs | 38 ++ Views/NewProjectDialog.axaml | 69 ++++ Views/NewProjectDialog.axaml.cs | 21 + Views/NewTabView.axaml | 27 ++ Views/NewTabView.axaml.cs | 12 + Views/ProjectConfigurationView.axaml | 56 +++ Views/ProjectConfigurationView.axaml.cs | 11 + Views/WelcomeView.axaml | 46 +++ Views/WelcomeView.axaml.cs | 11 + app.manifest | 18 + 40 files changed, 2401 insertions(+) create mode 100644 .gitignore create mode 100644 App.axaml create mode 100644 App.axaml.cs create mode 100644 Assets/Fonts/aardvark-fixed-regular.ttf create mode 100644 Assets/crosslang.ico create mode 100644 CrossLangDevStudio.csproj create mode 100644 CrossLangFile.cs create mode 100644 CrossLangShell.cs create mode 100644 Messages/GetWindowMessage.cs create mode 100644 Messages/NewProjectCloseMessage.cs create mode 100644 Messages/NewProjectMessage.cs create mode 100644 Models/ProjectFileNode.cs create mode 100644 Packaging/Linux/build.sh create mode 100644 Packaging/Windows/Toolchain.cmake create mode 100644 Packaging/Windows/build.sh create mode 100644 Packaging/Windows/license.txt create mode 100644 Packaging/Windows/script.nsh create mode 100644 Program.cs create mode 100644 ViewLocator.cs create mode 100644 ViewModels/FileEditorViewModel.cs create mode 100644 ViewModels/ISavable.cs create mode 100644 ViewModels/MainWindowViewModel.cs create mode 100644 ViewModels/NewProjectDialogViewModel.cs create mode 100644 ViewModels/ProjectConfigurationViewModel.cs create mode 100644 ViewModels/TabItemViewModel.cs create mode 100644 ViewModels/ViewModelBase.cs create mode 100644 ViewModels/WelcomeViewModel.cs create mode 100644 Views/FileEditorView.axaml create mode 100644 Views/FileEditorView.axaml.cs create mode 100644 Views/MainWindow.axaml create mode 100644 Views/MainWindow.axaml.cs create mode 100644 Views/NewProjectDialog.axaml create mode 100644 Views/NewProjectDialog.axaml.cs create mode 100644 Views/NewTabView.axaml create mode 100644 Views/NewTabView.axaml.cs create mode 100644 Views/ProjectConfigurationView.axaml create mode 100644 Views/ProjectConfigurationView.axaml.cs create mode 100644 Views/WelcomeView.axaml create mode 100644 Views/WelcomeView.axaml.cs create mode 100644 app.manifest diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d0ef60 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.vscode +bin +obj +out +build \ No newline at end of file diff --git a/App.axaml b/App.axaml new file mode 100644 index 0000000..b2ca1cf --- /dev/null +++ b/App.axaml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + avares://CrossLangDevStudio/Assets/Fonts#Aardvark Fixed Regular + + \ No newline at end of file diff --git a/App.axaml.cs b/App.axaml.cs new file mode 100644 index 0000000..e3c7ddd --- /dev/null +++ b/App.axaml.cs @@ -0,0 +1,47 @@ +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Data.Core; +using Avalonia.Data.Core.Plugins; +using System.Linq; +using Avalonia.Markup.Xaml; +using CrossLangDevStudio.ViewModels; +using CrossLangDevStudio.Views; + +namespace CrossLangDevStudio; + +public partial class App : Application +{ + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + // Avoid duplicate validations from both Avalonia and the CommunityToolkit. + // More info: https://docs.avaloniaui.net/docs/guides/development-guides/data-validation#manage-validationplugins + DisableAvaloniaDataAnnotationValidation(); + desktop.MainWindow = new MainWindow + { + DataContext = new MainWindowViewModel(desktop.Args ?? []), + }; + } + + base.OnFrameworkInitializationCompleted(); + } + + private void DisableAvaloniaDataAnnotationValidation() + { + // Get an array of plugins to remove + var dataValidationPluginsToRemove = + BindingPlugins.DataValidators.OfType().ToArray(); + + // remove each entry found + foreach (var plugin in dataValidationPluginsToRemove) + { + BindingPlugins.DataValidators.Remove(plugin); + } + } +} \ No newline at end of file diff --git a/Assets/Fonts/aardvark-fixed-regular.ttf b/Assets/Fonts/aardvark-fixed-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..14781d70d928bfde325680acbf672748b11b830b GIT binary patch literal 399304 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 z�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 iS|Nq%KXUAIKwbov{&OT>z06+m8000kT3}D*` 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 + + WinExe + net9.0 + enable + true + app.manifest + true + + + + + + + + + + + + + + + + None + All + + + + + + diff --git a/CrossLangFile.cs b/CrossLangFile.cs new file mode 100644 index 0000000..ddcaf9d --- /dev/null +++ b/CrossLangFile.cs @@ -0,0 +1,407 @@ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.Json.Serialization; +using System.Threading.Tasks; +using Avalonia.Controls; +using Avalonia.Media; +using Avalonia.Media.Imaging; +using Avalonia.Platform; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace CrossLangDevStudio; + + +public class CrossLangFile +{ + const string CROSSVM = "TCROSSVM"; + public void Load(string path) + { + if (File.Exists(path)) + using (var strm = File.OpenRead(path)) + Load(strm); + } + + + + public void Load(Stream strm) + { + byte[] header = new byte[18]; + strm.ReadExactly(header); + for (int i = 0; i < CROSSVM.Length; i++) + { + if (header[i] != (byte)CROSSVM[i]) throw new Exception("Invalid signature"); + } + + Version = new CrossLangVersion(header, 13); + + uint ReadInt() + { + strm.ReadExactly(header, 0, 4); + + if (BitConverter.IsLittleEndian) + Array.Reverse(header, 0, 4); + return BitConverter.ToUInt32(header, 0); + } + + void ReadString() + { + uint length = ReadInt(); + byte[] data = new byte[length]; + strm.ReadExactly(data, 0, data.Length); + Strings.Add(Encoding.UTF8.GetString(data)); + } + string ReadSectionName() + { + strm.ReadExactly(header, 0, 4); + return Encoding.UTF8.GetString(header, 0, 4); + } + + string GetString() + { + uint index = ReadInt(); + return Strings[(int)index]; + } + + + + uint count = ReadInt(); + for (uint i = 0; i < count; i++) + { + string section = ReadSectionName(); + uint sectionSize = ReadInt(); + switch (section) + { + case "STRS": + { + uint theCount = ReadInt(); + for (uint j = 0; j < theCount; j++) + { + ReadString(); + } + } + break; + case "NAME": + Name = GetString(); + break; + case "INFO": + Info = GetString(); + break; + case "ICON": + Icon = (int)ReadInt(); + break; + case "RESO": + byte[] data = new byte[sectionSize]; + strm.ReadExactly(data, 0, data.Length); + Resources.Add(data); + break; + case "DEPS": + if (sectionSize == 9) + { + string name = GetString(); + strm.ReadExactly(header, 0, 5); + var version = new CrossLangVersion(header); + Dependencies.Add(new CrossLangDependency() { Name = name, Version = version }); + } + break; + default: + strm.Position += sectionSize; + break; + } + } + + } + public string Name { get; private set; } = ""; + public CrossLangVersion Version { get; private set; } + + public string Info { get; private set; } = ""; + + public int Icon { get; private set; } = -1; + + public CrossLangInfo InfoObject => JsonConvert.DeserializeObject(Info) ?? new CrossLangInfo(); + + public Bitmap GetIcon(int height=128) + { + using (Stream strm = (Icon > -1 && Icon < Resources.Count) ? new MemoryStream(Resources[Icon], false) : AssetLoader.Open(new Uri("avares://CrossLangDevStudio/Assets/crosslang.ico"))) + { + return Bitmap.DecodeToHeight(strm, height); + } + } + + internal string GetTemplatePrettyName() + { + var info = InfoObject; + if (info is not null) + { + if (!string.IsNullOrWhiteSpace(info.TemplateNamePretty)) return info.TemplateNamePretty; + if (!string.IsNullOrWhiteSpace(info.TemplateName)) return info.TemplateName; + } + return this.Name; + } + + public List Strings { get; } = new List(); + + public List Resources { get; } = new List(); + + public List Dependencies { get; } = new List(); + +} + + +public class CrossLangConfig +{ + [JsonProperty("name")] + public string? Name { get; set; } + + [JsonProperty("version")] + public CrossLangVersion Version { get; set; } + + [JsonProperty("dependencies")] + public List Dependencies { get; set; } = new List(); + + [JsonProperty("info")] + public CrossLangInfo Info { get; set; } = new CrossLangInfo(); + + [JsonProperty("project_dependencies")] + public List ProjectDependencies { get; set; } = new List(); + + [JsonProperty("icon")] + public string? Icon { get; set; } +} + + +public class CrossLangInfo +{ + [JsonProperty("maintainer")] + public string? Maintainer { get; set; } //Not checked when building project + [JsonProperty("type")] + public string? Type { get; set; } //gets checked whether it is compile_tool by build tool, possible values are in file: project_types.txt + [JsonProperty("repo")] + public string? Repoository { get; set; } //optional, is the place where the code is stored + [JsonProperty("homepage")] + public string? HomePage { get; set; } //optional, is the website for the project + [JsonProperty("license")] + public string? License { get; set; } //optional, but recommended to tell people what the license is + [JsonProperty("description")] + public string? Description { get; set; } //optional but tells people about the package + + [JsonProperty("template_name")] + public string? TemplateName { get; set; } + [JsonProperty("template_name_pretty")] + public string? TemplateNamePretty { get; set; } + + [JsonProperty("template_project_dependencies")] + public JToken? TemplateDependencies { get; set; } + + [JsonProperty("template_info")] + public JToken? TemplateInfo { get; set; } + [JsonProperty("template_extra_text_ftles")] + public JToken? TemplateExtraTextFiles { get; set; } + [JsonProperty("template_ignored_files")] + public JToken? TemplateIgnoredFiles { get; set; } +} + +public class CrossLangDependency +{ + [JsonProperty("name")] + public string Name { get; set; } = ""; + [JsonProperty("verson")] + public CrossLangVersion Version { get; set; } + +} + +public enum CrossLangVersionStage +{ + Development = 0, + Alpha = 1, + Beta = 2, + Production = 3 +} +public class CrossLangVersionConverter : Newtonsoft.Json.JsonConverter +{ + public override CrossLangVersion ReadJson(JsonReader reader, Type objectType, CrossLangVersion existingValue, bool hasExistingValue, JsonSerializer serializer) + { + string? s = reader.Value as string; + if (!string.IsNullOrWhiteSpace(s)) + { + + if (CrossLangVersion.TryParse(s, out var version)) return version; + + } + + if (hasExistingValue) + return existingValue; + return new CrossLangVersion(); + } + + public override void WriteJson(JsonWriter writer, CrossLangVersion value, JsonSerializer serializer) + { + writer.WriteValue(value.ToString()); + } +} +[Newtonsoft.Json.JsonConverter( typeof(CrossLangVersionConverter))] +public struct CrossLangVersion : IComparable, IComparable +{ + public void CopyTo(byte[] data, int offset = 0) + { + if (offset + 5 > data.Length) throw new IndexOutOfRangeException("Cannot write outside of array"); + data[offset + 0] = Major; + data[offset + 1] = Minor; + data[offset + 2] = Patch; + data[offset + 3] = (byte)(BuildAndStage >> 8); + data[offset + 4] = (byte)(BuildAndStage & 0xFF); + } + public byte[] ToArray() + { + byte[] data = new byte[5]; + CopyTo(data); + return data; + } + public static bool TryParse(string str, out CrossLangVersion version) + { + var dashPart = str.Split(new char[] { '-' }, 2, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); + byte major = 1; + byte minor = 0; + byte patch = 0; + ushort build = 0; + CrossLangVersionStage stage = CrossLangVersionStage.Development; + if (dashPart.Length >= 1) + { + + var dotPart = dashPart[0].Split(new char[] { '.' }, 4, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); + if (dotPart.Length > 0) + { + if (!byte.TryParse(dotPart[0], out major)) + { + version = new CrossLangVersion(); + return false; + } + if (dotPart.Length > 1 && !byte.TryParse(dotPart[1], out minor)) + { + version = new CrossLangVersion(); + return false; + } + if (dotPart.Length > 2 && !byte.TryParse(dotPart[2], out patch)) + { + version = new CrossLangVersion(); + return false; + } + if (dotPart.Length > 3 && !ushort.TryParse(dotPart[3], out build)) + { + version = new CrossLangVersion(); + return false; + } + if (dashPart.Length == 2) + { + switch (dashPart[1]) + { + case "dev": + stage = CrossLangVersionStage.Development; + break; + case "alpha": + stage = CrossLangVersionStage.Alpha; + break; + case "beta": + stage = CrossLangVersionStage.Beta; + break; + case "prod": + stage = CrossLangVersionStage.Production; + break; + default: + version = new CrossLangVersion(); + return false; + } + } + + version = new CrossLangVersion(major, minor, patch, build, stage); + return true; + } + + + + + } + + version = new CrossLangVersion(); + + return false; + + + + } + public CrossLangVersion() + { + + } + public CrossLangVersion(byte major, byte minor, byte patch, ushort build, CrossLangVersionStage stage) + { + Major = major; + Minor = minor; + Patch = patch; + Build = build; + Stage = stage; + } + public CrossLangVersion(byte[] data, int offset = 0) + { + if (offset + 5 > data.Length) return; + + Major = data[offset+0]; + Minor = data[offset+1]; + Patch = data[offset+2]; + ushort build = (ushort)(data[offset+3] << 8 | data[offset+4]); + Build = (ushort)(build >> 2); + Stage = (CrossLangVersionStage)(build & 3); + } + public byte Major { get; set; } = 1; + public byte Minor { get; set; } = 0; + public byte Patch { get; set; } = 0; + + public ushort Build { get; set; } = 0; + + public static CrossLangVersion OnePointZeroProd => new CrossLangVersion(){Major=1,Minor=0,Patch=0,Build=0,Stage= CrossLangVersionStage.Production}; + + public CrossLangVersionStage Stage { get; set; } = CrossLangVersionStage.Development; + + public ushort BuildAndStage => (ushort)(Build << 2 | (ushort)Stage); + + public ulong AsInteger => (ulong)((ulong)Major << 32 | (ulong)Minor << 24 | (ulong)Patch << 16 | (ulong)BuildAndStage); + + public int CompareTo(CrossLangVersion other) + { + return AsInteger.CompareTo(other.AsInteger); + } + + public int CompareTo(object? obj) + { + if (obj is CrossLangVersion oth) + return CompareTo(oth); + + return 1; + } + + public override string ToString() + { + string stage="dev"; + switch (Stage) + { + case CrossLangVersionStage.Development: + stage = "dev"; + break; + case CrossLangVersionStage.Alpha: + stage = "alpha"; + break; + case CrossLangVersionStage.Beta: + stage = "beta"; + break; + case CrossLangVersionStage.Production: + stage = "prod"; + break; + } + return $"{Major}.{Minor}.{Patch}.{Build}-{stage}"; + } +} \ No newline at end of file diff --git a/CrossLangShell.cs b/CrossLangShell.cs new file mode 100644 index 0000000..9ed29c6 --- /dev/null +++ b/CrossLangShell.cs @@ -0,0 +1,270 @@ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Runtime.InteropServices; +using System.Security.Cryptography.X509Certificates; +using System.Text.Json.Serialization; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace CrossLangDevStudio; + + +class CrossLangShell +{ + private static CrossLangSettings? settings = null; + public static CrossLangSettings Settings + { + get + { + if (settings != null) return settings; + var config = CrossLangConfigDirectory; + if (!string.IsNullOrWhiteSpace(config)) + { + var devStudioDir = Path.Combine(config, "DevStudio"); + Directory.CreateDirectory(devStudioDir); + var settingsFile = Path.Combine(devStudioDir, "Settings.json"); + if (File.Exists(settingsFile)) + { + settings = JsonConvert.DeserializeObject(File.ReadAllText(settingsFile)); + } + } + + return settings is null ? settings = new CrossLangSettings() : settings; + } + } + private static string _crosslang_config_dir = ""; + + public static string CrossLangConfigDirectory => string.IsNullOrWhiteSpace(_crosslang_config_dir) ? _crosslang_config_dir = GetCrossLangDirectory() : _crosslang_config_dir; + + public static List GetRecentProjects() + { + var config = CrossLangConfigDirectory; + if (string.IsNullOrWhiteSpace(config)) return new List(); + + var devStudioDir = Path.Combine(config, "DevStudio"); + Directory.CreateDirectory(devStudioDir); + var configPath = Path.Combine(devStudioDir, "Recents.json"); + if (File.Exists(configPath)) + { + var list = JsonConvert.DeserializeObject>(File.ReadAllText(configPath)); + if (list is not null) return list; + } + + return new List(); + } + public static void OpenFolderInFileManager(string path) + { + using (Process p = new Process()) + { + p.StartInfo.FileName = path; + p.StartInfo.UseShellExecute = true; + p.Start(); + } + } + public static void EnsureRecent(string projectPath) + { + projectPath = Path.GetFullPath(projectPath).TrimEnd(Path.DirectorySeparatorChar); + var recents = GetRecentProjects(); + if (recents.Contains(projectPath)) + { + recents.Remove(projectPath); + } + recents.Insert(0, projectPath); + if (recents.Count > 5) + { + recents.RemoveRange(5, recents.Count - 5); + } + + var config = CrossLangConfigDirectory; + if (string.IsNullOrWhiteSpace(config)) return; + + var devStudioDir = Path.Combine(config, "DevStudio"); + Directory.CreateDirectory(devStudioDir); + var configPath = Path.Combine(devStudioDir, "Recents.json"); + File.WriteAllText(configPath, JsonConvert.SerializeObject(recents, Formatting.Indented)); + } + public static string GetRealPath(string exec) + { + foreach (var item in (Environment.GetEnvironmentVariable("PATH") ?? "").Split(Path.PathSeparator)) + { + var path = Path.Combine(item, exec); + if (File.Exists(path)) return path; + foreach (var ext in (Environment.GetEnvironmentVariable("PATHEXT") ?? "").Split(Path.PathSeparator)) + { + if (File.Exists(path + ext)) return path + ext; + } + } + return ""; + } + + public static string CrossLangPath + { + get + { + var path = GetRealPath("crosslang"); + return path; + } + } + public static bool HaveCrossLang + { + get + { + return !string.IsNullOrWhiteSpace(CrossLangPath); + } + } + public static void BuildProjectInFolder(string folder) + { + OpenTerminal(false, folder, CrossLangPath, "build"); + } + public static void RunProjectInFolder(string folder) + { + OpenTerminal(true, folder, CrossLangPath, "run"); + } + public static void OpenTerminalInFolder(string folder) + { + if (OperatingSystem.IsLinux()) + { + OpenTerminal(false, folder, "", []); + } + } + + public static void OpenTerminal(bool keepOpen, string workingDirectory, string commandName, params string[] args) + { + var preferedTerminalCommand = Settings.PreferedTerminalCommand; + if (!string.IsNullOrWhiteSpace(preferedTerminalCommand)) + { + var firstArgs = preferedTerminalCommand.Split(" "); + using Process process = new(); + process.StartInfo.UseShellExecute = false; + process.StartInfo.WorkingDirectory = workingDirectory; + process.StartInfo.FileName = firstArgs[0]; + for (int i = 1; i < firstArgs.Length; i++) + { + process.StartInfo.ArgumentList.Add(firstArgs[i]); + } + foreach (var arg in args) + process.StartInfo.ArgumentList.Add(arg); + process.Start(); + return; + } + if (OperatingSystem.IsLinux() || OperatingSystem.IsFreeBSD()) + { + string konsole = GetRealPath("konsole"); + string gnome_terminal = GetRealPath("gnome-terminal"); + + string xterm = GetRealPath("xterm"); + if (File.Exists(konsole)) + { + using Process process = new Process(); + process.StartInfo.WorkingDirectory = workingDirectory; + process.StartInfo.FileName = konsole; + process.StartInfo.UseShellExecute = false; + if (commandName.Length != 0) + { + if (keepOpen) + process.StartInfo.ArgumentList.Add("--hold"); + process.StartInfo.ArgumentList.Add("-e"); + process.StartInfo.ArgumentList.Add(commandName); + foreach (var arg in args) + { + process.StartInfo.ArgumentList.Add(arg); + } + } + process.Start(); + } + else if (File.Exists(gnome_terminal)) + { + + } + else if (File.Exists(xterm)) + { + + } + } + else if (OperatingSystem.IsWindows()) + { + using Process process = new Process(); + process.StartInfo.FileName = GetRealPath("cmd.exe"); + if(commandName.Length > 0) + process.StartInfo.ArgumentList.Add(keepOpen ? "/K" : "/C"); + process.StartInfo.CreateNoWindow = false; + process.StartInfo.UseShellExecute = false; + process.StartInfo.WorkingDirectory = workingDirectory; + if(commandName.Length > 0) + process.StartInfo.ArgumentList.Add(commandName); + foreach (var item in args) + process.StartInfo.ArgumentList.Add(item); + process.Start(); + } + } + + + private static string GetCrossLangDirectory() + { + string path = CrossLangPath; + if (string.IsNullOrWhiteSpace(path)) return ""; + using Process process = new Process(); + process.StartInfo.ArgumentList.Add("configdir"); + process.StartInfo.FileName = path; + process.StartInfo.CreateNoWindow = true; + process.StartInfo.RedirectStandardOutput = true; + process.StartInfo.UseShellExecute = false; + process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + if (process.Start()) + { + + process.WaitForExit(); + var text = process.StandardOutput.ReadToEnd(); + return (text ?? "").Replace("\n", "").Replace("\r", ""); + } + return ""; + } + + internal static bool CreateProject(string templateName, string path) + { + string cpath = CrossLangPath; + if (string.IsNullOrWhiteSpace(cpath)) return false; + using Process process = new Process(); + process.StartInfo.ArgumentList.Add("new"); + process.StartInfo.ArgumentList.Add(templateName); + process.StartInfo.WorkingDirectory = path; + process.StartInfo.FileName = cpath; + process.StartInfo.CreateNoWindow = true; + + process.StartInfo.UseShellExecute = false; + process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + if (process.Start()) + { + + process.WaitForExit(); + return process.ExitCode == 0; + } + return false; + } +} + +public class CrossLangSettings +{ + [JsonProperty("prefered_terminal_command")] + public string PreferedTerminalCommand { get; set; } = ""; + [JsonProperty("prefered_project_directory")] + public string PreferedProjectDirectory { get; set; } = ""; + [Newtonsoft.Json.JsonIgnore] + public string ProjectDirectory + { + get + { + if (!string.IsNullOrWhiteSpace(PreferedProjectDirectory)) + return PreferedProjectDirectory; + + string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "CrossLangProjects"); + Directory.CreateDirectory(path); + return path; + } + } + + +} \ No newline at end of file diff --git a/Messages/GetWindowMessage.cs b/Messages/GetWindowMessage.cs new file mode 100644 index 0000000..444cc07 --- /dev/null +++ b/Messages/GetWindowMessage.cs @@ -0,0 +1,7 @@ +using CrossLangDevStudio.ViewModels; +using CommunityToolkit.Mvvm.Messaging.Messages; +using Avalonia.Controls; + +namespace CrossLangDevStudio.Messages; + +public class GetWindowMessage : AsyncRequestMessage; \ No newline at end of file diff --git a/Messages/NewProjectCloseMessage.cs b/Messages/NewProjectCloseMessage.cs new file mode 100644 index 0000000..8768129 --- /dev/null +++ b/Messages/NewProjectCloseMessage.cs @@ -0,0 +1,9 @@ +using CrossLangDevStudio.ViewModels; +using CommunityToolkit.Mvvm.Messaging.Messages; + +namespace CrossLangDevStudio.Messages; + +public class NewProjectCloseMessage(string? path) : AsyncRequestMessage +{ + public string? Path => path; +} \ No newline at end of file diff --git a/Messages/NewProjectMessage.cs b/Messages/NewProjectMessage.cs new file mode 100644 index 0000000..a54cca3 --- /dev/null +++ b/Messages/NewProjectMessage.cs @@ -0,0 +1,6 @@ +using CrossLangDevStudio.ViewModels; +using CommunityToolkit.Mvvm.Messaging.Messages; + +namespace CrossLangDevStudio.Messages; + +public class NewProjectMessage : AsyncRequestMessage; \ No newline at end of file diff --git a/Models/ProjectFileNode.cs b/Models/ProjectFileNode.cs new file mode 100644 index 0000000..47025b2 --- /dev/null +++ b/Models/ProjectFileNode.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.ObjectModel; +using Avalonia.Controls; + +namespace CrossLangDevStudio.Models; + +public class ProjectFileNode +{ + public ObservableCollection? SubNodes { get; } + public string Title { get; } + + public Action? Click { get; } + + public ProjectFileNode(string title, Action? click = null) + { + Title = title; + Click = click; + } + + public ProjectFileNode(string title, ObservableCollection subNodes) + { + Title = title; + SubNodes = subNodes; + } +} \ No newline at end of file diff --git a/Packaging/Linux/build.sh b/Packaging/Linux/build.sh new file mode 100644 index 0000000..e69de29 diff --git a/Packaging/Windows/Toolchain.cmake b/Packaging/Windows/Toolchain.cmake new file mode 100644 index 0000000..444308d --- /dev/null +++ b/Packaging/Windows/Toolchain.cmake @@ -0,0 +1,12 @@ + + set(CMAKE_C_COMPILER "/usr/bin/i686-w64-mingw32-gcc") + set(CMAKE_CXX_COMPILER "/usr/bin/i686-w64-mingw32-g++") + set(CMAKE_C_FLAGS "-static-libgcc -static-libstdc++ -static") + set(CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++ -static") + set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static") + + set(CMAKE_SYSROOT "/home/mike/dvd/Working/Sysroot/windows") + + set(CMAKE_SYSTEM_NAME Windows) + set(CMAKE_SYSTEM_PROCESSOR i686) + diff --git a/Packaging/Windows/build.sh b/Packaging/Windows/build.sh new file mode 100644 index 0000000..d82fdb8 --- /dev/null +++ b/Packaging/Windows/build.sh @@ -0,0 +1,19 @@ +#!/bin/bash\ +mkdir build +cd build +git clone https://onedev.site.tesses.net/crosslang +cd crosslang +mkdir build +cd build +cmake -S .. -B . -DCMAKE_TOOLCHAIN_FILE=../../../Toolchain.cmake -DTESSESFRAMEWORK_ENABLE_SHARED=OFF -DTESSESFRAMEWORK_FETCHCONTENT=ON +make -j`nproc` +mkdir -p ../../package/bin +mkdir -p ../../package/share/Tesses/CrossLang +cp crosslang.exe ../../package/bin +cp ../winicon.ico ../../package/crosslang.ico +cd ../.. +wget -O package/share/Tesses/CrossLang/Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm https://downloads.tesses.net/ShellPackage.crvm +cd package +dotnet publish -c Release -r win-x64 -o bin -p:PublishReadyToRun=true -p:PublishSingleFile=true --self-contained ../../../../CrossLangDevStudio.csproj +cp ../../script.nsh . +makensis script.nsh \ No newline at end of file diff --git a/Packaging/Windows/license.txt b/Packaging/Windows/license.txt new file mode 100644 index 0000000..e69de29 diff --git a/Packaging/Windows/script.nsh b/Packaging/Windows/script.nsh new file mode 100644 index 0000000..4c971cf --- /dev/null +++ b/Packaging/Windows/script.nsh @@ -0,0 +1,147 @@ +# This installs two files, app.exe and logo.ico, creates a start menu shortcut, builds an uninstaller, and +# adds uninstall information to the registry for Add/Remove Programs + +# To get started, put this script into a folder with the two files (app.exe, logo.ico, and license.rtf - +# You'll have to create these yourself) and run makensis on it + +# If you change the names "app.exe", "logo.ico", or "license.rtf" you should do a search and replace - they +# show up in a few places. +# All the other settings can be tweaked by editing the !defines at the top of this script +!define APPNAME "CrossLang DevStudio" +!define COMPANYNAME "Tesses" +!define DESCRIPTION "IDE for CrossLang" +# These three must be integers +!define VERSIONMAJOR 1 +!define VERSIONMINOR 0 +!define VERSIONBUILD 0 +# These will be displayed by the "Click here for support information" link in "Add/Remove Programs" +# It is possible to use "mailto:" links in here to open the email client +!define ABOUTURL "https://crosslang.tesseslanguage.com/" # "Publisher" link +# This is the size (in kB) of all the files copied into "Program Files" + + +RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on) + +InstallDir "$PROGRAMFILES\${COMPANYNAME}\${APPNAME}" + +# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n) +LicenseData "license.txt" +# This will be in the installer/uninstaller's title bar +Name "${COMPANYNAME} - ${APPNAME}" +Icon "crosslang.ico" +outFile "CrossLangDevStudio-Installer.exe" + +!include LogicLib.nsh + +# Just three pages - license agreement, install location, and installation +page license +page directory +Page instfiles + +!macro VerifyUserIsAdmin +UserInfo::GetAccountType +pop $0 +${If} $0 != "admin" ;Require admin rights on NT4+ + messageBox mb_iconstop "Administrator rights required!" + setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED + quit +${EndIf} +!macroend + +function .onInit + setShellVarContext all + !insertmacro VerifyUserIsAdmin +functionEnd + +section "install" + createDirectory "$INSTDIR\bin" + createDirectory "$INSTDIR\share" + createDirectory "$INSTDIR\share\Tesses" + createDirectory "$INSTDIR\share\Tesses\CrossLang" + # Files for the install directory - to build the installer, these should be in the same directory as the install script (this file) + setOutPath $INSTDIR + + # Files added here should be removed by the uninstaller (see section "uninstall") + + file "crosslang.ico" + setOutPath $INSTDIR\bin + + file "bin\CrossLangDevStudio.exe" + file "bin\av_libglesv2.dll" + file "bin\libHarfBuzzSharp.dll" + file "bin\libSkiaSharp.dll" + file "bin\crosslang.exe" + setOutPath $INSTDIR\share\Tesses\CrossLang + + file "share\Tesses\CrossLang\Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm" + + # Add any other files for the install directory (license files, app data, etc) here + + # Uninstaller - See function un.onInit and section "uninstall" for configuration + writeUninstaller "$INSTDIR\uninstall.exe" + + # Start Menu + createDirectory "$SMPROGRAMS\${COMPANYNAME}" + createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\bin\CrossLangDevStudio.exe" "" "$INSTDIR\crosslang.ico" + + # Registry information for add/remove programs + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayName" "${COMPANYNAME} - ${APPNAME} - ${DESCRIPTION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "InstallLocation" "$\"$INSTDIR$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayIcon" "$\"$INSTDIR\logo.ico$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "Publisher" "$\"${COMPANYNAME}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\"" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayVersion" "$\"${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}$\"" + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMajor" ${VERSIONMAJOR} + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMinor" ${VERSIONMINOR} + # There is no option for modifying or repairing the install + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoRepair" 1 + WriteRegStr HKCR "Directory\Background\shell\${APPNAME}\command" "" "$\"$INSTDIR\bin\CrossLangDevStudio.exe$\" $\"%V$\"" +sectionEnd + +# Uninstaller + +function un.onInit + SetShellVarContext all + + #Verify the uninstaller - last chance to back out + MessageBox MB_OKCANCEL "Permanantly remove ${APPNAME}?" IDOK next + Abort + next: + !insertmacro VerifyUserIsAdmin +functionEnd + +section "uninstall" + + # Remove Start Menu launcher + delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" + # Try to remove the Start Menu folder - this will only happen if it is empty + rmDir "$SMPROGRAMS\${COMPANYNAME}" + + # Remove files + delete $INSTDIR\bin\CrossLangDevStudio.exe + delete $INSTDIR\crosslang.ico + + delete $INSTDIR\bin\av_libglesv2.dll + delete $INSTDIR\bin\libHarfBuzzSharp.dll + delete $INSTDIR\bin\libSkiaSharp.dll + delete $INSTDIR\bin\crosslang.exe + + # Always delete uninstaller as the last action + delete $INSTDIR\uninstall.exe + delete $INSTDIR\share\Tesses\CrossLang\Tesses.CrossLang.ShellPackage-1.0.0.0-prod.crvm + rmDir "$INSTDIR\share\Tesses\CrossLang" + rmDir "$INSTDIR\share\Tesses" + rmDir "$INSTDIR\bin" + rmDir "$INSTDIR\share" + + + + # Try to remove the install directory - this will only happen if it is empty + rmDir $INSTDIR + + # Remove uninstaller information from the registry + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" +sectionEnd \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..25faf55 --- /dev/null +++ b/Program.cs @@ -0,0 +1,21 @@ +using Avalonia; +using System; + +namespace CrossLangDevStudio; + +sealed class Program +{ + // Initialization code. Don't use any Avalonia, third-party APIs or any + // SynchronizationContext-reliant code before AppMain is called: things aren't initialized + // yet and stuff might break. + [STAThread] + public static void Main(string[] args) => BuildAvaloniaApp() + .StartWithClassicDesktopLifetime(args); + + // Avalonia configuration, don't remove; also used by visual designer. + public static AppBuilder BuildAvaloniaApp() + => AppBuilder.Configure() + .UsePlatformDetect() + .WithInterFont() + .LogToTrace(); +} diff --git a/ViewLocator.cs b/ViewLocator.cs new file mode 100644 index 0000000..70a9738 --- /dev/null +++ b/ViewLocator.cs @@ -0,0 +1,31 @@ +using System; +using Avalonia.Controls; +using Avalonia.Controls.Templates; +using CrossLangDevStudio.ViewModels; + +namespace CrossLangDevStudio; + +public class ViewLocator : IDataTemplate +{ + + public Control? Build(object? param) + { + if (param is null) + return null; + + var name = param.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal); + var type = Type.GetType(name); + + if (type != null) + { + return (Control)Activator.CreateInstance(type)!; + } + + return new TextBlock { Text = "Not Found: " + name }; + } + + public bool Match(object? data) + { + return data is ViewModelBase; + } +} diff --git a/ViewModels/FileEditorViewModel.cs b/ViewModels/FileEditorViewModel.cs new file mode 100644 index 0000000..6e3c52a --- /dev/null +++ b/ViewModels/FileEditorViewModel.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.ObjectModel; +using System.IO; +using System.Threading.Tasks; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Platform.Storage; + +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; +using CrossLangDevStudio.Messages; +using CrossLangDevStudio.Views; + +namespace CrossLangDevStudio.ViewModels; + +public partial class FileEditorViewModel : ViewModelBase, ISavable +{ + TabItemViewModel tab; + public string FilePath { get; } + bool _modified = false; + private bool Modified + { + get => _modified; + set + { + _modified = value; + + if (value) + { + tab.Header = $"{Path.GetFileName(FilePath)}*"; + } + else + { + tab.Header = Path.GetFileName(FilePath); + } + } + } + + private string _text = ""; + + public string Text + { + get => _text; + set + { + + Modified = true; + this.SetProperty(ref _text, value, nameof(Text)); + } + } + + public FileEditorViewModel(string path,TabItemViewModel tab) + { + this.tab = tab; + FilePath = path; + _text = File.ReadAllText(path); + } + + public void Save() + { + File.WriteAllText(FilePath, Text); + Modified = false; + } +} \ No newline at end of file diff --git a/ViewModels/ISavable.cs b/ViewModels/ISavable.cs new file mode 100644 index 0000000..0335067 --- /dev/null +++ b/ViewModels/ISavable.cs @@ -0,0 +1,5 @@ +namespace CrossLangDevStudio.ViewModels; +interface ISavable +{ + void Save(); +} \ No newline at end of file diff --git a/ViewModels/MainWindowViewModel.cs b/ViewModels/MainWindowViewModel.cs new file mode 100644 index 0000000..714480b --- /dev/null +++ b/ViewModels/MainWindowViewModel.cs @@ -0,0 +1,409 @@ +using System; +using System.Collections.ObjectModel; +using System.IO; +using System.Net.Http; +using System.Threading.Tasks; +using Avalonia.Controls; +using Avalonia.Platform.Storage; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; +using CrossLangDevStudio.Messages; +using CrossLangDevStudio.Models; +using CrossLangDevStudio.Views; + +namespace CrossLangDevStudio.ViewModels; + +public partial class MainWindowViewModel : ViewModelBase +{ + + public HttpClient Client { get; set; } = new(); + public string CurrentProject { get; set; } = ""; + public Func NewItemFactory => AddItem; + + + public ObservableCollection TabItems { get; } = new(); + public ObservableCollection ProjectFiles { get; } = new ObservableCollection(); + + public EventHandler? Closed { get; } = null; + + public TabItemViewModel WelcomePage + { + get + { + return new TabItemViewModel() + { + Header = "Welcome", + Body = new WelcomeViewModel(this) + }; + } + } + private ProjectFileNode? _selectedProjectFile = null; + + public ProjectFileNode? SelectedProjectFile + { + get => _selectedProjectFile; + set + { + _selectedProjectFile = value; + value?.Click?.Invoke(); + } + } + + + public MainWindowViewModel(string[] args) + { + if (args.Length == 1) + { + LoadProject(args[0]); + } + if (string.IsNullOrWhiteSpace(CurrentProject)) + this.TabItems.Add(WelcomePage); + } + + + private object AddItem() + { + var tab = new TabItemViewModel + { + Header = "New Tab", + + }; + if (Directory.Exists(CurrentProject)) + { + var newTabItem = new NewTabViewModel(this, tab); + tab.Body = newTabItem; + } + + + + return tab; + } + + internal void LoadProject(string obj) + { + if (!File.Exists(Path.Combine(obj, "cross.json"))) + { + return; + } + CrossLangShell.EnsureRecent(obj); + CurrentProject = obj.TrimEnd(Path.DirectorySeparatorChar); + Refresh(CurrentProject); + } + [RelayCommand] + public void RefreshListing() + { + if (!File.Exists(Path.Combine(CurrentProject, "cross.json"))) + { + return; + } + Refresh(CurrentProject); + } + + private void Refresh(string obj) + { + + + + for (int i = 0; i < TabItems.Count; i++) + { + if (TabItems[i].Body is WelcomeViewModel) + { + TabItems.RemoveAt(i); + i--; + } + + } + + ObservableCollection entries = new ObservableCollection + { + new ProjectFileNode("Project",[ + new ProjectFileNode("Configuration",()=>{ + + OpenProjectConfig(); + }), + new ProjectFileNode("Packages") + ]) + + }; + + void Itterate(ObservableCollection nodes, string dir) + { + + foreach (var item in Directory.EnumerateDirectories(dir)) + { + ObservableCollection files = new(); + Itterate(files, item); + var pfn = new ProjectFileNode(Path.GetFileName(item), files); + nodes.Add(pfn); + } + foreach (var item in Directory.EnumerateFiles(dir)) + { + nodes.Add(new ProjectFileNode(Path.GetFileName(item), () => + { + OpenFile(item); + })); + } + + } + Itterate(entries, obj); + ProjectFiles.Clear(); + ProjectFiles.Add(new ProjectFileNode(Path.GetFileName(obj), entries)); + } + + private void OpenProjectConfig() + { + + if (Directory.Exists(CurrentProject)) + { + var config = Path.Combine(CurrentProject, "cross.json"); + foreach (var item in TabItems) + { + if (item.Body is ProjectConfigurationViewModel model && model.FilePath == config) + { + return; + } + } + TabItemViewModel vm = new TabItemViewModel(); + vm.Header = "Project Configuration"; + var pcm = new ProjectConfigurationViewModel(config, vm); + + vm.Body = pcm; + + AddTab(vm); + } + } + + static string[] FILE_EXTS = new string[]{ + ".tcross", + ".json", + ".txt", + ".cpp", + ".hpp", + ".html", + ".css", + ".webmanifest", + ".cs", + ".c", + ".h", + ".xml", + ".xaml", + ".js", + ".jsx", + ".ts", + ".tsx", + ".gitignore", + ".svg" + }; + + public void OpenFile(string path) + { + bool isValid = false; + foreach (var item in FILE_EXTS) + { + if (Path.GetExtension(path).ToLower() == item) + isValid = true; + } + if (!isValid) return; + + foreach (var item in TabItems) + { + if (item.Body is FileEditorViewModel model) + { + if (model.FilePath == path) + { + SelectedTab = item; + return; + } + } + } + var tab = new TabItemViewModel + { + Header = Path.GetFileName(path), + + }; + tab.Body = new FileEditorViewModel(path,tab); + AddTab(tab); + } + + [ObservableProperty] + private TabItemViewModel? _selectedTab = null; + private void AddTab(TabItemViewModel item) + { + TabItems.Add(item); + SelectedTab = item; + + } + [RelayCommand] + public async Task NewProjectAsync() + { + var res = await WeakReferenceMessenger.Default.Send(new NewProjectMessage()); + if (!string.IsNullOrWhiteSpace(res)) + { + LoadProject(res); + } + } + [RelayCommand] + public async Task OpenProjectAsync() + { + var opts = new FolderPickerOpenOptions(); + opts.AllowMultiple = false; + opts.Title = "Open Project"; + + var window = await WeakReferenceMessenger.Default.Send(new GetWindowMessage()); + opts.SuggestedStartLocation = await window.StorageProvider.TryGetFolderFromPathAsync(CrossLangShell.Settings.ProjectDirectory) ?? null; + var res = await window.StorageProvider.OpenFolderPickerAsync(opts); + if (res.Count == 1) + { + var url = res[0].TryGetLocalPath(); + if (!string.IsNullOrWhiteSpace(url)) + { + LoadProject(url); + } + } + } + + [RelayCommand] + private void OpenProjectInFileManager() + { + if (Directory.Exists(CurrentProject)) + { + CrossLangShell.OpenFolderInFileManager(CurrentProject); + } + } + [RelayCommand] + private void OpenProjectInTerminal() + { + if (Directory.Exists(CurrentProject)) + { + CrossLangShell.OpenTerminalInFolder(CurrentProject); + } + } + [RelayCommand] + private void BuildAndRun() + { + SaveAll(); + if (Directory.Exists(CurrentProject)) + { + CrossLangShell.RunProjectInFolder(CurrentProject); + } + } + [RelayCommand] + private void Build() + { + SaveAll(); + if (Directory.Exists(CurrentProject)) + { + CrossLangShell.BuildProjectInFolder(CurrentProject); + } + } + + [RelayCommand] + private void Save() + { + SelectedTab?.Save(); + } + [RelayCommand] + private void SaveAll() + { + foreach (var tab in TabItems) + { + tab.Save(); + } + } +} + +public partial class NewTabViewModel : ViewModelBase +{ + private MainWindowViewModel mainWindowViewModel; + private TabItemViewModel tab; + + public NewTabViewModel(MainWindowViewModel mainWindowViewModel, TabItemViewModel tab) + { + this.mainWindowViewModel = mainWindowViewModel; + this.tab = tab; + } + + [ObservableProperty] + private string _filePath = "src/"; + + [ObservableProperty] + private decimal _progress = 0; + + [ObservableProperty] + private string _url = ""; + + [RelayCommand] + private void CreateDirectory() + { + if (!string.IsNullOrWhiteSpace(FilePath)) + { + Directory.CreateDirectory(Path.Combine(mainWindowViewModel.CurrentProject, FilePath)); + mainWindowViewModel.RefreshListing(); + mainWindowViewModel.TabItems.Remove(tab); + } + } + [RelayCommand] + private void CreateFile() + { + if (!string.IsNullOrWhiteSpace(FilePath)) + { + var path = Path.Combine(mainWindowViewModel.CurrentProject, FilePath); + File.WriteAllText(path, ""); + mainWindowViewModel.RefreshListing(); + mainWindowViewModel.TabItems.Remove(tab); + mainWindowViewModel.OpenFile(path); + } + } + + [RelayCommand] + private async Task DownloadFileAsync() + { + try + { + using var destStrm = File.Create(Path.Combine(mainWindowViewModel.CurrentProject, FilePath)); + var res = await mainWindowViewModel.Client.GetAsync(Url); + long length = 0; + long offset = 0; + Progress = 0; + if (res.IsSuccessStatusCode) + { + if (res.Content.Headers.ContentLength.HasValue) + { + length = res.Content.Headers.ContentLength.Value; + byte[] array = new byte[1024]; + int read = 0; + using var src = await res.Content.ReadAsStreamAsync(); + do + { + read = await src.ReadAsync(array); + await destStrm.WriteAsync(array, 0, read); + offset += read; + if (length > 0) + { + Progress = (decimal)offset / (decimal)length; + } + + } while (read != 0); + } + else + { + await res.Content.CopyToAsync(destStrm); + } + Progress = 1; + mainWindowViewModel.RefreshListing(); + mainWindowViewModel.TabItems.Remove(tab); + } + else + { + throw new Exception(); + } + } + catch (Exception) + { + File.Delete(FilePath); + this.Url = $"FAILED: {this.Url}"; + } + + } +} \ No newline at end of file diff --git a/ViewModels/NewProjectDialogViewModel.cs b/ViewModels/NewProjectDialogViewModel.cs new file mode 100644 index 0000000..1d1a076 --- /dev/null +++ b/ViewModels/NewProjectDialogViewModel.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.ObjectModel; +using System.IO; +using Avalonia.Markup.Xaml.Templates; +using Avalonia.Media; +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; +using CrossLangDevStudio.Messages; +using CrossLangDevStudio.Views; + +namespace CrossLangDevStudio.ViewModels; + +public partial class NewProjectDialogViewModel : ViewModelBase +{ + public ObservableCollection CrossLangTemplates { get; set; } = new ObservableCollection(); + bool updated = false; + string _name = ""; + public string Name + { + get + { + return _name; + } + set + { + updated = true; + SetProperty(ref _name, value, nameof(Name)); + } + } + + private void SelectProjectType(string name) + { + + + if (!updated) + { + var newName = name.Replace(" ", ""); + int i; + for (i = 1; i < int.MaxValue; i++) + { + string name2 = $"{name}{i}"; + if (!Directory.Exists(Path.Combine(ParentDirectory, name2))) + { + Name = name2; + updated = false; + break; + } + } + } + } + + [ObservableProperty] + private string _parentDirectory = CrossLangShell.Settings.ProjectDirectory; + CrossLangTemplate? _template = null; + public CrossLangTemplate? SelectedTemplate + { + get + { + return _template; + } + set + { + SetProperty(ref _template, value, nameof(SelectedTemplate)); + if (value is not null) + { + SelectProjectType(value.Name); + } + } + } + + public NewProjectDialogViewModel() + { + foreach (var item in Directory.EnumerateFiles(Path.Combine(CrossLangShell.CrossLangConfigDirectory, "Templates"), "*.crvm")) + { + CrossLangFile file = new CrossLangFile(); + try + { + file.Load(item); + CrossLangTemplates.Add(new CrossLangTemplate(Path.GetFileNameWithoutExtension(item), file)); + } + catch (Exception ex) + { + Console.WriteLine(ex); + } + } + } + + [RelayCommand] + private void OK() + { + if (_template is not null && !string.IsNullOrWhiteSpace(Name) && !string.IsNullOrWhiteSpace(ParentDirectory)) + { + var path = Path.Combine(ParentDirectory, Name); + Directory.CreateDirectory(path); + if (CrossLangShell.CreateProject(_template.TemplateName, path)) + { + WeakReferenceMessenger.Default.Send(new NewProjectCloseMessage(path)); + } + + } + } + [RelayCommand] + private void Cancel() + { + WeakReferenceMessenger.Default.Send(new NewProjectCloseMessage(null)); + } +} + +public partial class CrossLangTemplate(string name,CrossLangFile file) : ObservableObject +{ + + [ObservableProperty] + private string _name = file.GetTemplatePrettyName(); + [ObservableProperty] + private IImage _icon = file.GetIcon(64); + + public string TemplateName = name; + +} \ No newline at end of file diff --git a/ViewModels/ProjectConfigurationViewModel.cs b/ViewModels/ProjectConfigurationViewModel.cs new file mode 100644 index 0000000..8f75f5b --- /dev/null +++ b/ViewModels/ProjectConfigurationViewModel.cs @@ -0,0 +1,220 @@ +using System; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Avalonia; +using Avalonia.Platform.Storage; + +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; +using CrossLangDevStudio.Messages; +using CrossLangDevStudio.Views; +using Newtonsoft.Json; + +namespace CrossLangDevStudio.ViewModels; + +public partial class ProjectConfigurationViewModel : ViewModelBase, ISavable +{ + /* + Console Application + Library + Web Application + Template + Compile Tool + Tool + Archive + */ + static readonly string[] types = ["console","lib","app","template","compile_tool","tool","archive"]; + TabItemViewModel tab; + public string FilePath { get; } + bool _modified = false; + private bool Modified + { + get => _modified; + set + { + _modified = value; + + if (value) + { + tab.Header = $"Project Configuration*"; + } + else + { + tab.Header = "Project Configuration"; + } + } + } + + string _name; + string _version; + string _icon; + string _maintainer; + string _repository; + string _homepage; + + string _license; + + string _templatename; + string _templatenamepretty; + + string _description; + + int _type; + + + public string Name + { + get => _name; + set + { + Modified = true; + SetProperty(ref _name, value, nameof(Name)); + } + } + public string Version + { + get => _version; + set + { + Modified = true; + SetProperty(ref _version, value, nameof(Version)); + } + } + + public string Icon + { + get => _icon; + set + { + Modified = true; + SetProperty(ref _icon, value, nameof(Icon)); + } + } + public string Maintainer + { + get => _maintainer; + set + { + Modified = true; + SetProperty(ref _maintainer, value, nameof(Maintainer)); + } + } + public string Homepage + { + get => _homepage; + set + { + Modified = true; + SetProperty(ref _homepage, value, nameof(Homepage)); + } + } + public string Repository + { + get => _repository; + set + { + Modified = true; + SetProperty(ref _repository, value, nameof(Repository)); + } + } + + public string License + { + get => _license; + set + { + Modified = true; + SetProperty(ref _license, value, nameof(License)); + } + } + + public string TemplateName + { + get => _templatename; + set + { + Modified = true; + SetProperty(ref _templatename, value, nameof(TemplateName)); + } + } + public string TemplateNamePretty + { + get => _templatenamepretty; + set + { + Modified = true; + SetProperty(ref _templatenamepretty, value, nameof(TemplateNamePretty)); + } + } + public string Description + { + get => _description; + set + { + Modified = true; + SetProperty(ref _description, value, nameof(Description)); + } + } + + public int Type + { + get => _type; + set + { + Modified = true; + SetProperty(ref _type, value, nameof(Type)); + } + } + + public ProjectConfigurationViewModel(string configPath, TabItemViewModel tab) + { + FilePath = configPath; + this.tab = tab; + + + var config = JsonConvert.DeserializeObject(File.ReadAllText(configPath)); + + _name = config?.Name ?? ""; + _version = config?.Version.ToString() ?? "1.0.0.0-dev"; + _icon = config?.Icon ?? ""; + _repository = config?.Info?.Repoository ?? ""; + _homepage = config?.Info?.HomePage ?? ""; + _maintainer = config?.Info?.Maintainer ?? ""; + _license = config?.Info?.License ?? ""; + _templatename = config?.Info?.TemplateName ?? ""; + _templatenamepretty = config?.Info?.TemplateNamePretty ?? ""; + _type = Array.IndexOf(types, config?.Info?.Type ?? "console"); + _type = _type == -1 ? 0 : _type; + _description = config?.Info?.Description ?? ""; + + } + [RelayCommand] + + public void Save() + { + var config = JsonConvert.DeserializeObject(File.ReadAllText(FilePath)) ?? new CrossLangConfig(); + config.Name = Name; + if (CrossLangVersion.TryParse(Version, out var vers)) + { + config.Version = vers; + } + config.Icon = string.IsNullOrWhiteSpace(Icon) ? null : Icon; + + config.Info.Description = string.IsNullOrWhiteSpace(Description) ? null : Description; + config.Info.HomePage = string.IsNullOrWhiteSpace(Homepage) ? null : Homepage; + config.Info.License = string.IsNullOrWhiteSpace(License) ? null : License; + config.Info.Maintainer = string.IsNullOrWhiteSpace(Maintainer) ? null : Maintainer; + config.Info.Repoository = string.IsNullOrWhiteSpace(Repository) ? null : Repository; + config.Info.TemplateName = string.IsNullOrWhiteSpace(TemplateName) ? null : TemplateName; + config.Info.TemplateNamePretty = string.IsNullOrWhiteSpace(TemplateNamePretty) ? null : TemplateNamePretty; + config.Info.Type = types[Type]; + File.WriteAllText(FilePath, JsonConvert.SerializeObject(config, Formatting.Indented, new JsonSerializerSettings() + { + NullValueHandling = NullValueHandling.Ignore + })); + Modified = false; + } +} \ No newline at end of file diff --git a/ViewModels/TabItemViewModel.cs b/ViewModels/TabItemViewModel.cs new file mode 100644 index 0000000..21521fc --- /dev/null +++ b/ViewModels/TabItemViewModel.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.ObjectModel; +using CommunityToolkit.Mvvm.ComponentModel; + +namespace CrossLangDevStudio.ViewModels; + +public partial class TabItemViewModel : ObservableObject +{ + [ObservableProperty] + private string _header = ""; + + public ViewModelBase? Body { get; set; } + + + public override string ToString() => Header; + + public void Save() + { + if (Body is ISavable savable) + { + savable.Save(); + } + } +} \ No newline at end of file diff --git a/ViewModels/ViewModelBase.cs b/ViewModels/ViewModelBase.cs new file mode 100644 index 0000000..1fbcbc9 --- /dev/null +++ b/ViewModels/ViewModelBase.cs @@ -0,0 +1,7 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +namespace CrossLangDevStudio.ViewModels; + +public class ViewModelBase : ObservableObject +{ +} diff --git a/ViewModels/WelcomeViewModel.cs b/ViewModels/WelcomeViewModel.cs new file mode 100644 index 0000000..c979814 --- /dev/null +++ b/ViewModels/WelcomeViewModel.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.ObjectModel; +using System.IO; +using System.Threading.Tasks; +using Avalonia; +using Avalonia.Platform.Storage; + +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; +using CrossLangDevStudio.Messages; +using CrossLangDevStudio.Views; + +namespace CrossLangDevStudio.ViewModels; + +public partial class WelcomeViewModel : ViewModelBase +{ + public MainWindowViewModel Main { get; } + public WelcomeViewModel(MainWindowViewModel main) + { + Main = main; + foreach (var proj in CrossLangShell.GetRecentProjects()) + { + RecentProjects.Add(new RecentProject(proj,Main.LoadProject)); + } + } + + + + public ObservableCollection RecentProjects { get; set; } = new ObservableCollection(); + + [RelayCommand] + private async Task NewProjectAsync() + { + await Main.NewProjectAsync(); + } + [RelayCommand] + private async Task OpenProjectAsync() + { + await Main.OpenProjectAsync(); + } +} + +public partial class RecentProject(string path, Action onProjectClicked) : ObservableObject +{ + public string ProjectPath { get; set; } = path; + + private string GetDir() + { + var projPath = ProjectPath; + var path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + if (projPath.StartsWith(path)) + { + projPath= projPath.Replace(path, "~"); + } + return projPath; + } + + + public string Name => $"{Path.GetFileName(ProjectPath)} ({GetDir()})"; + [RelayCommand] + private void Click() + { + onProjectClicked(ProjectPath); + } +} \ No newline at end of file diff --git a/Views/FileEditorView.axaml b/Views/FileEditorView.axaml new file mode 100644 index 0000000..4a799e2 --- /dev/null +++ b/Views/FileEditorView.axaml @@ -0,0 +1,17 @@ + + + + + + + + + \ No newline at end of file diff --git a/Views/FileEditorView.axaml.cs b/Views/FileEditorView.axaml.cs new file mode 100644 index 0000000..2312b5b --- /dev/null +++ b/Views/FileEditorView.axaml.cs @@ -0,0 +1,12 @@ +using Avalonia.Controls; +using CrossLangDevStudio.ViewModels; + +namespace CrossLangDevStudio.Views; + +public partial class FileEditorView : UserControl +{ + public FileEditorView() + { + InitializeComponent(); + } +} \ No newline at end of file diff --git a/Views/MainWindow.axaml b/Views/MainWindow.axaml new file mode 100644 index 0000000..1f16f10 --- /dev/null +++ b/Views/MainWindow.axaml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Views/MainWindow.axaml.cs b/Views/MainWindow.axaml.cs new file mode 100644 index 0000000..5905c2c --- /dev/null +++ b/Views/MainWindow.axaml.cs @@ -0,0 +1,38 @@ +using System.Threading.Tasks; +using Avalonia; +using Avalonia.Controls; +using Avalonia.Platform.Storage; +using CommunityToolkit.Mvvm.Messaging; +using CrossLangDevStudio.Messages; +using CrossLangDevStudio.ViewModels; + +namespace CrossLangDevStudio.Views; + +public partial class MainWindow : Window +{ + public MainWindow() + { + InitializeComponent(); + + if (Design.IsDesignMode) + return; + + // Whenever 'Send(new PurchaseAlbumMessage())' is called, invoke this callback on the MainWindow instance: + WeakReferenceMessenger.Default.Register(this, static (w, m) => + { + // Create an instance of MusicStoreWindow and set MusicStoreViewModel as its DataContext. + var dialog = new NewProjectDialog + { + DataContext = new NewProjectDialogViewModel() + }; + // Show dialog window and reply with returned AlbumViewModel or null when the dialog is closed. + m.Reply(dialog.ShowDialog(w)); + }); + WeakReferenceMessenger.Default.Register(this, static (w, m) => + { + m.Reply(w); + } + ); + + } +} \ No newline at end of file diff --git a/Views/NewProjectDialog.axaml b/Views/NewProjectDialog.axaml new file mode 100644 index 0000000..2b2a7d2 --- /dev/null +++ b/Views/NewProjectDialog.axaml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +