diff --git a/MsBox.Avalonia/MsBox.Avalonia.csproj b/MsBox.Avalonia/MsBox.Avalonia.csproj
index 3af730f..b6d9776 100644
--- a/MsBox.Avalonia/MsBox.Avalonia.csproj
+++ b/MsBox.Avalonia/MsBox.Avalonia.csproj
@@ -26,8 +26,8 @@
-
-
+
+
diff --git a/README.md b/README.md
index 8c611fd..dea0ca1 100644
--- a/README.md
+++ b/README.md
@@ -33,3 +33,5 @@ Have fun!
- Wishforge.games in CC Attribution License
- Yamatsum in MIT License
- Zest in MIT License
+ - Neuicons in MIT License via
+ - Dazzle Ui in CC Attribution License
diff --git a/ZXBSInstaller.Log/ServiceLayer.cs b/ZXBSInstaller.Log/ServiceLayer.cs
index a01c93c..7ec4fdc 100644
--- a/ZXBSInstaller.Log/ServiceLayer.cs
+++ b/ZXBSInstaller.Log/ServiceLayer.cs
@@ -1152,5 +1152,35 @@ private static void SetZXBSConfig()
#endregion
+
+ public static bool RunZXBasicStudio()
+ {
+ try
+ {
+ var fileName = Path.Combine(GeneralConfig.BasePath, "zxbs", "ZXBasicStudio.exe");
+ if (!File.Exists(fileName))
+ {
+ fileName = Path.Combine(GeneralConfig.BasePath, "zxbs", "ZXBasicStudio");
+ }
+ if (!File.Exists(fileName))
+ {
+ ServiceLayer.ShowMessage("ZX Basic Studio executable not found. Please check the installation.");
+ return false;
+ }
+ ProcessStartInfo psi = new ProcessStartInfo
+ {
+ FileName = fileName,
+ };
+ using Process process = new Process { StartInfo = psi };
+ process.Start();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ ServiceLayer.ShowMessage("Error launching ZX Basic Studio. Please check the installation.");
+ return false;
+ }
+ }
+
}
}
\ No newline at end of file
diff --git a/ZXBSInstaller.Log/ZXBSInstaller.Log.csproj b/ZXBSInstaller.Log/ZXBSInstaller.Log.csproj
index d01edc3..fa71b7a 100644
--- a/ZXBSInstaller.Log/ZXBSInstaller.Log.csproj
+++ b/ZXBSInstaller.Log/ZXBSInstaller.Log.csproj
@@ -6,20 +6,4 @@
enable
-
-
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
-
diff --git a/ZXBSInstaller/Assets/install.svg b/ZXBSInstaller/Assets/install.svg
new file mode 100644
index 0000000..42d3898
--- /dev/null
+++ b/ZXBSInstaller/Assets/install.svg
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/ZXBSInstaller/Assets/play.svg b/ZXBSInstaller/Assets/play.svg
new file mode 100644
index 0000000..9bd1648
--- /dev/null
+++ b/ZXBSInstaller/Assets/play.svg
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/ZXBSInstaller/Assets/refresh.svg b/ZXBSInstaller/Assets/refresh.svg
new file mode 100644
index 0000000..d1e03e8
--- /dev/null
+++ b/ZXBSInstaller/Assets/refresh.svg
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/ZXBSInstaller.Log/InstallerResources/zxbasic.png b/ZXBSInstaller/Assets/zxbasic.png
similarity index 100%
rename from ZXBSInstaller.Log/InstallerResources/zxbasic.png
rename to ZXBSInstaller/Assets/zxbasic.png
diff --git a/ZXBSInstaller.Log/InstallerResources/zxbs.png b/ZXBSInstaller/Assets/zxbs.png
similarity index 100%
rename from ZXBSInstaller.Log/InstallerResources/zxbs.png
rename to ZXBSInstaller/Assets/zxbs.png
diff --git a/ZXBSInstaller.Log/InstallerResources/zxbsinstaller.png b/ZXBSInstaller/Assets/zxbsinstaller.png
similarity index 100%
rename from ZXBSInstaller.Log/InstallerResources/zxbsinstaller.png
rename to ZXBSInstaller/Assets/zxbsinstaller.png
diff --git a/ZXBSInstaller/Controls/MainControl.axaml b/ZXBSInstaller/Controls/MainControl.axaml
index 7d41231..c31b41e 100644
--- a/ZXBSInstaller/Controls/MainControl.axaml
+++ b/ZXBSInstaller/Controls/MainControl.axaml
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:svg="using:Avalonia.Svg.Skia"
mc:Ignorable="d" d:DesignWidth="1000" d:DesignHeight="600"
x:Class="ZXBSInstaller.Controls.MainControl">
@@ -36,10 +37,32 @@
-
-
+
+
+
+
+
+
+
+
+
diff --git a/ZXBSInstaller/Controls/MainControl.axaml.cs b/ZXBSInstaller/Controls/MainControl.axaml.cs
index 6628d8e..4c3b009 100644
--- a/ZXBSInstaller/Controls/MainControl.axaml.cs
+++ b/ZXBSInstaller/Controls/MainControl.axaml.cs
@@ -1,7 +1,9 @@
using Avalonia;
using Avalonia.Controls;
+using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
+using Avalonia.Media;
using Avalonia.Threading;
using Avalonia.VisualTree;
using MsBox.Avalonia;
@@ -22,7 +24,7 @@ namespace ZXBSInstaller.Controls;
public partial class MainControl : UserControl
{
private List toolItemControls = new List();
-
+ private static Brush Yellow = new SolidColorBrush(Colors.Yellow);
public MainControl()
{
@@ -103,7 +105,7 @@ private void GetExternalTools()
WindowStartupLocation = WindowStartupLocation.CenterOwner
});
box.ShowAsPopupAsync(this);
-
+
}
else
{
@@ -152,6 +154,7 @@ private void UpdateSummary()
{
pnlSummary.Children.Clear();
bool allUpToDate = true;
+ // Check for recommended updates/installs
foreach (var tool in toolItemControls)
{
if (tool.IsSelected)
@@ -177,6 +180,48 @@ private void UpdateSummary()
tb.Text = "All tools are up to date.";
pnlSummary.Children.Add(tb);
}
+
+ // Separator
+ {
+ var separator = new Separator()
+ {
+ Margin = new Thickness(0, 10, 0, 10)
+ };
+ pnlSummary.Children.Add(separator);
+ }
+
+ // Show tools tree
+ {
+ pnlSummary.Children.Add(new TextBlock()
+ {
+ Text = "Base path:",
+ Foreground = Yellow
+ });
+ pnlSummary.Children.Add(new TextBlock()
+ {
+ Text = ServiceLayer.GeneralConfig.BasePath,
+ Margin = new Thickness(10, 4, 0, 0)
+ });
+ }
+ foreach (var tool in toolItemControls)
+ {
+ var tb = new TextBlock();
+ tb.TextWrapping = Avalonia.Media.TextWrapping.Wrap;
+ if (tool.ExternalTool.InstalledVersion != null)
+ {
+ pnlSummary.Children.Add(new TextBlock()
+ {
+ Text = tool.ExternalTool.Name + ":",
+ Margin = new Thickness(0, 8, 0, 0),
+ Foreground = Yellow
+ });
+ pnlSummary.Children.Add(new TextBlock()
+ {
+ Text = System.IO.Path.Combine(ServiceLayer.GeneralConfig.BasePath, tool.ExternalTool.Id),
+ Margin = new Thickness(10, 4, 0, 0)
+ });
+ }
+ }
});
}
@@ -289,7 +334,7 @@ private void ShowVersions(string id)
pnlVersions.Children.Add(btn);
}
- var versionControlHeader = new VersionControl(null, null,Command_Received);
+ var versionControlHeader = new VersionControl(null, null, Command_Received);
pnlVersions.Children.Add(versionControlHeader);
foreach (var version in tool.Versions)
{
@@ -324,4 +369,21 @@ private void Versions_Close(object? sender, RoutedEventArgs e)
mainVersions.IsVisible = false;
});
}
+
+ private void btnPlayZXBS_Click(object? sender, RoutedEventArgs e)
+ {
+ if (ServiceLayer.RunZXBasicStudio())
+ {
+ if (App.Current?.ApplicationLifetime
+ is IClassicDesktopStyleApplicationLifetime desktop)
+ {
+ desktop.Shutdown();
+ }
+ }
+ }
+
+ private void btnRefresh_Click(object? sender, RoutedEventArgs e)
+ {
+ new Thread(GetExternalTools).Start();
+ }
}
\ No newline at end of file
diff --git a/ZXBSInstaller/Controls/ToolItemControl.axaml.cs b/ZXBSInstaller/Controls/ToolItemControl.axaml.cs
index ea281da..392cbcb 100644
--- a/ZXBSInstaller/Controls/ToolItemControl.axaml.cs
+++ b/ZXBSInstaller/Controls/ToolItemControl.axaml.cs
@@ -25,7 +25,7 @@ public ToolItemControl(ExternalTool tool, Action callBackCommand
ExternalTool = tool;
Command = callBackCommand;
- UITools.ShowImage($"InstallerResources/{ExternalTool.Id}.png", imgIcon);
+ UITools.ShowImage($"{ExternalTool.Id}.png", imgIcon);
txtName.Text = tool.Name;
txtDescription.Text = tool.Description;
txtPath.Text = "Path: " + tool.LocalPath;
diff --git a/ZXBSInstaller/UITools.cs b/ZXBSInstaller/UITools.cs
index 3b629c0..becc9ae 100644
--- a/ZXBSInstaller/UITools.cs
+++ b/ZXBSInstaller/UITools.cs
@@ -1,5 +1,6 @@
using Avalonia.Controls;
using Avalonia.Media.Imaging;
+using Avalonia.Platform;
using System;
using System.Collections.Generic;
using System.IO;
@@ -15,8 +16,10 @@ public static void ShowImage(string fileName, Image imgControl)
{
try
{
- using var stream = File.OpenRead(fileName);
- imgControl.Source = new Bitmap(stream);
+ var uri= new Uri($"avares://ZXBSInstaller/Assets/{fileName}");
+ var asset=AssetLoader.Open(uri);
+ var bitmap=new Bitmap(asset);
+ imgControl.Source = bitmap;
}
catch (Exception ex)
{
diff --git a/ZXBSInstaller/ZXBSInstaller.csproj b/ZXBSInstaller/ZXBSInstaller.csproj
index df1fe4c..1362c0b 100644
--- a/ZXBSInstaller/ZXBSInstaller.csproj
+++ b/ZXBSInstaller/ZXBSInstaller.csproj
@@ -6,25 +6,43 @@
app.manifest
true
zxbs.ico
- 0.0.1.6
+ 0.0.1.7
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ Never
+
+
+ PreserveNewest
+
-
-
-
-
+
+
+
+
-
+
None
All
+
diff --git a/ZXBStudio/ZXBasicStudio.csproj b/ZXBStudio/ZXBasicStudio.csproj
index 6311d3a..d3fb0ec 100644
--- a/ZXBStudio/ZXBasicStudio.csproj
+++ b/ZXBStudio/ZXBasicStudio.csproj
@@ -563,13 +563,13 @@
-
-
-
-
+
+
+
+
-
-
+
+
diff --git a/ZXBasicStudioTest/ZXBasicStudioTest.csproj b/ZXBasicStudioTest/ZXBasicStudioTest.csproj
index e81da67..9b37b01 100644
--- a/ZXBasicStudioTest/ZXBasicStudioTest.csproj
+++ b/ZXBasicStudioTest/ZXBasicStudioTest.csproj
@@ -10,7 +10,7 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive