From 274b43aad2a6247c075bce620490b6b4c559ddf6 Mon Sep 17 00:00:00 2001 From: voytas Date: Tue, 10 Feb 2026 19:45:56 +0000 Subject: [PATCH 01/26] Add "Favourites" menu and initial implementation of FavoritesView --- src/Spectron/Controls/MainMenu.axaml | 5 +++++ src/Spectron/Messages/ShowFavoritesViewMessage.cs | 3 +++ src/Spectron/ViewModels/FavoritesViewModel.cs | 5 +++++ .../ViewModels/MainWindowViewModel.Dialogs.cs | 3 +++ src/Spectron/ViewModels/MainWindowViewModel.cs | 4 ++++ src/Spectron/Views/FavoritesView.axaml | 12 ++++++++++++ src/Spectron/Views/FavoritesView.axaml.cs | 8 ++++++++ src/Spectron/Views/MainWindow.axaml.cs | 3 +++ 8 files changed, 43 insertions(+) create mode 100644 src/Spectron/Messages/ShowFavoritesViewMessage.cs create mode 100644 src/Spectron/ViewModels/FavoritesViewModel.cs create mode 100644 src/Spectron/Views/FavoritesView.axaml create mode 100644 src/Spectron/Views/FavoritesView.axaml.cs diff --git a/src/Spectron/Controls/MainMenu.axaml b/src/Spectron/Controls/MainMenu.axaml index 1ca9555..e1460ef 100644 --- a/src/Spectron/Controls/MainMenu.axaml +++ b/src/Spectron/Controls/MainMenu.axaml @@ -128,6 +128,11 @@ + + + + + diff --git a/src/Spectron/Messages/ShowFavoritesViewMessage.cs b/src/Spectron/Messages/ShowFavoritesViewMessage.cs new file mode 100644 index 0000000..797dd11 --- /dev/null +++ b/src/Spectron/Messages/ShowFavoritesViewMessage.cs @@ -0,0 +1,3 @@ +namespace OldBit.Spectron.Messages; + +public record ShowFavoritesViewMessage(); \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs new file mode 100644 index 0000000..92b3763 --- /dev/null +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -0,0 +1,5 @@ +namespace OldBit.Spectron.ViewModels; + +public class FavoritesViewModel +{ +} \ No newline at end of file diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs b/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs index 488f4b0..bb07fb0 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs @@ -136,4 +136,7 @@ private void OpenTrainersWindow() => private void OpenPrintOutputViewer() => WeakReferenceMessenger.Default.Send(new ShowPrintOutputViewMessage(Emulator!.Printer)); + + private void OpenFavoritesWindow() => + WeakReferenceMessenger.Default.Send(new ShowFavoritesViewMessage()); } \ No newline at end of file diff --git a/src/Spectron/ViewModels/MainWindowViewModel.cs b/src/Spectron/ViewModels/MainWindowViewModel.cs index bc12acd..4cd1201 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.cs @@ -279,6 +279,10 @@ private async Task TakeScreenshot() [RelayCommand] private void ShowPrintOutput() => OpenPrintOutputViewer(); + // Favorites + [RelayCommand] + private void ShowFavoritesView() => OpenFavoritesWindow(); + // Tape [RelayCommand] private void SetTapeLoadSpeed(TapeSpeed tapeSpeed) => HandleSetTapeLoadingSpeed(tapeSpeed); diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml new file mode 100644 index 0000000..354a221 --- /dev/null +++ b/src/Spectron/Views/FavoritesView.axaml @@ -0,0 +1,12 @@ + + + + + diff --git a/src/Spectron/Views/FavoritesView.axaml.cs b/src/Spectron/Views/FavoritesView.axaml.cs new file mode 100644 index 0000000..1f886fa --- /dev/null +++ b/src/Spectron/Views/FavoritesView.axaml.cs @@ -0,0 +1,8 @@ +using Avalonia.Controls; + +namespace OldBit.Spectron.Views; + +public partial class FavoritesView : Window +{ + public FavoritesView() => InitializeComponent(); +} \ No newline at end of file diff --git a/src/Spectron/Views/MainWindow.axaml.cs b/src/Spectron/Views/MainWindow.axaml.cs index ce04d94..be8a283 100644 --- a/src/Spectron/Views/MainWindow.axaml.cs +++ b/src/Spectron/Views/MainWindow.axaml.cs @@ -33,6 +33,9 @@ public MainWindow() WeakReferenceMessenger.Default.Register(this, (window, m) => Show(window, m.ViewModel!)); + WeakReferenceMessenger.Default.Register(this, (window, m) => + Show(window, new FavoritesViewModel())); + WeakReferenceMessenger.Default.Register(this, (window, m) => Show(window, m.ViewModel)); From 7410a29bbb4819e3d0c40abb43eb9cabfb31c440 Mon Sep 17 00:00:00 2001 From: voytas Date: Wed, 11 Feb 2026 22:06:40 +0000 Subject: [PATCH 02/26] Favourites work in progress --- .../ViewModels/FavoriteItemViewModel.cs | 31 ++++++++ src/Spectron/ViewModels/FavoritesViewModel.cs | 36 +++++++++- src/Spectron/ViewModels/Observable.cs | 10 ++- src/Spectron/Views/FavoritesView.axaml | 70 ++++++++++++++++++- 4 files changed, 139 insertions(+), 8 deletions(-) create mode 100644 src/Spectron/ViewModels/FavoriteItemViewModel.cs diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs new file mode 100644 index 0000000..52b5dfe --- /dev/null +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -0,0 +1,31 @@ +using System.Collections.ObjectModel; +using CommunityToolkit.Mvvm.ComponentModel; + +namespace OldBit.Spectron.ViewModels; + +public partial class FavoriteItemViewModel : ObservableObject +{ + public ObservableCollection? Nodes { get; } + + [ObservableProperty] + private string _title; + + [ObservableProperty] + private bool _isFolder; + + [ObservableProperty] + private bool _isRoot; + + public FavoriteItemViewModel(string title) + { + Title = title; + IsFolder = false; + } + + public FavoriteItemViewModel(string title, ObservableCollection nodes) + { + Title = title; + Nodes = nodes; + IsFolder = true; + } +} \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index 92b3763..dd938a8 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -1,5 +1,39 @@ +using System.Collections.ObjectModel; +using CommunityToolkit.Mvvm.ComponentModel; + namespace OldBit.Spectron.ViewModels; -public class FavoritesViewModel +public partial class FavoritesViewModel : ObservableObject { + [ObservableProperty] + private FavoriteItemViewModel? _selectedItem; + + public ObservableCollection Items { get; } + + public FavoritesViewModel() + { + Items = + [ + new FavoriteItemViewModel("Favorites", + [ + new FavoriteItemViewModel("Games", + [ + new FavoriteItemViewModel("Manic Miner"), + new FavoriteItemViewModel("The Prize"), + new FavoriteItemViewModel("Bruce Lee") + ]), + new FavoriteItemViewModel("Demos", + [ + new FavoriteItemViewModel("Demo 1"), + new FavoriteItemViewModel("Demo 2"), + new FavoriteItemViewModel("Demo 3") + ]), + new FavoriteItemViewModel("Some other item 1"), + new FavoriteItemViewModel("Some other item 2"), + ]), + ]; + + // var moth = Items.Last().SubNodes?.Last(); + // if (moth!=null) SelectedItems.Add(moth); + } } \ No newline at end of file diff --git a/src/Spectron/ViewModels/Observable.cs b/src/Spectron/ViewModels/Observable.cs index de6fcf1..af812b0 100644 --- a/src/Spectron/ViewModels/Observable.cs +++ b/src/Spectron/ViewModels/Observable.cs @@ -5,20 +5,18 @@ namespace OldBit.Spectron.ViewModels; public class Observable(T value) : INotifyPropertyChanged { - private T _value = value; - public T Value { - get => _value; + get; set { - if (!Equals(value, _value)) + if (!Equals(value, field)) { - _value = value; + field = value; OnPropertyChanged(); } } - } + } = value; public event PropertyChangedEventHandler? PropertyChanged; diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 354a221..ca8893e 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -2,11 +2,79 @@ 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:i="clr-namespace:Avalonia.Xaml.Interactivity;assembly=Avalonia.Xaml.Interactivity" + xmlns:material="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" + xmlns:viewModels="clr-namespace:OldBit.Spectron.ViewModels" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="OldBit.Spectron.Views.FavoritesView" + x:DataType="viewModels:FavoritesViewModel" WindowStartupLocation="CenterOwner" Title="Manage Favourites"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From db0b67bc75e3a461ee8ea797d31270f23655d1b5 Mon Sep 17 00:00:00 2001 From: voytas Date: Thu, 12 Feb 2026 18:06:45 +0000 Subject: [PATCH 03/26] Favorites work in progress --- src/Spectron/Controls/MainMenu.axaml | 3 +- src/Spectron/Controls/MainMenu.axaml.cs | 12 +- .../Messages/ShowFavoritesViewMessage.cs | 4 +- src/Spectron/Services/FavoritesService.cs | 11 ++ src/Spectron/Services/PreferencesService.cs | 2 +- .../Services/ServiceCollectionExtensions.cs | 1 + src/Spectron/Settings/FavoritePrograms.cs | 16 +++ src/Spectron/Settings/RecentFilesSettings.cs | 2 +- .../ViewModels/FavoriteItemViewModel.cs | 22 +--- src/Spectron/ViewModels/FavoritesViewModel.cs | 111 ++++++++++++++---- .../ViewModels/MainWindowViewModel.Dialogs.cs | 2 +- .../ViewModels/MainWindowViewModel.Window.cs | 26 ++++ .../ViewModels/MainWindowViewModel.cs | 6 + .../ViewModels/RecentFilesViewModel.cs | 12 +- .../ViewModels/ServiceCollectionExtensions.cs | 1 + src/Spectron/Views/FavoritesView.axaml | 34 ++++-- src/Spectron/Views/FavoritesView.axaml.cs | 79 +++++++++++++ src/Spectron/Views/MainWindow.axaml.cs | 6 +- 18 files changed, 282 insertions(+), 68 deletions(-) create mode 100644 src/Spectron/Services/FavoritesService.cs create mode 100644 src/Spectron/Settings/FavoritePrograms.cs diff --git a/src/Spectron/Controls/MainMenu.axaml b/src/Spectron/Controls/MainMenu.axaml index e1460ef..9d17426 100644 --- a/src/Spectron/Controls/MainMenu.axaml +++ b/src/Spectron/Controls/MainMenu.axaml @@ -128,9 +128,8 @@ - + - diff --git a/src/Spectron/Controls/MainMenu.axaml.cs b/src/Spectron/Controls/MainMenu.axaml.cs index 7d8122b..3cc7724 100644 --- a/src/Spectron/Controls/MainMenu.axaml.cs +++ b/src/Spectron/Controls/MainMenu.axaml.cs @@ -23,11 +23,21 @@ protected override void OnDataContextChanged(EventArgs e) private void RecentFilesSubmenuOpened(object? sender, RoutedEventArgs e) { - if (sender is not MenuItem menuItem) + if (sender is not MenuItem menuItem || !ReferenceEquals(sender, e.Source)) { return; } _viewModel?.RecentFilesViewModel.Opening(menuItem.Items); } + + private void FavoritesSubmenuOpened(object? sender, RoutedEventArgs e) + { + if (sender is not MenuItem menuItem || !ReferenceEquals(sender, e.Source)) + { + return; + } + + _viewModel?.FavoritesViewModel.Opening(menuItem.Items); + } } \ No newline at end of file diff --git a/src/Spectron/Messages/ShowFavoritesViewMessage.cs b/src/Spectron/Messages/ShowFavoritesViewMessage.cs index 797dd11..c3b609b 100644 --- a/src/Spectron/Messages/ShowFavoritesViewMessage.cs +++ b/src/Spectron/Messages/ShowFavoritesViewMessage.cs @@ -1,3 +1,5 @@ +using OldBit.Spectron.ViewModels; + namespace OldBit.Spectron.Messages; -public record ShowFavoritesViewMessage(); \ No newline at end of file +public record ShowFavoritesViewMessage(FavoritesViewModel ViewModel); \ No newline at end of file diff --git a/src/Spectron/Services/FavoritesService.cs b/src/Spectron/Services/FavoritesService.cs new file mode 100644 index 0000000..1647ffe --- /dev/null +++ b/src/Spectron/Services/FavoritesService.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using OldBit.Spectron.Settings; + +namespace OldBit.Spectron.Services; + +public class FavoritesService(ApplicationDataService applicationDataService) +{ + public async Task SaveAsync(FavoritePrograms favorites) => await applicationDataService.SaveAsync(favorites); + + public async Task LoadAsync() => await applicationDataService.LoadAsync(); +} \ No newline at end of file diff --git a/src/Spectron/Services/PreferencesService.cs b/src/Spectron/Services/PreferencesService.cs index 5b2ced9..df16da7 100644 --- a/src/Spectron/Services/PreferencesService.cs +++ b/src/Spectron/Services/PreferencesService.cs @@ -5,7 +5,7 @@ namespace OldBit.Spectron.Services; public class PreferencesService(ApplicationDataService applicationDataService) { - public async Task SaveAsync(object settings) => await applicationDataService.SaveAsync(settings); + public async Task SaveAsync(Preferences settings) => await applicationDataService.SaveAsync(settings); public async Task LoadAsync() => await applicationDataService.LoadAsync(); } \ No newline at end of file diff --git a/src/Spectron/Services/ServiceCollectionExtensions.cs b/src/Spectron/Services/ServiceCollectionExtensions.cs index ff1096f..555b1b6 100644 --- a/src/Spectron/Services/ServiceCollectionExtensions.cs +++ b/src/Spectron/Services/ServiceCollectionExtensions.cs @@ -9,6 +9,7 @@ public static void AddServices(this IServiceCollection services) { services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); diff --git a/src/Spectron/Settings/FavoritePrograms.cs b/src/Spectron/Settings/FavoritePrograms.cs new file mode 100644 index 0000000..fc4e89d --- /dev/null +++ b/src/Spectron/Settings/FavoritePrograms.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; + +namespace OldBit.Spectron.Settings; + +public class FavoriteProgram +{ + public string FilePath { get; set; } = string.Empty; + public string Title { get; init; } = string.Empty; + public bool IsFolder { get; init; } + public List Favorites { get; } = []; +} + +public class FavoritePrograms +{ + public List Favorites { get; } = []; +} \ No newline at end of file diff --git a/src/Spectron/Settings/RecentFilesSettings.cs b/src/Spectron/Settings/RecentFilesSettings.cs index 3e03d39..9ca9689 100644 --- a/src/Spectron/Settings/RecentFilesSettings.cs +++ b/src/Spectron/Settings/RecentFilesSettings.cs @@ -8,5 +8,5 @@ public class RecentFilesSettings public string CurrentFileName { get; set; } = string.Empty; - public int MaxRecentFiles { get; set; } = 10; + public int MaxRecentFiles { get; set; } = 15; } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index 52b5dfe..f38103b 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -5,27 +5,17 @@ namespace OldBit.Spectron.ViewModels; public partial class FavoriteItemViewModel : ObservableObject { - public ObservableCollection? Nodes { get; } + public ObservableCollection Nodes { get; } = []; [ObservableProperty] - private string _title; + private string _title = string.Empty; [ObservableProperty] - private bool _isFolder; + private string _path = string.Empty; [ObservableProperty] - private bool _isRoot; - - public FavoriteItemViewModel(string title) - { - Title = title; - IsFolder = false; - } + private bool _isFolder; - public FavoriteItemViewModel(string title, ObservableCollection nodes) - { - Title = title; - Nodes = nodes; - IsFolder = true; - } + [ObservableProperty] + private bool _isReadOnly; } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index dd938a8..4f6c2d4 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -1,5 +1,11 @@ +using System; +using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Threading.Tasks; +using Avalonia.Controls; using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using OldBit.Spectron.Settings; namespace OldBit.Spectron.ViewModels; @@ -8,32 +14,87 @@ public partial class FavoritesViewModel : ObservableObject [ObservableProperty] private FavoriteItemViewModel? _selectedItem; - public ObservableCollection Items { get; } + public ObservableCollection Nodes { get; } = []; - public FavoritesViewModel() + public List Favorites { - Items = - [ - new FavoriteItemViewModel("Favorites", - [ - new FavoriteItemViewModel("Games", - [ - new FavoriteItemViewModel("Manic Miner"), - new FavoriteItemViewModel("The Prize"), - new FavoriteItemViewModel("Bruce Lee") - ]), - new FavoriteItemViewModel("Demos", - [ - new FavoriteItemViewModel("Demo 1"), - new FavoriteItemViewModel("Demo 2"), - new FavoriteItemViewModel("Demo 3") - ]), - new FavoriteItemViewModel("Some other item 1"), - new FavoriteItemViewModel("Some other item 2"), - ]), - ]; - - // var moth = Items.Last().SubNodes?.Last(); - // if (moth!=null) SelectedItems.Add(moth); + get; + set + { + field = value; + UpdateFavorites(); + } + } = []; + + public void Opening(ItemCollection menuItems) + { + while (menuItems.Count > 1) + { + menuItems.RemoveAt(1); + } + + if (Nodes.Count == 0 || Nodes[0].Nodes is { Count: 0 }) + { + return; + } + + menuItems.Add(new Separator()); + + AddFavoriteItems(menuItems, Nodes[0].Nodes!); + } + + private void UpdateFavorites() + { + Nodes.Clear(); + Nodes.Add(new FavoriteItemViewModel { Title = "Favorites", IsFolder = true, IsReadOnly = true }); + + AddFavorites(Favorites, Nodes[0]); + } + + private void AddFavorites(List favorites, FavoriteItemViewModel parent) + { + foreach (var favorite in favorites) + { + if (favorite.IsFolder) + { + var folder = new FavoriteItemViewModel { Title = favorite.Title, IsFolder = true }; + parent.Nodes.Add(folder); + + AddFavorites(favorite.Favorites, folder); + + continue; + } + + parent.Nodes.Add(new FavoriteItemViewModel { Title = favorite.Title }); + } + } + + [RelayCommand] + private async Task OpenFavorite(FavoriteItemViewModel favorite) + { + Console.WriteLine("Opening: " + favorite.Title); + } + + private void AddFavoriteItems(ItemCollection menuItems, IEnumerable favorites) + { + foreach (var favorite in favorites) + { + var favoriteMenuItem = new MenuItem + { + Header = favorite.Title, + }; + + if (favorite is { IsFolder: true, Nodes.Count: > 0 }) + { + AddFavoriteItems(favoriteMenuItem.Items, favorite.Nodes); + } + else + { + favoriteMenuItem.Command = OpenFavoriteCommand; + favoriteMenuItem.CommandParameter = favorite; + } + + menuItems.Add(favoriteMenuItem); + } } } \ No newline at end of file diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs b/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs index bb07fb0..20c3598 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs @@ -138,5 +138,5 @@ private void OpenPrintOutputViewer() => WeakReferenceMessenger.Default.Send(new ShowPrintOutputViewMessage(Emulator!.Printer)); private void OpenFavoritesWindow() => - WeakReferenceMessenger.Default.Send(new ShowFavoritesViewMessage()); + WeakReferenceMessenger.Default.Send(new ShowFavoritesViewMessage(FavoritesViewModel)); } \ No newline at end of file diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Window.cs b/src/Spectron/ViewModels/MainWindowViewModel.Window.cs index 686dd0d..d0ff20d 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Window.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Window.cs @@ -2,6 +2,7 @@ using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; using OldBit.Spectron.Extensions; +using OldBit.Spectron.Settings; using OldBit.Spectron.Theming; namespace OldBit.Spectron.ViewModels; @@ -39,10 +40,35 @@ internal void WindowDeactivated(ActivatedEventArgs args) _shouldResume = true; } + private FavoritePrograms TestFavorites() + { + var programs = new FavoritePrograms(); + programs.Favorites.Add(new FavoriteProgram { Title = "Games", IsFolder = true }); + programs.Favorites[0].Favorites.Add(new FavoriteProgram { Title = "Manic Miner" }); + programs.Favorites[0].Favorites.Add(new FavoriteProgram { Title = "The Prize" }); + programs.Favorites[0].Favorites.Add(new FavoriteProgram { Title = "Bruce Lee" }); + + programs.Favorites.Add(new FavoriteProgram { Title = "Demos", IsFolder = true }); + programs.Favorites[1].Favorites.Add(new FavoriteProgram { Title = "Demo 1" }); + programs.Favorites[1].Favorites.Add(new FavoriteProgram { Title = "Demo 2" }); + programs.Favorites[1].Favorites.Add(new FavoriteProgram { Title = "Demo 3" }); + + programs.Favorites.Add(new FavoriteProgram { Title = "Some other item 1" }); + programs.Favorites.Add(new FavoriteProgram { Title = "Some other item 2" }); + programs.Favorites.Add(new FavoriteProgram { Title = "Some other item 3" }); + + return programs; + } + private async Task WindowOpenedAsync() { _preferences = await _preferencesService.LoadAsync(); + // TODO: Temporary data + //var programs = await _favoritesService.LoadAsync(); + var programs = TestFavorites(); + FavoritesViewModel.Favorites = programs.Favorites; + ThemeManager.SelectTheme(CommandLineArgs?.Theme ?? _preferences.Theme); IsAudioMuted = CommandLineArgs?.IsAudioMuted ?? _preferences.Audio.IsMuted; diff --git a/src/Spectron/ViewModels/MainWindowViewModel.cs b/src/Spectron/ViewModels/MainWindowViewModel.cs index 4cd1201..fbdc383 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.cs @@ -55,6 +55,7 @@ public partial class MainWindowViewModel : ObservableObject private readonly Loader _loader; private readonly PreferencesService _preferencesService; + private readonly FavoritesService _favoritesService; private readonly SessionService _sessionService; private readonly DebuggerContext _debuggerContext; private readonly QuickSaveService _quickSaveService; @@ -87,6 +88,7 @@ public partial class MainWindowViewModel : ObservableObject public MicrodriveMenuViewModel MicrodriveMenuViewModel { get; } public DiskDriveMenuViewModel DiskDriveMenuViewModel { get; } public RecentFilesViewModel RecentFilesViewModel { get; } + public FavoritesViewModel FavoritesViewModel { get; } #region Observable properties [ObservableProperty] @@ -317,8 +319,10 @@ public MainWindowViewModel( StateManager stateManager, Loader loader, PreferencesService preferencesService, + FavoritesService favoritesService, SessionService sessionService, RecentFilesViewModel recentFilesViewModel, + FavoritesViewModel favoritesViewModel, TapeMenuViewModel tapeMenuViewModel, MicrodriveMenuViewModel microdriveMenuViewModel, DiskDriveMenuViewModel diskDriveMenuViewModel, @@ -337,6 +341,7 @@ public MainWindowViewModel( _stateManager = stateManager; _loader = loader; _preferencesService = preferencesService; + _favoritesService = favoritesService; _sessionService = sessionService; _debuggerContext = debuggerContext; _quickSaveService = quickSaveService; @@ -344,6 +349,7 @@ public MainWindowViewModel( _logger = logger; RecentFilesViewModel = recentFilesViewModel; + FavoritesViewModel = favoritesViewModel; TapeMenuViewModel = tapeMenuViewModel; MicrodriveMenuViewModel = microdriveMenuViewModel; DiskDriveMenuViewModel = diskDriveMenuViewModel; diff --git a/src/Spectron/ViewModels/RecentFilesViewModel.cs b/src/Spectron/ViewModels/RecentFilesViewModel.cs index 1dc01bf..47ee6df 100644 --- a/src/Spectron/ViewModels/RecentFilesViewModel.cs +++ b/src/Spectron/ViewModels/RecentFilesViewModel.cs @@ -9,9 +9,8 @@ namespace OldBit.Spectron.ViewModels; -public partial class RecentFilesViewModel : ObservableObject +public partial class RecentFilesViewModel(RecentFilesService recentFilesService) : ObservableObject { - private readonly RecentFilesService _recentFilesService; private RecentFilesSettings _recentFilesSettings = new(); public string CurrentFileName @@ -22,11 +21,6 @@ public string CurrentFileName public Func? OpenRecentFileAsync; - public RecentFilesViewModel(RecentFilesService recentFilesService) - { - _recentFilesService = recentFilesService; - } - [RelayCommand] private async Task OpenRecentFile(string fileName) { @@ -36,9 +30,9 @@ private async Task OpenRecentFile(string fileName) } } - public async Task LoadAsync() => _recentFilesSettings = await _recentFilesService.LoadAsync(); + public async Task LoadAsync() => _recentFilesSettings = await recentFilesService.LoadAsync(); - public async Task SaveAsync() => await _recentFilesService.SaveAsync(_recentFilesSettings); + public async Task SaveAsync() => await recentFilesService.SaveAsync(_recentFilesSettings); public void Opening(ItemCollection items) { diff --git a/src/Spectron/ViewModels/ServiceCollectionExtensions.cs b/src/Spectron/ViewModels/ServiceCollectionExtensions.cs index 809b7ab..d17a6af 100644 --- a/src/Spectron/ViewModels/ServiceCollectionExtensions.cs +++ b/src/Spectron/ViewModels/ServiceCollectionExtensions.cs @@ -8,6 +8,7 @@ public static void AddViewModels(this IServiceCollection services) { services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index ca8893e..162f74a 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -12,15 +12,23 @@ Title="Manage Favourites"> + + + SelectionMode="AlwaysSelected" + DragDrop.AllowDrop="True"> @@ -66,14 +74,24 @@ - + + - + + + + + + + + - diff --git a/src/Spectron/Views/FavoritesView.axaml.cs b/src/Spectron/Views/FavoritesView.axaml.cs index 1f886fa..69e8f0b 100644 --- a/src/Spectron/Views/FavoritesView.axaml.cs +++ b/src/Spectron/Views/FavoritesView.axaml.cs @@ -1,8 +1,87 @@ +using System; +using System.Linq; using Avalonia.Controls; +using Avalonia.Input; +using OldBit.Spectron.Emulation.Files; +using OldBit.Spectron.ViewModels; namespace OldBit.Spectron.Views; public partial class FavoritesView : Window { + private FavoritesViewModel? _viewModel; + public FavoritesView() => InitializeComponent(); + + protected override void OnDataContextChanged(EventArgs e) + { + if (DataContext is not FavoritesViewModel viewModel) + { + return; + } + + _viewModel = viewModel; + _viewModel.SelectedItem = viewModel.Nodes.FirstOrDefault(); + } + + private void OnFileDragOver(object? sender, DragEventArgs e) + { + e.DragEffects = DragDropEffects.None; + + if (IsValidFileDrop(e)) + { + e.DragEffects = DragDropEffects.Copy; + } + + e.Handled = true; + } + + private void OnFileDrop(object? sender, DragEventArgs e) + { + if (!IsValidFileDrop(e)) + { + return; + } + + var filePath = GetDroppedFilePath(e); + + if (!IsFileSupported(filePath)) + { + return; + } + + _viewModel?.SelectedItem?.Path = filePath!; + } + + private static bool IsValidFileDrop(DragEventArgs e) + { + if (!e.DataTransfer.Contains(DataFormat.File) || e.DataTransfer.Items.Count != 1) + { + return false; + } + + var filePath = GetDroppedFilePath(e); + + return IsFileSupported(filePath); + } + + private static bool IsFileSupported(string? filePath) + { + if (filePath == null) + { + return false; + } + + var fileType = FileTypes.GetFileType(filePath); + + return fileType != FileType.Unsupported; + } + + private static string? GetDroppedFilePath(DragEventArgs e) + { + var items = e.DataTransfer.GetItems(DataFormat.File).FirstOrDefault(); + var file = items?.TryGetFile(); + + return file?.Path.LocalPath; + } } \ No newline at end of file diff --git a/src/Spectron/Views/MainWindow.axaml.cs b/src/Spectron/Views/MainWindow.axaml.cs index be8a283..9814298 100644 --- a/src/Spectron/Views/MainWindow.axaml.cs +++ b/src/Spectron/Views/MainWindow.axaml.cs @@ -31,10 +31,10 @@ public MainWindow() ShowDialog(window, new DiskViewModel(message.DiskDriveManager, message.DriveId))); WeakReferenceMessenger.Default.Register(this, (window, m) => - Show(window, m.ViewModel!)); + Show(window, m.ViewModel)); WeakReferenceMessenger.Default.Register(this, (window, m) => - Show(window, new FavoritesViewModel())); + Show(window, m.ViewModel)); WeakReferenceMessenger.Default.Register(this, (window, m) => Show(window, m.ViewModel)); @@ -43,7 +43,7 @@ public MainWindow() Show(null, m.ViewModel)); WeakReferenceMessenger.Default.Register(this, (window, m) => - Show(window, m.ViewModel!)); + Show(window, m.ViewModel)); WeakReferenceMessenger.Default.Register(this, (window, message) => { From 52fc0baae5ea622150a2aedbe7eb38ff8108dbae Mon Sep 17 00:00:00 2001 From: voytas Date: Thu, 12 Feb 2026 18:14:16 +0000 Subject: [PATCH 04/26] Mark favorites as files where applicable and adjust bindings in FavoritesView. --- src/Spectron/ViewModels/FavoriteItemViewModel.cs | 3 +++ src/Spectron/ViewModels/FavoritesViewModel.cs | 2 +- src/Spectron/Views/FavoritesView.axaml | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index f38103b..17210cf 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -16,6 +16,9 @@ public partial class FavoriteItemViewModel : ObservableObject [ObservableProperty] private bool _isFolder; + [ObservableProperty] + private bool _isFile; + [ObservableProperty] private bool _isReadOnly; } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index 4f6c2d4..b150422 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -65,7 +65,7 @@ private void AddFavorites(List favorites, FavoriteItemViewModel continue; } - parent.Nodes.Add(new FavoriteItemViewModel { Title = favorite.Title }); + parent.Nodes.Add(new FavoriteItemViewModel { Title = favorite.Title, IsFile = true }); } } diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 162f74a..6770393 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -86,7 +86,7 @@ Text="{Binding SelectedItem.Title, FallbackValue=''}" IsReadOnly="{Binding !!SelectedItem.IsReadOnly}"/> - + From fa4e862706e58261524d143b7683dae83db4f3f2 Mon Sep 17 00:00:00 2001 From: voytas Date: Thu, 12 Feb 2026 22:11:41 +0000 Subject: [PATCH 05/26] Add command bindings and context menu enhancements in FavoritesView --- src/Spectron/ViewModels/FavoritesViewModel.cs | 39 +++++++++++++++++++ src/Spectron/Views/FavoritesView.axaml | 22 +++++++---- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index b150422..2bcaea9 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -16,6 +16,7 @@ public partial class FavoritesViewModel : ObservableObject public ObservableCollection Nodes { get; } = []; + public List Favorites { get; @@ -75,6 +76,29 @@ private async Task OpenFavorite(FavoriteItemViewModel favorite) Console.WriteLine("Opening: " + favorite.Title); } + [RelayCommand(CanExecute = nameof(CanExecuteRemove))] + private void RemoveItem() + { + if (SelectedItem is null) + { + return; + } + + Remove(Nodes, SelectedItem); + } + + [RelayCommand] + private void InsertFolder() + { + + } + + [RelayCommand] + private void InsertItem() + { + + } + private void AddFavoriteItems(ItemCollection menuItems, IEnumerable favorites) { foreach (var favorite in favorites) @@ -97,4 +121,19 @@ private void AddFavoriteItems(ItemCollection menuItems, IEnumerable nodes, FavoriteItemViewModel item) + { + if (nodes.Remove(item)) + { + return; + } + + foreach (var node in nodes) + { + Remove(node.Nodes, item); + } + } + + private bool CanExecuteRemove() => SelectedItem is not null && !SelectedItem.IsReadOnly; } \ No newline at end of file diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 6770393..0e64db4 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -31,7 +31,7 @@ DragDrop.AllowDrop="True"> - + @@ -60,9 +60,13 @@ - - - + + + @@ -75,6 +79,8 @@ @@ -83,13 +89,13 @@ + Text="{Binding Title}" + IsReadOnly="{Binding IsReadOnly}"/> - + + Text="{Binding Path, FallbackValue=''}" Classes="Label"/> From f5d6bcd0642bfe1f18c20588c64547dc8859bb43 Mon Sep 17 00:00:00 2001 From: voytas Date: Thu, 12 Feb 2026 22:46:30 +0000 Subject: [PATCH 06/26] Refactor command bindings and improve FavoritesView context menu logic --- src/Spectron/ViewModels/FavoritesViewModel.cs | 33 ++++++++++++------- src/Spectron/Views/FavoritesView.axaml | 8 ++--- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index 2bcaea9..ba9839e 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -16,7 +16,6 @@ public partial class FavoritesViewModel : ObservableObject public ObservableCollection Nodes { get; } = []; - public List Favorites { get; @@ -52,7 +51,7 @@ private void UpdateFavorites() AddFavorites(Favorites, Nodes[0]); } - private void AddFavorites(List favorites, FavoriteItemViewModel parent) + private static void AddFavorites(List favorites, FavoriteItemViewModel parent) { foreach (var favorite in favorites) { @@ -87,16 +86,22 @@ private void RemoveItem() Remove(Nodes, SelectedItem); } - [RelayCommand] - private void InsertFolder() - { + [RelayCommand(CanExecute = nameof(CanExecuteInsert))] + private void InsertFolder() => InsertItem(new FavoriteItemViewModel { Title = "New Folder", IsFolder = true }); - } + [RelayCommand(CanExecute = nameof(CanExecuteInsert))] + private void InsertItem() => InsertItem(new FavoriteItemViewModel { Title = "New File", IsFile = true }); - [RelayCommand] - private void InsertItem() + private void InsertItem(FavoriteItemViewModel item) { + if (SelectedItem is null || !SelectedItem.IsFolder) + { + return; + } + + SelectedItem.Nodes.Add(item); + SelectedItem = item; } private void AddFavoriteItems(ItemCollection menuItems, IEnumerable favorites) @@ -108,8 +113,13 @@ private void AddFavoriteItems(ItemCollection menuItems, IEnumerable 0 }) + if (favorite.IsFolder) { + if (favorite.Nodes.Count == 0) + { + continue; + } + AddFavoriteItems(favoriteMenuItem.Items, favorite.Nodes); } else @@ -122,7 +132,7 @@ private void AddFavoriteItems(ItemCollection menuItems, IEnumerable nodes, FavoriteItemViewModel item) + private static void Remove(ObservableCollection nodes, FavoriteItemViewModel item) { if (nodes.Remove(item)) { @@ -135,5 +145,6 @@ private void Remove(ObservableCollection nodes, FavoriteI } } - private bool CanExecuteRemove() => SelectedItem is not null && !SelectedItem.IsReadOnly; + private bool CanExecuteRemove => SelectedItem is not null && !SelectedItem.IsReadOnly; + private bool CanExecuteInsert => SelectedItem is not null && SelectedItem.IsFolder; } \ No newline at end of file diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 0e64db4..ed8f652 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -59,14 +59,14 @@ - + + Command="{Binding InsertItemCommand}"/> + Command="{Binding InsertFolderCommand}"/> + Command="{Binding RemoveItemCommand}"/> From c5509000d9bfb3125221be926ec8eaffeb505473 Mon Sep 17 00:00:00 2001 From: voytas Date: Thu, 12 Feb 2026 22:57:56 +0000 Subject: [PATCH 07/26] Switch `IsReadOnly` to `IsRoot` in FavoritesView and adjust UI bindings --- .../ViewModels/FavoriteItemViewModel.cs | 2 +- src/Spectron/ViewModels/FavoritesViewModel.cs | 6 +-- src/Spectron/Views/FavoritesView.axaml | 41 ++++++++++++------- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index 17210cf..d32cdf6 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -20,5 +20,5 @@ public partial class FavoriteItemViewModel : ObservableObject private bool _isFile; [ObservableProperty] - private bool _isReadOnly; + private bool _isRoot; } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index ba9839e..b48f5ae 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -46,7 +46,7 @@ public void Opening(ItemCollection menuItems) private void UpdateFavorites() { Nodes.Clear(); - Nodes.Add(new FavoriteItemViewModel { Title = "Favorites", IsFolder = true, IsReadOnly = true }); + Nodes.Add(new FavoriteItemViewModel { Title = "Favorites", IsFolder = true, IsRoot = true }); AddFavorites(Favorites, Nodes[0]); } @@ -145,6 +145,6 @@ private static void Remove(ObservableCollection nodes, Fa } } - private bool CanExecuteRemove => SelectedItem is not null && !SelectedItem.IsReadOnly; - private bool CanExecuteInsert => SelectedItem is not null && SelectedItem.IsFolder; + private bool CanExecuteRemove => SelectedItem is not null && !SelectedItem.IsRoot; + private bool CanExecuteInsert => SelectedItem is not null && (SelectedItem.IsFolder || SelectedItem.IsRoot); } \ No newline at end of file diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index ed8f652..ed8f195 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -42,19 +42,32 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -90,7 +103,7 @@ + IsReadOnly="{Binding IsRoot}"/> From aad79f2da84bd54dee941aca03e5e85ae5fe61a4 Mon Sep 17 00:00:00 2001 From: voytas Date: Fri, 13 Feb 2026 19:21:39 +0000 Subject: [PATCH 08/26] Implement clipboard actions (cut, copy, paste) in FavoritesView and enhance item manipulation logic --- .../ViewModels/FavoriteItemViewModel.cs | 22 +++ src/Spectron/ViewModels/FavoritesViewModel.cs | 132 +++++++++++++++++- src/Spectron/Views/FavoritesView.axaml | 12 +- 3 files changed, 162 insertions(+), 4 deletions(-) diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index d32cdf6..4e0cfc7 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -21,4 +21,26 @@ public partial class FavoriteItemViewModel : ObservableObject [ObservableProperty] private bool _isRoot; + + public FavoriteItemViewModel Clone() + { + var copy = new FavoriteItemViewModel + { + Title = Title, + Path = Path, + IsFile = IsFile, + IsRoot = IsRoot, + IsFolder = IsFolder + }; + + if (IsFolder) + { + foreach (var node in Nodes) + { + copy.Nodes.Add(node.Clone()); + } + } + + return copy; + } } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index b48f5ae..1746654 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -11,6 +11,9 @@ namespace OldBit.Spectron.ViewModels; public partial class FavoritesViewModel : ObservableObject { + private FavoriteItemViewModel? _cutItem; + private FavoriteItemViewModel? _copyItem; + [ObservableProperty] private FavoriteItemViewModel? _selectedItem; @@ -92,6 +95,38 @@ private void RemoveItem() [RelayCommand(CanExecute = nameof(CanExecuteInsert))] private void InsertItem() => InsertItem(new FavoriteItemViewModel { Title = "New File", IsFile = true }); + [RelayCommand(CanExecute = nameof(CanExecuteCutCopy))] + private void CutSelectedItem() + { + _cutItem = SelectedItem; + _copyItem = null; + } + + [RelayCommand(CanExecute = nameof(CanExecuteCutCopy))] + private void CopySelectedItem() + { + _cutItem = null; + _copyItem = SelectedItem; + } + + [RelayCommand(CanExecute = nameof(CanExecutePaste))] + private void PasteItem() + { + if (SelectedItem is null) + { + return; + } + + if (_cutItem != null) + { + CutItem(_cutItem, SelectedItem); + } + else if (_copyItem != null) + { + CopyItem(_copyItem, SelectedItem); + } + } + private void InsertItem(FavoriteItemViewModel item) { if (SelectedItem is null || !SelectedItem.IsFolder) @@ -100,10 +135,65 @@ private void InsertItem(FavoriteItemViewModel item) } SelectedItem.Nodes.Add(item); - SelectedItem = item; } + private void CopyItem(FavoriteItemViewModel copyItem, FavoriteItemViewModel selectedItem) + { + var copy = copyItem.Clone(); + copy.Title = $"{copyItem.Title} - copy"; + + if (selectedItem.IsFolder && !copyItem.IsFolder) + { + selectedItem.Nodes.Insert(0, copy); + } + else + { + var parent = FindParent(Nodes, selectedItem); + + if (parent == null) + { + return; + } + + var index = parent.Nodes.IndexOf(selectedItem); + parent.Nodes.Insert(index + 1, copy); + } + + SelectedItem = copy; + } + + private void CutItem(FavoriteItemViewModel cutItem, FavoriteItemViewModel selectedItem) + { + var cutItemParent = FindParent(Nodes, cutItem); + var selectedItemParent = FindParent(Nodes, selectedItem); + + if (cutItemParent == null || selectedItem.IsFile && cutItemParent == selectedItemParent) + { + return; + } + + if (IsChildOfAny(selectedItem, cutItem.Nodes)) + { + return; + } + + var cutItemIndex = cutItemParent.Nodes.IndexOf(cutItem); + cutItemParent.Nodes.RemoveAt(cutItemIndex); + + if (selectedItem.IsFolder) + { + selectedItem.Nodes.Insert(0, cutItem); + } + else + { + selectedItemParent?.Nodes.Insert(selectedItemParent.Nodes.IndexOf(selectedItem) + 1, cutItem); + } + + SelectedItem = cutItem; + _cutItem = null; + } + private void AddFavoriteItems(ItemCollection menuItems, IEnumerable favorites) { foreach (var favorite in favorites) @@ -145,6 +235,46 @@ private static void Remove(ObservableCollection nodes, Fa } } + private static FavoriteItemViewModel? FindParent(IEnumerable nodes, FavoriteItemViewModel item) + { + foreach (var node in nodes) + { + if (node.Nodes.Contains(item)) + { + return node; + } + + var parent = FindParent(node.Nodes, item); + + if (parent != null) + { + return parent; + } + } + + return null; + } + + private static bool IsChildOfAny(FavoriteItemViewModel item, IEnumerable nodes) + { + foreach (var node in nodes) + { + if (node == item) + { + return true; + } + + if (IsChildOfAny(item, node.Nodes)) + { + return true; + } + } + + return false; + } + private bool CanExecuteRemove => SelectedItem is not null && !SelectedItem.IsRoot; private bool CanExecuteInsert => SelectedItem is not null && (SelectedItem.IsFolder || SelectedItem.IsRoot); + private bool CanExecuteCutCopy => SelectedItem is not null && !SelectedItem.IsRoot; + private bool CanExecutePaste => SelectedItem is not null && (_cutItem != null || _copyItem != null); } \ No newline at end of file diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index ed8f195..6bcdfde 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -32,6 +32,9 @@ + + + @@ -81,9 +84,12 @@ InputGesture="{OnPlatform Delete, macOS=Meta+Back}" Command="{Binding RemoveItemCommand}"/> - - - + + + From 905eadecc45a2e0da7dce3dfe7e038b7b9279e23 Mon Sep 17 00:00:00 2001 From: voytas Date: Fri, 13 Feb 2026 19:37:01 +0000 Subject: [PATCH 09/26] Add `IsCutItem` support to FavoritesView for improved cut item handling --- src/Spectron/ViewModels/FavoriteItemViewModel.cs | 3 +++ src/Spectron/ViewModels/FavoritesViewModel.cs | 5 +++++ src/Spectron/Views/FavoritesView.axaml | 10 ++++++++++ 3 files changed, 18 insertions(+) diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index 4e0cfc7..30ebc4b 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -22,6 +22,9 @@ public partial class FavoriteItemViewModel : ObservableObject [ObservableProperty] private bool _isRoot; + [ObservableProperty] + private bool _isCutItem; + public FavoriteItemViewModel Clone() { var copy = new FavoriteItemViewModel diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index 1746654..18b86e3 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -98,13 +98,16 @@ private void RemoveItem() [RelayCommand(CanExecute = nameof(CanExecuteCutCopy))] private void CutSelectedItem() { + _cutItem?.IsCutItem = false; _cutItem = SelectedItem; + _cutItem?.IsCutItem = true; _copyItem = null; } [RelayCommand(CanExecute = nameof(CanExecuteCutCopy))] private void CopySelectedItem() { + _cutItem?.IsCutItem = false; _cutItem = null; _copyItem = SelectedItem; } @@ -191,6 +194,8 @@ private void CutItem(FavoriteItemViewModel cutItem, FavoriteItemViewModel select } SelectedItem = cutItem; + + _cutItem?.IsCutItem = false; _cutItem = null; } diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 6bcdfde..013431e 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -65,7 +65,17 @@ + + + + + + + + + From 56f5c5c80306e3699b8a6d365aa4328aeae2f9c8 Mon Sep 17 00:00:00 2001 From: voytas Date: Tue, 24 Feb 2026 20:41:18 +0000 Subject: [PATCH 10/26] Refactor file type resolution system by replacing `FileTypes` with `FileTypeResolver` and `FilePickerType`; update related dialogs, views, and logic --- .../Extensions/FileTypeExtensions.cs | 21 ++++++ src/Spectron.Emulation/Files/FileType.cs | 15 ---- .../{FileTypes.cs => FileTypeResolver.cs} | 4 +- .../{ZipFileReader.cs => ZipArchiveReader.cs} | 7 +- .../Snapshot/SnapshotManager.cs | 2 +- src/Spectron.Emulation/Tape/TapeManager.cs | 3 +- src/Spectron/Dialogs/FileDialogs.cs | 72 +++++++++---------- .../{FileTypes.cs => FilePickerType.cs} | 2 +- .../ViewModels/FavoriteItemViewModel.cs | 50 ++++++++++++- .../MainWindowViewModel.Emulator.cs | 1 - .../ViewModels/MainWindowViewModel.Files.cs | 8 +-- src/Spectron/ViewModels/TapeMenuViewModel.cs | 6 +- src/Spectron/Views/FavoritesView.axaml | 7 +- src/Spectron/Views/FavoritesView.axaml.cs | 2 +- 14 files changed, 129 insertions(+), 71 deletions(-) create mode 100644 src/Spectron.Emulation/Extensions/FileTypeExtensions.cs rename src/Spectron.Emulation/Files/{FileTypes.cs => FileTypeResolver.cs} (75%) rename src/Spectron.Emulation/Files/{ZipFileReader.cs => ZipArchiveReader.cs} (75%) rename src/Spectron/Dialogs/{FileTypes.cs => FilePickerType.cs} (98%) diff --git a/src/Spectron.Emulation/Extensions/FileTypeExtensions.cs b/src/Spectron.Emulation/Extensions/FileTypeExtensions.cs new file mode 100644 index 0000000..363c71c --- /dev/null +++ b/src/Spectron.Emulation/Extensions/FileTypeExtensions.cs @@ -0,0 +1,21 @@ +using OldBit.Spectron.Emulation.Files; + +namespace OldBit.Spectron.Emulation.Extensions; + +public static class FileTypeExtensions +{ + extension(FileType fileType) + { + public bool IsSnapshot() => + fileType is FileType.Sna or FileType.Z80 or FileType.Szx or FileType.Spectron; + + public bool IsTape() => + fileType is FileType.Tap or FileType.Tzx; + + public bool IsArchive() => + fileType is FileType.Zip; + + public bool IsMicrodrive() => + fileType is FileType.Mdr; + } +} \ No newline at end of file diff --git a/src/Spectron.Emulation/Files/FileType.cs b/src/Spectron.Emulation/Files/FileType.cs index 29c2f58..967d85c 100644 --- a/src/Spectron.Emulation/Files/FileType.cs +++ b/src/Spectron.Emulation/Files/FileType.cs @@ -25,19 +25,4 @@ public enum FileType Spectron, Unsupported -} - -public static class FileTypeExtensions -{ - public static bool IsSnapshot(this FileType fileType) => - fileType is FileType.Sna or FileType.Z80 or FileType.Szx or FileType.Spectron; - - public static bool IsTape(this FileType fileType) => - fileType is FileType.Tap or FileType.Tzx; - - public static bool IsArchive(this FileType fileType) => - fileType is FileType.Zip; - - public static bool IsMicrodrive(this FileType fileType) => - fileType is FileType.Mdr; } \ No newline at end of file diff --git a/src/Spectron.Emulation/Files/FileTypes.cs b/src/Spectron.Emulation/Files/FileTypeResolver.cs similarity index 75% rename from src/Spectron.Emulation/Files/FileTypes.cs rename to src/Spectron.Emulation/Files/FileTypeResolver.cs index 1668dc8..e392ddd 100644 --- a/src/Spectron.Emulation/Files/FileTypes.cs +++ b/src/Spectron.Emulation/Files/FileTypeResolver.cs @@ -1,8 +1,8 @@ namespace OldBit.Spectron.Emulation.Files; -public static class FileTypes +public static class FileTypeResolver { - public static FileType GetFileType(string fileName) => Path.GetExtension(fileName).ToLowerInvariant() switch + public static FileType FromPath(string fileName) => Path.GetExtension(fileName).ToLowerInvariant() switch { ".sna" => FileType.Sna, ".szx" => FileType.Szx, diff --git a/src/Spectron.Emulation/Files/ZipFileReader.cs b/src/Spectron.Emulation/Files/ZipArchiveReader.cs similarity index 75% rename from src/Spectron.Emulation/Files/ZipFileReader.cs rename to src/Spectron.Emulation/Files/ZipArchiveReader.cs index 840395d..0c2ebcb 100644 --- a/src/Spectron.Emulation/Files/ZipFileReader.cs +++ b/src/Spectron.Emulation/Files/ZipArchiveReader.cs @@ -1,20 +1,21 @@ using System.IO.Compression; +using OldBit.Spectron.Emulation.Extensions; namespace OldBit.Spectron.Emulation.Files; public record ArchiveEntry(string Name, FileType FileType); -public sealed class ZipFileReader(string filePath) : IDisposable +public sealed class ZipArchiveReader(string filePath) : IDisposable { private readonly ZipArchive _zip = ZipFile.OpenRead(filePath); - public List GetFiles() + public List GetSupportedFiles() { var entries = new List(); foreach (var entry in _zip.Entries) { - var fileType = FileTypes.GetFileType(entry.FullName); + var fileType = FileTypeResolver.FromPath(entry.FullName); if (fileType.IsSnapshot() || fileType.IsTape() || fileType.IsMicrodrive()) { diff --git a/src/Spectron.Emulation/Snapshot/SnapshotManager.cs b/src/Spectron.Emulation/Snapshot/SnapshotManager.cs index a5c3b6f..e83fb8e 100644 --- a/src/Spectron.Emulation/Snapshot/SnapshotManager.cs +++ b/src/Spectron.Emulation/Snapshot/SnapshotManager.cs @@ -23,7 +23,7 @@ public Emulator Load(Stream stream, FileType fileType) public static void Save(string filePath, Emulator emulator) { - var fileType = FileTypes.GetFileType(filePath); + var fileType = FileTypeResolver.FromPath(filePath); switch (fileType) { diff --git a/src/Spectron.Emulation/Tape/TapeManager.cs b/src/Spectron.Emulation/Tape/TapeManager.cs index e9d42db..1e70269 100644 --- a/src/Spectron.Emulation/Tape/TapeManager.cs +++ b/src/Spectron.Emulation/Tape/TapeManager.cs @@ -1,5 +1,4 @@ using OldBit.Spectron.Emulation.Files; -using OldBit.Spectron.Emulation.Rom; using OldBit.Z80Cpu; using OldBit.Spectron.Files.Tzx; @@ -100,7 +99,7 @@ public void InsertTape(Stream stream, FileType fileType, bool autoPlay = false) public void InsertTape(string fileName) { - var fileType = FileTypes.GetFileType(fileName); + var fileType = FileTypeResolver.FromPath(fileName); var stream = File.OpenRead(fileName); InsertTape(stream, fileType); diff --git a/src/Spectron/Dialogs/FileDialogs.cs b/src/Spectron/Dialogs/FileDialogs.cs index 0a6e000..a9a8fb2 100644 --- a/src/Spectron/Dialogs/FileDialogs.cs +++ b/src/Spectron/Dialogs/FileDialogs.cs @@ -12,60 +12,60 @@ public static class FileDialogs public static async Task> OpenEmulatorFileAsync() => await OpenFileAsync("Select File", [ - FileTypes.All, - FileTypes.TapeFiles, - FileTypes.SnapshotFiles, - FileTypes.DiskFiles, - FileTypes.Spectron, - FileTypes.Sna, - FileTypes.Szx, - FileTypes.Tap, - FileTypes.Tzx, - FileTypes.Z80, - FileTypes.Zip, - FileTypes.Pok, - FileTypes.Mdr, - FileTypes.Trd, - FileTypes.Scl, + FilePickerType.All, + FilePickerType.TapeFiles, + FilePickerType.SnapshotFiles, + FilePickerType.DiskFiles, + FilePickerType.Spectron, + FilePickerType.Sna, + FilePickerType.Szx, + FilePickerType.Tap, + FilePickerType.Tzx, + FilePickerType.Z80, + FilePickerType.Zip, + FilePickerType.Pok, + FilePickerType.Mdr, + FilePickerType.Trd, + FilePickerType.Scl, ]); public static async Task> OpenTapeFileAsync() => await OpenFileAsync("Select Tape File", [ - FileTypes.TapeFiles, - FileTypes.Tap, - FileTypes.Tzx + FilePickerType.TapeFiles, + FilePickerType.Tap, + FilePickerType.Tzx ]); public static async Task> OpenCustomRomFileAsync() => await OpenFileAsync("Select Custom ROM File", [ - FileTypes.Rom, - FileTypes.Bin, - FileTypes.Any, + FilePickerType.Rom, + FilePickerType.Bin, + FilePickerType.Any, ]); public static async Task> OpenDiskImageFileAsync() => await OpenFileAsync("Select Disk Image", [ - FileTypes.Img, - FileTypes.Any, + FilePickerType.Img, + FilePickerType.Any, ]); public static async Task> OpenMicrodriveFileAsync() => await OpenFileAsync("Select Microdrive File", [ - FileTypes.Mdr, - FileTypes.Any, + FilePickerType.Mdr, + FilePickerType.Any, ]); public static async Task> OpenDiskFileAsync() => await OpenFileAsync("Select Disk File", [ - FileTypes.DiskFiles, - FileTypes.Trd, - FileTypes.Scl, - FileTypes.Any, + FilePickerType.DiskFiles, + FilePickerType.Trd, + FilePickerType.Scl, + FilePickerType.Any, ]); public static async Task SaveTapeFileAsync(string? suggestedFileName = null) @@ -83,7 +83,7 @@ await OpenFileAsync("Select Disk File", DefaultExtension = ".tzx", SuggestedFileName = suggestedFileName, ShowOverwritePrompt = true, - FileTypeChoices = [FileTypes.Tzx, FileTypes.Tap] + FileTypeChoices = [FilePickerType.Tzx, FilePickerType.Tap] }); } @@ -102,7 +102,7 @@ await OpenFileAsync("Select Disk File", DefaultExtension = ".mdr", SuggestedFileName = suggestedFileName, ShowOverwritePrompt = true, - FileTypeChoices = [FileTypes.Mdr] + FileTypeChoices = [FilePickerType.Mdr] }); } @@ -121,7 +121,7 @@ await OpenFileAsync("Select Disk File", DefaultExtension = ".trd", SuggestedFileName = suggestedFileName, ShowOverwritePrompt = true, - FileTypeChoices = [FileTypes.Trd, FileTypes.Scl] + FileTypeChoices = [FilePickerType.Trd, FilePickerType.Scl] }); } @@ -140,7 +140,7 @@ await OpenFileAsync("Select Disk File", DefaultExtension = ".spectron", SuggestedFileName = suggestedFileName, ShowOverwritePrompt = true, - FileTypeChoices = [FileTypes.Spectron, FileTypes.Szx, FileTypes.Z80, FileTypes.Sna], + FileTypeChoices = [FilePickerType.Spectron, FilePickerType.Szx, FilePickerType.Z80, FilePickerType.Sna], }); } @@ -159,7 +159,7 @@ await OpenFileAsync("Select Disk File", DefaultExtension = ".wav", SuggestedFileName = suggestedFileName, ShowOverwritePrompt = true, - FileTypeChoices = [FileTypes.Wav], + FileTypeChoices = [FilePickerType.Wav], }); } @@ -178,7 +178,7 @@ await OpenFileAsync("Select Disk File", DefaultExtension = ".mp4", SuggestedFileName = suggestedFileName, ShowOverwritePrompt = true, - FileTypeChoices = [FileTypes.Mp4], + FileTypeChoices = [FilePickerType.Mp4], }); } @@ -197,7 +197,7 @@ await OpenFileAsync("Select Disk File", DefaultExtension = ".png", SuggestedFileName = suggestedFileName, ShowOverwritePrompt = true, - FileTypeChoices = [FileTypes.Png], + FileTypeChoices = [FilePickerType.Png], }); } diff --git a/src/Spectron/Dialogs/FileTypes.cs b/src/Spectron/Dialogs/FilePickerType.cs similarity index 98% rename from src/Spectron/Dialogs/FileTypes.cs rename to src/Spectron/Dialogs/FilePickerType.cs index 3fd791b..77e1729 100644 --- a/src/Spectron/Dialogs/FileTypes.cs +++ b/src/Spectron/Dialogs/FilePickerType.cs @@ -2,7 +2,7 @@ namespace OldBit.Spectron.Dialogs; -public static class FileTypes +public static class FilePickerType { public static FilePickerFileType All { get; } = new("All Files") { diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index 30ebc4b..bbadbde 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -1,9 +1,14 @@ using System.Collections.ObjectModel; +using System.ComponentModel.DataAnnotations; +using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using OldBit.Spectron.Dialogs; +using OldBit.Spectron.Emulation.Files; namespace OldBit.Spectron.ViewModels; -public partial class FavoriteItemViewModel : ObservableObject +public partial class FavoriteItemViewModel : ObservableValidator { public ObservableCollection Nodes { get; } = []; @@ -11,6 +16,9 @@ public partial class FavoriteItemViewModel : ObservableObject private string _title = string.Empty; [ObservableProperty] + [Required] + [CustomValidation(typeof(FavoriteItemViewModel), nameof(ValidatePath))] + [NotifyDataErrorInfo] private string _path = string.Empty; [ObservableProperty] @@ -46,4 +54,44 @@ public FavoriteItemViewModel Clone() return copy; } + + [RelayCommand] + private async Task GetFile() + { + var files = await FileDialogs.OpenEmulatorFileAsync(); + + if (files.Count <= 0) + { + return; + } + + var filePath = files[0].Path.LocalPath; + + var fileType = FileTypeResolver.FromPath(filePath); + + if (fileType == FileType.Unsupported) + { + await MessageDialogs.Warning($"Unsupported file type: {fileType}."); + return; + } + + Path = filePath; + } + + public static ValidationResult? ValidatePath(string s, ValidationContext context) + { + var fileType = FileTypeResolver.FromPath(s); + + if (fileType == FileType.Unsupported) + { + return new ValidationResult("Unsupported file type."); + } + + if (!System.IO.File.Exists(s)) + { + return new ValidationResult("File does not exist."); + } + + return ValidationResult.Success;; + } } \ No newline at end of file diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs b/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs index 702ebc2..cebb16b 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs @@ -5,7 +5,6 @@ using Microsoft.Extensions.Logging; using OldBit.Spectron.Dialogs; using OldBit.Spectron.Emulation; -using OldBit.Spectron.Emulation.Devices.Interface1; using OldBit.Spectron.Emulation.Extensions; using OldBit.Spectron.Emulation.Files; using OldBit.Spectron.Emulation.Rom; diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Files.cs b/src/Spectron/ViewModels/MainWindowViewModel.Files.cs index d795b2e..4b5b215 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Files.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Files.cs @@ -5,11 +5,11 @@ using OldBit.Spectron.Dialogs; using OldBit.Spectron.Emulation.Devices.Beta128.Drive; using OldBit.Spectron.Emulation.Devices.Interface1.Microdrives; +using OldBit.Spectron.Emulation.Extensions; using OldBit.Spectron.Emulation.Files; using OldBit.Spectron.Emulation.Snapshot; using OldBit.Spectron.Files.Pok; using OldBit.Spectron.Messages; -using FileTypes = OldBit.Spectron.Emulation.Files.FileTypes; namespace OldBit.Spectron.ViewModels; @@ -37,7 +37,7 @@ private async Task HandleLoadFileAsync(string? filePath) filePath = files[0].Path.LocalPath; } - var fileType = FileTypes.GetFileType(filePath); + var fileType = FileTypeResolver.FromPath(filePath); if (fileType == FileType.Unsupported) { await MessageDialogs.Warning($"Unsupported file type: {fileType}."); @@ -104,8 +104,8 @@ private async Task HandleLoadFileAsync(string? filePath) if (fileType.IsArchive()) { - var archive = new ZipFileReader(filePath); - var files = archive.GetFiles(); + var archive = new ZipArchiveReader(filePath); + var files = archive.GetSupportedFiles(); switch (files.Count) { diff --git a/src/Spectron/ViewModels/TapeMenuViewModel.cs b/src/Spectron/ViewModels/TapeMenuViewModel.cs index cb2fa74..1800650 100644 --- a/src/Spectron/ViewModels/TapeMenuViewModel.cs +++ b/src/Spectron/ViewModels/TapeMenuViewModel.cs @@ -5,11 +5,11 @@ using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using OldBit.Spectron.Dialogs; +using OldBit.Spectron.Emulation.Extensions; using OldBit.Spectron.Emulation.Files; using OldBit.Spectron.Emulation.Tape; using OldBit.Spectron.Files.Extensions; using OldBit.Spectron.Messages; -using FileTypes = OldBit.Spectron.Emulation.Files.FileTypes; namespace OldBit.Spectron.ViewModels; @@ -59,7 +59,7 @@ private async Task Save() { var fileName = string.Empty; - var fileType = FileTypes.GetFileType(_recentFilesViewModel.CurrentFileName); + var fileType = FileTypeResolver.FromPath(_recentFilesViewModel.CurrentFileName); if (fileType.IsTape()) { @@ -73,7 +73,7 @@ private async Task Save() return; } - fileType = FileTypes.GetFileType(file.Path.LocalPath); + fileType = FileTypeResolver.FromPath(file.Path.LocalPath); if (fileType == FileType.Tap) { diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 013431e..477e0ec 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -121,10 +121,15 @@ Text="{Binding Title}" IsReadOnly="{Binding IsRoot}"/> - + + diff --git a/src/Spectron/Views/FavoritesView.axaml.cs b/src/Spectron/Views/FavoritesView.axaml.cs index 69e8f0b..81e5bc1 100644 --- a/src/Spectron/Views/FavoritesView.axaml.cs +++ b/src/Spectron/Views/FavoritesView.axaml.cs @@ -72,7 +72,7 @@ private static bool IsFileSupported(string? filePath) return false; } - var fileType = FileTypes.GetFileType(filePath); + var fileType = FileTypeResolver.FromPath(filePath); return fileType != FileType.Unsupported; } From 730c346b6320ebcc1ec1fd474e91ff296e0fc2ee Mon Sep 17 00:00:00 2001 From: voytas Date: Sun, 1 Mar 2026 20:57:41 +0000 Subject: [PATCH 11/26] Refactor Favorites management: replace `Favorites` with `Items`, introduce async favorites loading/saving, and improve data handling in FavoritesView. --- .../Messages/ShowFavoritesViewMessage.cs | 7 ++- .../Messages/UpdateFavoritesMessage.cs | 5 ++ src/Spectron/Settings/FavoritePrograms.cs | 6 +- src/Spectron/ViewModels/FavoritesViewModel.cs | 62 ++++++++++++++++--- .../ViewModels/MainWindowViewModel.Dialogs.cs | 9 ++- .../ViewModels/MainWindowViewModel.Window.cs | 29 ++++----- .../ViewModels/MainWindowViewModel.cs | 8 +++ src/Spectron/Views/FavoritesView.axaml.cs | 6 ++ src/Spectron/Views/MainWindow.axaml.cs | 20 +++--- 9 files changed, 114 insertions(+), 38 deletions(-) create mode 100644 src/Spectron/Messages/UpdateFavoritesMessage.cs diff --git a/src/Spectron/Messages/ShowFavoritesViewMessage.cs b/src/Spectron/Messages/ShowFavoritesViewMessage.cs index c3b609b..6dffff2 100644 --- a/src/Spectron/Messages/ShowFavoritesViewMessage.cs +++ b/src/Spectron/Messages/ShowFavoritesViewMessage.cs @@ -1,5 +1,10 @@ +using CommunityToolkit.Mvvm.Messaging.Messages; +using OldBit.Spectron.Settings; using OldBit.Spectron.ViewModels; namespace OldBit.Spectron.Messages; -public record ShowFavoritesViewMessage(FavoritesViewModel ViewModel); \ No newline at end of file +public class ShowFavoritesViewMessage(FavoritesViewModel viewModel) : AsyncRequestMessage +{ + public FavoritesViewModel ViewModel { get; } = viewModel; +} \ No newline at end of file diff --git a/src/Spectron/Messages/UpdateFavoritesMessage.cs b/src/Spectron/Messages/UpdateFavoritesMessage.cs new file mode 100644 index 0000000..5c90969 --- /dev/null +++ b/src/Spectron/Messages/UpdateFavoritesMessage.cs @@ -0,0 +1,5 @@ +using OldBit.Spectron.Settings; + +namespace OldBit.Spectron.Messages; + +public record UpdateFavoritesMessage(FavoritePrograms Favorites); \ No newline at end of file diff --git a/src/Spectron/Settings/FavoritePrograms.cs b/src/Spectron/Settings/FavoritePrograms.cs index fc4e89d..d6b9c85 100644 --- a/src/Spectron/Settings/FavoritePrograms.cs +++ b/src/Spectron/Settings/FavoritePrograms.cs @@ -4,13 +4,13 @@ namespace OldBit.Spectron.Settings; public class FavoriteProgram { - public string FilePath { get; set; } = string.Empty; + public string Path { get; init; } = string.Empty; public string Title { get; init; } = string.Empty; public bool IsFolder { get; init; } - public List Favorites { get; } = []; + public List Items { get; init; } = []; } public class FavoritePrograms { - public List Favorites { get; } = []; + public List Items { get; init; } = []; } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index 18b86e3..d866e31 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -5,6 +5,8 @@ using Avalonia.Controls; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; +using CommunityToolkit.Mvvm.Messaging; +using OldBit.Spectron.Messages; using OldBit.Spectron.Settings; namespace OldBit.Spectron.ViewModels; @@ -19,15 +21,15 @@ public partial class FavoritesViewModel : ObservableObject public ObservableCollection Nodes { get; } = []; - public List Favorites + public FavoritePrograms Favorites { - get; + private get; set { field = value; - UpdateFavorites(); + RefreshFavorites(); } - } = []; + } = new(); public void Opening(ItemCollection menuItems) { @@ -46,12 +48,56 @@ public void Opening(ItemCollection menuItems) AddFavoriteItems(menuItems, Nodes[0].Nodes!); } - private void UpdateFavorites() + public FavoritePrograms GetFavorites() + { + return new FavoritePrograms + { + Items = Convert(Nodes[0].Nodes) + }; + + static List Convert(IEnumerable nodes) + { + var result = new List(); + + foreach (var node in nodes) + { + if (node.IsFolder) + { + var folder = new FavoriteProgram + { + Title = node.Title, + IsFolder = true + }; + + folder.Items.AddRange(Convert(node.Nodes)); + result.Add(folder); + } + else + { + result.Add(new FavoriteProgram + { + Title = node.Title, + Path = node.Path + }); + } + } + + return result; + } + } + + public void UpdateFavorites() + { + var favorites = GetFavorites(); + WeakReferenceMessenger.Default.Send(new UpdateFavoritesMessage(favorites)); + } + + private void RefreshFavorites() { Nodes.Clear(); Nodes.Add(new FavoriteItemViewModel { Title = "Favorites", IsFolder = true, IsRoot = true }); - AddFavorites(Favorites, Nodes[0]); + AddFavorites(Favorites.Items, Nodes[0]); } private static void AddFavorites(List favorites, FavoriteItemViewModel parent) @@ -63,12 +109,12 @@ private static void AddFavorites(List favorites, FavoriteItemVi var folder = new FavoriteItemViewModel { Title = favorite.Title, IsFolder = true }; parent.Nodes.Add(folder); - AddFavorites(favorite.Favorites, folder); + AddFavorites(favorite.Items, folder); continue; } - parent.Nodes.Add(new FavoriteItemViewModel { Title = favorite.Title, IsFile = true }); + parent.Nodes.Add(new FavoriteItemViewModel { Title = favorite.Title, Path = favorite.Path, IsFile = true }); } } diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs b/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs index 20c3598..61e4f9c 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Dialogs.cs @@ -25,6 +25,8 @@ private async Task OpenPreferencesWindow() if (preferences != null) { + await _preferencesService.SaveAsync(preferences); + _preferences = preferences; Emulator?.IsUlaPlusEnabled = _preferences.IsUlaPlusEnabled; @@ -137,6 +139,9 @@ private void OpenTrainersWindow() => private void OpenPrintOutputViewer() => WeakReferenceMessenger.Default.Send(new ShowPrintOutputViewMessage(Emulator!.Printer)); - private void OpenFavoritesWindow() => - WeakReferenceMessenger.Default.Send(new ShowFavoritesViewMessage(FavoritesViewModel)); + private async Task OpenFavoritesWindow() + { + FavoritesViewModel.Favorites = _favorites; + await WeakReferenceMessenger.Default.Send(new ShowFavoritesViewMessage(FavoritesViewModel)); + } } \ No newline at end of file diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Window.cs b/src/Spectron/ViewModels/MainWindowViewModel.Window.cs index d0ff20d..1af7535 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Window.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Window.cs @@ -43,19 +43,19 @@ internal void WindowDeactivated(ActivatedEventArgs args) private FavoritePrograms TestFavorites() { var programs = new FavoritePrograms(); - programs.Favorites.Add(new FavoriteProgram { Title = "Games", IsFolder = true }); - programs.Favorites[0].Favorites.Add(new FavoriteProgram { Title = "Manic Miner" }); - programs.Favorites[0].Favorites.Add(new FavoriteProgram { Title = "The Prize" }); - programs.Favorites[0].Favorites.Add(new FavoriteProgram { Title = "Bruce Lee" }); + programs.Items.Add(new FavoriteProgram { Title = "Games", IsFolder = true }); + programs.Items[0].Items.Add(new FavoriteProgram { Title = "Manic Miner" }); + programs.Items[0].Items.Add(new FavoriteProgram { Title = "The Prize" }); + programs.Items[0].Items.Add(new FavoriteProgram { Title = "Bruce Lee" }); - programs.Favorites.Add(new FavoriteProgram { Title = "Demos", IsFolder = true }); - programs.Favorites[1].Favorites.Add(new FavoriteProgram { Title = "Demo 1" }); - programs.Favorites[1].Favorites.Add(new FavoriteProgram { Title = "Demo 2" }); - programs.Favorites[1].Favorites.Add(new FavoriteProgram { Title = "Demo 3" }); + programs.Items.Add(new FavoriteProgram { Title = "Demos", IsFolder = true }); + programs.Items[1].Items.Add(new FavoriteProgram { Title = "Demo 1" }); + programs.Items[1].Items.Add(new FavoriteProgram { Title = "Demo 2" }); + programs.Items[1].Items.Add(new FavoriteProgram { Title = "Demo 3" }); - programs.Favorites.Add(new FavoriteProgram { Title = "Some other item 1" }); - programs.Favorites.Add(new FavoriteProgram { Title = "Some other item 2" }); - programs.Favorites.Add(new FavoriteProgram { Title = "Some other item 3" }); + programs.Items.Add(new FavoriteProgram { Title = "Some other item 1" }); + programs.Items.Add(new FavoriteProgram { Title = "Some other item 2" }); + programs.Items.Add(new FavoriteProgram { Title = "Some other item 3" }); return programs; } @@ -63,11 +63,11 @@ private FavoritePrograms TestFavorites() private async Task WindowOpenedAsync() { _preferences = await _preferencesService.LoadAsync(); + _favorites = await _favoritesService.LoadAsync(); // TODO: Temporary data - //var programs = await _favoritesService.LoadAsync(); - var programs = TestFavorites(); - FavoritesViewModel.Favorites = programs.Favorites; + // _favorites = TestFavorites(); + FavoritesViewModel.Favorites = _favorites; ThemeManager.SelectTheme(CommandLineArgs?.Theme ?? _preferences.Theme); @@ -215,6 +215,7 @@ private async Task WindowClosingAsync(WindowClosingEventArgs args) await Task.WhenAll( _preferencesService.SaveAsync(_preferences), + _favoritesService.SaveAsync(_favorites), RecentFilesViewModel.SaveAsync(), _sessionService.SaveAsync(Emulator, _preferences.Resume)); diff --git a/src/Spectron/ViewModels/MainWindowViewModel.cs b/src/Spectron/ViewModels/MainWindowViewModel.cs index fbdc383..db2fdde 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.cs @@ -31,6 +31,7 @@ using OldBit.Spectron.Files.Pok; using OldBit.Spectron.Input; using OldBit.Spectron.Logging; +using OldBit.Spectron.Messages; using OldBit.Spectron.Models; using OldBit.Spectron.Services; using OldBit.Spectron.Settings; @@ -69,6 +70,7 @@ public partial class MainWindowViewModel : ObservableObject private Emulator? Emulator { get; set; } private Preferences _preferences = new(); + private FavoritePrograms _favorites = new(); private TimeSpan _lastScreenRender = TimeSpan.Zero; private MediaRecorder? _mediaRecorder; private bool _canClose; @@ -375,6 +377,12 @@ public MainWindowViewModel( WeakReferenceMessenger.Default.Register(this, (_, _) => PauseForDebug()); + WeakReferenceMessenger.Default.Register(this, async (_, message) => + { + _favorites = message.Favorites; + await _favoritesService.SaveAsync(_favorites); + }); + _frameRateCalculator.FrameRateChanged = fps => { Dispatcher.UIThread.Post(() => diff --git a/src/Spectron/Views/FavoritesView.axaml.cs b/src/Spectron/Views/FavoritesView.axaml.cs index 81e5bc1..be62290 100644 --- a/src/Spectron/Views/FavoritesView.axaml.cs +++ b/src/Spectron/Views/FavoritesView.axaml.cs @@ -24,6 +24,12 @@ protected override void OnDataContextChanged(EventArgs e) _viewModel.SelectedItem = viewModel.Nodes.FirstOrDefault(); } + protected override void OnClosed(EventArgs e) + { + _viewModel?.UpdateFavorites(); + base.OnClosed(e); + } + private void OnFileDragOver(object? sender, DragEventArgs e) { e.DragEffects = DragDropEffects.None; diff --git a/src/Spectron/Views/MainWindow.axaml.cs b/src/Spectron/Views/MainWindow.axaml.cs index 9814298..45387b1 100644 --- a/src/Spectron/Views/MainWindow.axaml.cs +++ b/src/Spectron/Views/MainWindow.axaml.cs @@ -30,20 +30,20 @@ public MainWindow() WeakReferenceMessenger.Default.Register(this, (window, message) => ShowDialog(window, new DiskViewModel(message.DiskDriveManager, message.DriveId))); - WeakReferenceMessenger.Default.Register(this, (window, m) => - Show(window, m.ViewModel)); + WeakReferenceMessenger.Default.Register(this, (window, message) => + Show(window, message.ViewModel)); - WeakReferenceMessenger.Default.Register(this, (window, m) => - Show(window, m.ViewModel)); + WeakReferenceMessenger.Default.Register(this, (window, message) => + Show(window, message.ViewModel)); - WeakReferenceMessenger.Default.Register(this, (window, m) => - Show(window, m.ViewModel)); + WeakReferenceMessenger.Default.Register(this, (window, message) => + Show(window, message.ViewModel)); - WeakReferenceMessenger.Default.Register(this, (_, m) => - Show(null, m.ViewModel)); + WeakReferenceMessenger.Default.Register(this, (_, message) => + Show(null, message.ViewModel)); - WeakReferenceMessenger.Default.Register(this, (window, m) => - Show(window, m.ViewModel)); + WeakReferenceMessenger.Default.Register(this, (window, message) => + Show(window, message.ViewModel)); WeakReferenceMessenger.Default.Register(this, (window, message) => { From 81e65b8ec94ca58fba30d0561096598365628354 Mon Sep 17 00:00:00 2001 From: voytas Date: Mon, 2 Mar 2026 19:29:56 +0000 Subject: [PATCH 12/26] Fix visibility logic for the adorner --- .../Controls/Validation/DataValidationErrors.axaml | 8 +++++++- src/Spectron/Views/FavoritesView.axaml | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Spectron/Controls/Validation/DataValidationErrors.axaml b/src/Spectron/Controls/Validation/DataValidationErrors.axaml index 4f296c1..eb6f18b 100644 --- a/src/Spectron/Controls/Validation/DataValidationErrors.axaml +++ b/src/Spectron/Controls/Validation/DataValidationErrors.axaml @@ -21,9 +21,15 @@ + + + + + + + + + + + + + + + + From 5f82fb57b257eae80e49d6deb33b88fff5a0a842 Mon Sep 17 00:00:00 2001 From: voytas Date: Wed, 18 Mar 2026 20:21:43 +0000 Subject: [PATCH 21/26] Show `Settings` panel conditionally for tape files and add `IsTapeFile` property to `FavoriteItemViewModel`. --- .../ViewModels/FavoriteItemViewModel.cs | 17 +++++++++++++++++ src/Spectron/Views/FavoritesView.axaml | 18 ++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index 078893a..0532134 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -22,12 +22,14 @@ public partial class FavoriteItemViewModel : ObservableValidator [Required] [CustomValidation(typeof(FavoriteItemViewModel), nameof(ValidatePath))] [NotifyDataErrorInfo] + [NotifyPropertyChangedFor(nameof(IsTapeFile))] private string _path = string.Empty; [ObservableProperty] private bool _isFolder; [ObservableProperty] + [NotifyPropertyChangedFor(nameof(IsTapeFile))] private bool _isFile; [ObservableProperty] @@ -36,6 +38,21 @@ public partial class FavoriteItemViewModel : ObservableValidator [ObservableProperty] private bool _isCutItem; + public bool IsTapeFile + { + get + { + if (!IsFile) + { + return false; + } + + var fileType = FileTypeResolver.FromPath(Path); + + return fileType is FileType.Tap or FileType.Tzx; + } + } + public FavoriteItemViewModel Clone() { var copy = new FavoriteItemViewModel diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 9789927..221009e 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -148,14 +148,16 @@ - - - - - - - - + + + + + + + + + + From 6f8634ef6a7c0f54f8cfeceafa956e78f52e7d77 Mon Sep 17 00:00:00 2001 From: voytas Date: Wed, 18 Mar 2026 20:37:22 +0000 Subject: [PATCH 22/26] Add `IsUlaPlusEnabled` setting to favorites and update emulator configuration logic --- src/Spectron/Settings/FavoritePrograms.cs | 1 + src/Spectron/ViewModels/FavoriteItemViewModel.cs | 3 ++- src/Spectron/ViewModels/FavoriteSettingsViewModel.cs | 8 +++++++- src/Spectron/ViewModels/FavoritesViewModel.cs | 3 ++- src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs | 6 +++--- src/Spectron/Views/FavoritesView.axaml | 5 +++++ 6 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/Spectron/Settings/FavoritePrograms.cs b/src/Spectron/Settings/FavoritePrograms.cs index 294c9c6..ccb21f2 100644 --- a/src/Spectron/Settings/FavoritePrograms.cs +++ b/src/Spectron/Settings/FavoritePrograms.cs @@ -10,6 +10,7 @@ public class FavoriteProgram public bool IsFolder { get; init; } public List Items { get; init; } = []; public ComputerType? ComputerType { get; init; } + public bool? IsUlaPlusEnabled { get; init; } } public class FavoritePrograms diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index 0532134..fae7dec 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -130,7 +130,8 @@ public FavoriteProgram ToFavoriteProgram() { Title = Title, Path = Path, - ComputerType = SettingsViewModel.ComputerType.Value + ComputerType = SettingsViewModel.ComputerType.Value, + IsUlaPlusEnabled = SettingsViewModel.IsUlaPlusEnabled, }; } } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs b/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs index ecf87f3..cdc4d4a 100644 --- a/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs @@ -10,9 +10,15 @@ public partial class FavoriteSettingsViewModel : ObservableObject [ObservableProperty] private NameValuePair _computerType; - public FavoriteSettingsViewModel(ComputerType? computerType = null) + [ObservableProperty] + private bool? _isUlaPlusEnabled; + + public FavoriteSettingsViewModel( + ComputerType? computerType = null, + bool? isUlaPlusEnabled = null) { ComputerType = ComputerTypes.FirstOrDefault(x => x.Value == computerType, ComputerTypes[0]); + IsUlaPlusEnabled = isUlaPlusEnabled; } public List> ComputerTypes { get; } = diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index e14a9d8..6820852 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -111,7 +111,8 @@ private static void AddFavorites(List favorites, FavoriteItemVi IsFile = true, SettingsViewModel = new FavoriteSettingsViewModel ( - favorite.ComputerType + favorite.ComputerType, + favorite.IsUlaPlusEnabled ) }); } diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs b/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs index 58c5839..e11b18a 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs @@ -27,9 +27,9 @@ private void CreateEmulator(ComputerType computerType, RomType romType, byte[]? Initialize(emulator); } - private void ApplyEmulatorDefaults(Emulator emulator, bool hardReset = false) + private void ApplyEmulatorDefaults(Emulator emulator, bool hardReset = false, FavoriteProgram? favorite = null) { - emulator.IsUlaPlusEnabled = hardReset ? _preferences.IsUlaPlusEnabled : IsUlaPlusEnabled; + emulator.IsUlaPlusEnabled = hardReset ? _preferences.IsUlaPlusEnabled : favorite?.IsUlaPlusEnabled ?? IsUlaPlusEnabled; emulator.IsFloatingBusEnabled = _preferences.IsFloatingBusEnabled; emulator.JoystickManager.Configure(hardReset ? _preferences.Joystick.JoystickType : JoystickType); emulator.Printer.IsEnabled = _preferences.Printer.IsZxPrinterEnabled; @@ -93,7 +93,7 @@ private bool CreateEmulator(Stream stream, FileType fileType, FavoriteProgram? f emulator.TapeManager.InsertTape(stream, fileType, _preferences.Tape.IsAutoPlayEnabled && TapeLoadSpeed != TapeSpeed.Instant); - ApplyEmulatorDefaults(emulator); + ApplyEmulatorDefaults(emulator, favorite: favorite); } if (emulator != null) diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 221009e..c8e3825 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -27,6 +27,9 @@ + @@ -155,6 +158,8 @@ + + From 73d2e8b7dd306a3bda882e3b60b8c4002896482b Mon Sep 17 00:00:00 2001 From: voytas Date: Thu, 19 Mar 2026 19:05:03 +0000 Subject: [PATCH 23/26] Add joystick, mouse, and tape speed settings to favorites and enhance emulator configuration logic --- src/Spectron/Extensions/EmulatorExtensions.cs | 4 +- src/Spectron/Settings/FavoritePrograms.cs | 7 +++ .../ViewModels/FavoriteItemViewModel.cs | 6 +++ .../ViewModels/FavoriteSettingsViewModel.cs | 51 ++++++++++++++++++- src/Spectron/ViewModels/FavoritesViewModel.cs | 16 +++++- .../MainWindowViewModel.Emulator.cs | 8 +-- src/Spectron/Views/FavoritesView.axaml | 30 ++++++++--- src/Spectron/Views/PreferencesView.axaml | 10 ++-- 8 files changed, 112 insertions(+), 20 deletions(-) diff --git a/src/Spectron/Extensions/EmulatorExtensions.cs b/src/Spectron/Extensions/EmulatorExtensions.cs index f13b68e..db91ac9 100644 --- a/src/Spectron/Extensions/EmulatorExtensions.cs +++ b/src/Spectron/Extensions/EmulatorExtensions.cs @@ -17,10 +17,10 @@ public void ConfigureTape(TapeSettings tapeSettings) emulator?.TapeManager.TapeLoadSpeed = tapeSettings.LoadSpeed; } - public void ConfigureAudio(AudioSettings audioSettings) + public void ConfigureAudio(AudioSettings audioSettings, FavoriteProgram? favorite = null) { emulator?.AudioManager.IsBeeperEnabled = audioSettings.IsBeeperEnabled; - emulator?.AudioManager.IsAyEnabled = audioSettings.IsAyAudioEnabled; + emulator?.AudioManager.IsAyEnabled = favorite?.IsAyEnabled ?? audioSettings.IsAyAudioEnabled; emulator?.AudioManager.IsAySupportedStandardSpectrum = audioSettings.IsAySupportedStandardSpectrum; emulator?.AudioManager.StereoMode = audioSettings.StereoMode; } diff --git a/src/Spectron/Settings/FavoritePrograms.cs b/src/Spectron/Settings/FavoritePrograms.cs index ccb21f2..4807004 100644 --- a/src/Spectron/Settings/FavoritePrograms.cs +++ b/src/Spectron/Settings/FavoritePrograms.cs @@ -1,5 +1,8 @@ using System.Collections.Generic; using OldBit.Spectron.Emulation; +using OldBit.Spectron.Emulation.Devices.Joystick; +using OldBit.Spectron.Emulation.Devices.Mouse; +using OldBit.Spectron.Emulation.Tape; namespace OldBit.Spectron.Settings; @@ -10,7 +13,11 @@ public class FavoriteProgram public bool IsFolder { get; init; } public List Items { get; init; } = []; public ComputerType? ComputerType { get; init; } + public JoystickType? JoystickType { get; init; } + public MouseType? MouseType { get; init; } + public TapeSpeed? TapeLoadSpeed { get; init; } public bool? IsUlaPlusEnabled { get; init; } + public bool? IsAyEnabled { get; init; } } public class FavoritePrograms diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index fae7dec..9137d42 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -16,6 +16,8 @@ public partial class FavoriteItemViewModel : ObservableValidator public FavoriteSettingsViewModel SettingsViewModel { get; set; } = new(); [ObservableProperty] + [Required] + [NotifyDataErrorInfo] private string _title = string.Empty; [ObservableProperty] @@ -131,7 +133,11 @@ public FavoriteProgram ToFavoriteProgram() Title = Title, Path = Path, ComputerType = SettingsViewModel.ComputerType.Value, + JoystickType = SettingsViewModel.JoystickType.Value, + MouseType = SettingsViewModel.MouseType.Value, + TapeLoadSpeed = SettingsViewModel.TapeLoadSpeed.Value, IsUlaPlusEnabled = SettingsViewModel.IsUlaPlusEnabled, + IsAyEnabled = SettingsViewModel.IsAyEnabled }; } } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs b/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs index cdc4d4a..9c7749c 100644 --- a/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs @@ -2,6 +2,9 @@ using System.Linq; using CommunityToolkit.Mvvm.ComponentModel; using OldBit.Spectron.Emulation; +using OldBit.Spectron.Emulation.Devices.Joystick; +using OldBit.Spectron.Emulation.Devices.Mouse; +using OldBit.Spectron.Emulation.Tape; namespace OldBit.Spectron.ViewModels; @@ -10,15 +13,35 @@ public partial class FavoriteSettingsViewModel : ObservableObject [ObservableProperty] private NameValuePair _computerType; + [ObservableProperty] + private NameValuePair _joystickType; + + [ObservableProperty] + private NameValuePair _mouseType; + + [ObservableProperty] + private NameValuePair _tapeLoadSpeed; + [ObservableProperty] private bool? _isUlaPlusEnabled; + [ObservableProperty] + private bool? _isAyEnabled; + public FavoriteSettingsViewModel( ComputerType? computerType = null, - bool? isUlaPlusEnabled = null) + JoystickType? joystickType = null, + MouseType? mouseType = null, + TapeSpeed? tapeLoadingSpeed = null, + bool? isUlaPlusEnabled = null, + bool? isAyEnabled = null) { ComputerType = ComputerTypes.FirstOrDefault(x => x.Value == computerType, ComputerTypes[0]); + JoystickType = JoystickTypes.FirstOrDefault(x => x.Value == joystickType, JoystickTypes[0]); + MouseType = MouseTypes.FirstOrDefault(x => x.Value == mouseType, MouseTypes[0]); + TapeLoadSpeed = TapeLoadSpeeds.FirstOrDefault(x => x.Value == tapeLoadingSpeed, TapeLoadSpeeds[0]); IsUlaPlusEnabled = isUlaPlusEnabled; + IsAyEnabled = isAyEnabled; } public List> ComputerTypes { get; } = @@ -28,4 +51,30 @@ public FavoriteSettingsViewModel( new("ZX Spectrum 48k", OldBit.Spectron.Emulation.ComputerType.Spectrum48K), new("ZX Spectrum 128k", OldBit.Spectron.Emulation.ComputerType.Spectrum128K), ]; + + public List> JoystickTypes { get; } = + [ + new("Default", null), + new("None", OldBit.Spectron.Emulation.Devices.Joystick.JoystickType.None), + new("Kempston", OldBit.Spectron.Emulation.Devices.Joystick.JoystickType.Kempston), + new("Sinclair 1", OldBit.Spectron.Emulation.Devices.Joystick.JoystickType.Sinclair1), + new("Sinclair 2", OldBit.Spectron.Emulation.Devices.Joystick.JoystickType.Sinclair2), + new("Cursor", OldBit.Spectron.Emulation.Devices.Joystick.JoystickType.Cursor), + new("Fuller", OldBit.Spectron.Emulation.Devices.Joystick.JoystickType.Fuller), + ]; + + public List> MouseTypes { get; } = + [ + new("Default", null), + new("None", OldBit.Spectron.Emulation.Devices.Mouse.MouseType.None), + new("Kempston", OldBit.Spectron.Emulation.Devices.Mouse.MouseType.Kempston), + ]; + + public List> TapeLoadSpeeds { get; } = + [ + new("Default", null), + new("Normal", TapeSpeed.Normal), + new("Instant", TapeSpeed.Instant), + new("Instant", TapeSpeed.Accelerated), + ]; } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index 6820852..abb5dae 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -112,7 +112,11 @@ private static void AddFavorites(List favorites, FavoriteItemVi SettingsViewModel = new FavoriteSettingsViewModel ( favorite.ComputerType, - favorite.IsUlaPlusEnabled + favorite.JoystickType, + favorite.MouseType, + favorite.TapeLoadSpeed, + favorite.IsUlaPlusEnabled, + favorite.IsAyEnabled ) }); } @@ -292,6 +296,11 @@ private void AddFavoriteItems(ItemCollection menuItems, IEnumerable - + - - - - - + + - + + + + + + + + + + + + + + + + + + + + diff --git a/src/Spectron/Views/PreferencesView.axaml b/src/Spectron/Views/PreferencesView.axaml index 9830b41..11e40e2 100644 --- a/src/Spectron/Views/PreferencesView.axaml +++ b/src/Spectron/Views/PreferencesView.axaml @@ -448,19 +448,19 @@ @@ -489,14 +489,14 @@ Date: Thu, 19 Mar 2026 19:45:21 +0000 Subject: [PATCH 24/26] Add `IsInterface1Enabled`, `IsBeta128Enabled`, and `IsDivMmcEnabled` settings to favorites and update emulator configuration logic --- src/Spectron/Settings/FavoritePrograms.cs | 3 +++ .../ViewModels/FavoriteItemViewModel.cs | 5 ++++- .../ViewModels/FavoriteSettingsViewModel.cs | 19 +++++++++++++++++-- src/Spectron/ViewModels/FavoritesViewModel.cs | 5 ++++- .../MainWindowViewModel.Emulator.cs | 8 ++++---- src/Spectron/Views/FavoritesView.axaml | 5 ++++- 6 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/Spectron/Settings/FavoritePrograms.cs b/src/Spectron/Settings/FavoritePrograms.cs index 4807004..5064405 100644 --- a/src/Spectron/Settings/FavoritePrograms.cs +++ b/src/Spectron/Settings/FavoritePrograms.cs @@ -18,6 +18,9 @@ public class FavoriteProgram public TapeSpeed? TapeLoadSpeed { get; init; } public bool? IsUlaPlusEnabled { get; init; } public bool? IsAyEnabled { get; init; } + public bool? IsInterface1Enabled { get; init; } + public bool? IsBeta128Enabled { get; init; } + public bool? IsDivMmcEnabled { get; init; } } public class FavoritePrograms diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index 9137d42..3ba0155 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -137,7 +137,10 @@ public FavoriteProgram ToFavoriteProgram() MouseType = SettingsViewModel.MouseType.Value, TapeLoadSpeed = SettingsViewModel.TapeLoadSpeed.Value, IsUlaPlusEnabled = SettingsViewModel.IsUlaPlusEnabled, - IsAyEnabled = SettingsViewModel.IsAyEnabled + IsAyEnabled = SettingsViewModel.IsAyEnabled, + IsInterface1Enabled = SettingsViewModel.IsInterface1Enabled, + IsBeta128Enabled = SettingsViewModel.IsBeta128Enabled, + IsDivMmcEnabled = SettingsViewModel.IsDivMmcEnabled }; } } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs b/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs index 9c7749c..524cdb1 100644 --- a/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteSettingsViewModel.cs @@ -28,13 +28,25 @@ public partial class FavoriteSettingsViewModel : ObservableObject [ObservableProperty] private bool? _isAyEnabled; + [ObservableProperty] + private bool? _isInterface1Enabled; + + [ObservableProperty] + private bool? _isBeta128Enabled; + + [ObservableProperty] + private bool? _isDivMmcEnabled; + public FavoriteSettingsViewModel( ComputerType? computerType = null, JoystickType? joystickType = null, MouseType? mouseType = null, TapeSpeed? tapeLoadingSpeed = null, bool? isUlaPlusEnabled = null, - bool? isAyEnabled = null) + bool? isAyEnabled = null, + bool? isInterface1Enabled = null, + bool? isBeta128Enabled = null, + bool? isDivMmcEnabled = null) { ComputerType = ComputerTypes.FirstOrDefault(x => x.Value == computerType, ComputerTypes[0]); JoystickType = JoystickTypes.FirstOrDefault(x => x.Value == joystickType, JoystickTypes[0]); @@ -42,6 +54,9 @@ public FavoriteSettingsViewModel( TapeLoadSpeed = TapeLoadSpeeds.FirstOrDefault(x => x.Value == tapeLoadingSpeed, TapeLoadSpeeds[0]); IsUlaPlusEnabled = isUlaPlusEnabled; IsAyEnabled = isAyEnabled; + IsInterface1Enabled = isInterface1Enabled; + IsBeta128Enabled = isBeta128Enabled; + IsDivMmcEnabled = isDivMmcEnabled; } public List> ComputerTypes { get; } = @@ -75,6 +90,6 @@ public FavoriteSettingsViewModel( new("Default", null), new("Normal", TapeSpeed.Normal), new("Instant", TapeSpeed.Instant), - new("Instant", TapeSpeed.Accelerated), + new("Accelerated", TapeSpeed.Accelerated), ]; } \ No newline at end of file diff --git a/src/Spectron/ViewModels/FavoritesViewModel.cs b/src/Spectron/ViewModels/FavoritesViewModel.cs index abb5dae..e988537 100644 --- a/src/Spectron/ViewModels/FavoritesViewModel.cs +++ b/src/Spectron/ViewModels/FavoritesViewModel.cs @@ -116,7 +116,10 @@ private static void AddFavorites(List favorites, FavoriteItemVi favorite.MouseType, favorite.TapeLoadSpeed, favorite.IsUlaPlusEnabled, - favorite.IsAyEnabled + favorite.IsAyEnabled, + favorite.IsInterface1Enabled, + favorite.IsBeta128Enabled, + favorite.IsDivMmcEnabled ) }); } diff --git a/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs b/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs index 9f4b89b..f294748 100644 --- a/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs +++ b/src/Spectron/ViewModels/MainWindowViewModel.Emulator.cs @@ -37,18 +37,18 @@ private void ApplyEmulatorDefaults(Emulator emulator, bool hardReset = false, Fa emulator.TapeManager.TapeLoadSpeed = hardReset ? _preferences.Tape.LoadSpeed : favorite?.TapeLoadSpeed ?? TapeLoadSpeed; emulator.TapeManager.TapeSaveSpeed = _preferences.Tape.SaveSpeed; - if (_preferences.DivMmc.IsEnabled) + if (favorite?.IsDivMmcEnabled ?? _preferences.DivMmc.IsEnabled) { emulator.DivMmc.Enable(); emulator.ConfigureDivMMc(_preferences.DivMmc); } - if (_preferences.Beta128.IsEnabled) + if (favorite?.IsBeta128Enabled ?? _preferences.Beta128.IsEnabled) { emulator.Beta128.Enable(); } - if (_preferences.Interface1.IsEnabled) + if (favorite?.IsInterface1Enabled ?? _preferences.Interface1.IsEnabled) { emulator.Interface1.Enable(); } @@ -91,7 +91,7 @@ private bool CreateEmulator(Stream stream, FileType fileType, FavoriteProgram? f { emulator = _loader.EnterLoadCommand(favorite?.ComputerType ?? ComputerType); emulator.TapeManager.InsertTape(stream, fileType, - _preferences.Tape.IsAutoPlayEnabled && TapeLoadSpeed != TapeSpeed.Instant); + _preferences.Tape.IsAutoPlayEnabled && (favorite?.TapeLoadSpeed ?? TapeLoadSpeed) != TapeSpeed.Instant); ApplyEmulatorDefaults(emulator, favorite: favorite); } diff --git a/src/Spectron/Views/FavoritesView.axaml b/src/Spectron/Views/FavoritesView.axaml index 77387d5..e9b3f1b 100644 --- a/src/Spectron/Views/FavoritesView.axaml +++ b/src/Spectron/Views/FavoritesView.axaml @@ -171,9 +171,12 @@ - + + + + From dd181f1311eadf7ff903502da99f2d4038d28460 Mon Sep 17 00:00:00 2001 From: voytas Date: Thu, 19 Mar 2026 20:22:59 +0000 Subject: [PATCH 25/26] Add zip file support to favorites, update tape file detection, and improve documentation --- README.md | 6 ++++++ docs/Favorites.md | 17 +++++++++++++++++ docs/FavoritesContextMenu.png | Bin 0 -> 35091 bytes docs/FavoritesEditor.png | Bin 0 -> 337605 bytes .../Files/ZipArchiveReader.cs | 2 ++ .../ViewModels/FavoriteItemViewModel.cs | 14 ++++++++++++++ 6 files changed, 39 insertions(+) create mode 100644 docs/Favorites.md create mode 100644 docs/FavoritesContextMenu.png create mode 100644 docs/FavoritesEditor.png diff --git a/README.md b/README.md index 2a77731..696d611 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,7 @@ I have created it for my personal use to play games and demos. It is a lot of fu - [x] Audio and video recording - [x] Selection of alternative ROMs, custom ROM can also be loaded - [x] Built-in debugger +- [x] Favourites manager - [x] And more features will come Spectron relies on several custom libraries that I created for this project: @@ -202,6 +203,11 @@ Debugger is available in the emulator. It is a simple debugger that allows you t memory and disassembly. You can step through the code, set breakpoints. More information can be found [here](docs/Debugger.md). +## Favourites Manager +Favourites manager allows you to organise your favourite games, demos and other files. +You can access it from the main menu. +More information can be found [here](docs/Favorites.md). + ### Resources - [Avalonia UI](https://avaloniaui.net/) - [FFmpeg wrapper](https://github.com/rosenbjerg/FFMpegCore) diff --git a/docs/Favorites.md b/docs/Favorites.md new file mode 100644 index 0000000..95aee11 --- /dev/null +++ b/docs/Favorites.md @@ -0,0 +1,17 @@ +## Favourites + +Favourites manager allows you to organise your favourite games, demos and other files. +You can group them by category. + +[Favourites Manager](FavoritesEditor.png?raw=true "Favourites Manager") + +Favourites are accessible from the main menu. + +## Context menu + +[Context Menu](FavoritesContextMenu.png?raw=true "Context Menu") + +## Settings Overrides + +For tape files (tap or tzx) you can override some default emulator settings. For example, if a program requires specific machine type, +or hardware, you can set it here. This will temporarily override the settings for the current file when loaded. diff --git a/docs/FavoritesContextMenu.png b/docs/FavoritesContextMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..565a1d08e9df82806a0aa438f29a42956fa04d58 GIT binary patch literal 35091 zcmeFYWmH_gc{wRnI5>C_I5-4yG!&r6 zp}I2)4(^45m87JKyrd*p#o58!%GL}HP7WHciK?YGK$NblN`-_bCHC%*5^glU*gG_q zfD7u-cX9}y@l7ODDssXw%JijvWfz0LQQ%e>8EO+Y*=RHWe7$enQPzwO@4BGb$_L}~ zc)A};@*m~*IBMa78(+FrwZbk!7b~MxCL%Z(BTbAOrWQse0e4tqRNo*p#1XuFiT&x7 z<+H)+3S4Mq%UNO{@yowz z$)Zqvu73yR`dBXyo%(p=oS~%mf_S43E^6i$qKyJax)Npa8@L`IMi;`*UE&;)Ss~v+oyjaDsx%&D8Ul>%(zON)E}7 zE>ew4MQyq7oaR63`W9ll;aAK-M?qB%9vGEg_e^4aytbE^YyC5O7bn%{=P;N5!{b$b+iM1`ffR9a zhOtNrl9UWo;(~V|wwP_{p2COjp{kp#4{!WWTEOIv;&7kfkxQ&TarPr@%$D7;dKT=V zBS652uf&kZ?~(%XpuWQRp5e&IYs#TgVj^!x+sZYO&ZwT<(2BRZgH!kR;3n_yDjt3*1kZ^AJdv=GY!b1w)w7O?|YR~WZ>J@C4zL^MKm1rIrPKNOR?QwDya-2kPlTve~OA) ziEg9T1tpi&iymRkWO0smV+9}{A?&QLwK|$>_B-D{YM6iFk-B%ldpP-gcli1}VI1f8 z4cUrU0;*l_yWCWyllDR9IcGd}?6BpI^sI9i|Nd6oS|dr83h8~kutR-d55#Rvpb^L?ehoU)m5qMM@?MwArJc}5S%CI`0!BpEDci_yIsWN zM*i(XT9r|kVHhdg4h|+^CFErY6C2Xa@64_`We^FX%O}K5Clvd3%$q;%Jz(wRuis5WB!^GLNpZ+?*-pk8L8ry^N&NISmLL-knO+l6Bj7mpKQN}NgEGn3D9?$oAhWgYCvaqia)|ki%#R=UB(Fx}isUrL)bY7A=`a=GS)%fso$ z%uB_TT)RAqpDfb`nJwz~aaS}bz3di_uMm16y}Z4zWJ0h%^y!2Y#OA4GSLqh07wBs0 z&Pnr$dnDU`Ir^~TPTyN?eD;HX*lhT5m~2?N>-$%yuh6e7lp2BugTJo5yDlFtq`Z5) zeJ;xOeJ3q;QTHtN%g4*-+AIRd=3hyXDe}x)I`(GT)Q>uruLrI7bY0^-ui)}jbA9JX zHL9Qa)$^;bfByBnoOSi+pSTZ+98>dSZ-+c*iLV51Mjfkcp0r2rk{oIM(K^0y&h6>n zie{2YC%YXPm|^U*N|{Rgu$Utu`!d3s{Bm(&RC`Tt9b(6A=Q{p}KZi`F&AGw@uff)} z;rE~;#eU;>&BA4IN>j>k>1^rLN~iFQZ_B+>Ewht37U?^F zV{Ogk&6O?g-oj)i!ZO_EOFv{+%~v7EEUSki%o!guMnn!<^IIXXcd!t@Z9j>&LqBEy z+EnII)=>q22LGgIs^@Dx%5RZRXod9u+}$kzYb5eo@*gGAc?c9=~i(zONBb zeUADS^^%IuOGXI3Jb8{{k5Yi?!u5x@maUf8e3xUBqqgU!maFZbd3BRx87&z(>OC59 zS~h3(t(MpOKN&yBW>HkRob{?1Q46q-iZ#C4^g>c3oBFL=s(`t4>L$y?%` zgj?r*cR+VM^l(!qB8BJ3I7U3?Z6Q@sTxwLaaDxS8?S^MlP*qRuo2tFyuXJ|1&M#0D z0vCG9G^vd43|DY`RPv8Tu1ieO7{h^M`OUmi<$WSYWE*6*&wiaVo$sUTEc5B-$~@Af(v{gMm@P#1I-l9_*{t=2yiXf@VBfy2s9m zQbg>C99nDWJQeiw)XjD^HfA46m22s21+Ovh6ZZ~LmK19JSEv>y3|^|aH7>R^dKavZ zn(5 zQkF*DY@@5QA!j#Ip33-X`}`@9xW5vQs|$6~%@HKLyYIg~QaP za=)?X$MduX4|I>PW2;rB76;F^Gn^&StLmm2kT32@=5M2eF2P8oNCTk+(Wl9ZHS|OI zUA5SPnX%Li9yb&>13!@`uRhG(urYmUf9uDFr@WD&VE^04nMvWYrp@>R_2YdyhYQ$& z=l)r314GfyQ`53X28`H${8{BP`tfwRpj%m4RQXZjPW5W$%4W0fmxG6oi;qtp=8?TU!Y>ap zI1QDIbObR%tbn&T0TGnKTBxJWzB}*Ds5+}UwnNLU8m!h}gfmGOsBIy&VugDMUu&Nc za+-tA)pTj>fan6rL|#(m1r{8upu@cWyYmb|%=65Jc0jRuDVPYQ<&wBUiS2t3(; zw`Jg8!y*3Dj{pZ3Vg-lv?=kOz2$QuOnj2S2$Fl2Os!)W+MF8Xn2uK#Q$m| zkOSx7#MLC_<$gp)K#^&MS!Ro=q>fmg_ z#=+0e&&JNl#>vS7j9_u`vUfG|WU+Ul`PU@>HII~;i;1(9qpOvJJ^1guM#c_quENyR ze--`r=U;Z3d0PFCCVQ8EFAG>8+ut*69IWhY|2;P#D)hHkK*h?_%vM{<$`0@uphJX* zn_cLi@&AuA|D*9gB(?rWl8fW*e@gzxng3f--NnpV(!mZ;=_>L+m+Rlc|9SG?f_~Of+58A-`7k8qewPu3b>5qR#M6zfg^B}{r$jW1Akus>-e`VfaqOU zJOBsBKPE3F{?QZuz!%+9U(@T*LHFEtsM5?UN@(nqux}KO3SFMm(keEN3U_fb?qWh@ zJAr7B>0(0jb)JfZRa>nXk{l6?|u2r&K<^*J`{e|G~IVn_$x2>2I)>fH?R2Uv+E4VzxH&d?^#{&8S{~AYX={u z|IQmUTCC;mb5ue%eH3H;Z9yAYEdrhj%dd028rM|e7iae|vtB5d%%`R5=U2YS=X1h8 zL>*qrv*C)T(;`TL8SzxkY(yKB7bA`zJa~MvZVwSosl0t0Zds1KUi&{SswUUT^Vb}3 z1K#+68?dnC2hrTTHGJAZtzI+%x8@Zc`sP{=dDb}P$m7UGwP^90BZjZX;hUX8z zJk@r$6t!9ifn|h>?NN>UH|Q=#G-J42w}4wc5@1hjbzwvf>BB-T(y-g>biiU83Sm~;U??1( zBOds)!O}4Uu%KEjpgWOhYFHc}o_dX1Y{O+@O$1P56$l4qW64hn2K?ME9nig#-Qf$U znM8ocH`Gz&LX}4f4G0rkhO&vW$>zrs{_v^xa2@K|RycaB2f+tU7Ji9IB=g4E=-KAA zI{x!bCAI+2O2UNT#L(LCa>~rzt8katuh|DDjl>2NyKy%V%P_Dtko9cQQdh^eEmCe^ zKzEDS?XeBXNflUHtKpD;25mB`N!VRqUJkwV%^>*#7(PKGwm~NBZlqbJ#i{%a!+E3u zai$=*rj(`xQXg#Dt;yk%Je;C$p8QsGj+Wv59M&B95MV=S5U?(cw-tn6@L+&r6*eUy zJMlNx@{kHetbP1ID!^Y~#W))YXj>=Ndy7NcrNB|R-HAy_M#J4@M?*BudtE#6i79#h z{M-H#4r+$R7MgW;tuiQ74^GIp4R?lNiZKdyX_GLRXeB19^?IX3iwF~wWHLAIM8O;b z{%Ma11g&~&+f-gzxxCuL9UT%@)}EpL@kjBzJ_pI<@t^FjM=9C0B79h-v`cR8YuKks zw`)8`wv?j4C@TY%_8??Vfz0jf=e}G>&Ly5ulDXW_Y~50R0&k&+yL-P|EyUU>kohNb z;_!FItGIaigYm7h7M;4a-C4)PDc3h7@6g~0&QnnAHA5uMtIY1+)BA57TyB? z3z%7afL%9%EuBXD?w503Rk7?9g$T!I@QMI%BSM4P)#+MahV2w3L|OE%PA;)f2(`489|@Olild^%&~iE^%`?Ke(3vd&jf3{`Qg-hGM7=ewuTNf zW;`<$*i>{te2ICSFdZ!Z1}D^$7GDZdWv&=M$WNtuRu|}G4|ACo6ka?XnQWK;Ew+}c z%X4&apjfW-Jo@F%JeZ1m6})@Yz}$2N!s%lBNjZiW2$lKN89IjDT-+pk65Q!;rOjK~ zKV&A!FNdZ>j`SIQqZ$DV>(-u~D-7ezbhJcO8M8!FsknEd`T=P&J20d-Uqh`;Ybi}b z)iUKJ?pa4pL5oS^O>=A`;zr=C+fk>q$=L=a`vTSYg+N?ATa5>4B{xIJEgE%e>H%{s zfp)g315Iy#xD+faXo5S!VIHVp4r4*AE37wNF`fZE1b{?ZgO%~%`*rMYI^%%FX-=0LM zrP9cFpDUf-k8+LL!dLb@GNPxKSC<1%T?OBjCuaNHvmp=@ij0gK(zuV2lpyZ0swz&i zl_KO-6>)FDD~i~mcg-3B6zrcyAlMmkJAX5nE8!c2Yx(IOCxiR`DKcJRCn*4Vv@6l< z(bsQd$v4v-ZFfBxO5Iu!0eArEP3q?%TQ9LMQ)rbJH1OvAEbb4VAB^1~(HY!Qr%JhIpo0bMyFGGfMbh z*&O`cLc#hQ!MBY&pX}By38eq7SpgDF`C|Nsofuj@97uDmSidZg2@O)^L-T3Npv#w< zJ^JrL)j@(L5Z9*;ni11@YeU?`o0BfxCg;Ecull);IV69>mKf6hf%wZ}VsAV-T+`?H zlj;|`#Pm6Ci(P%l48q-Xt#ZlqdrE|-;cgJtQ{)C*_FAlOS(k?PFkJ%k?d;TURKnK- zpW8p<8Affxtx@BF22VD1vkU2-`rizewD0x=&bn9?^ zlDJ>`@p^-7|3+^^GIP5-$@_V{Gt?nPCg#y5S{@<^-h?8_e%c6C_O)X#eZUXDvDL?2 za~&y9DVmrMYCfRiw~(t{X}$i*5y)4j{yg12gqZoV@x9kly8lwvz&QP62{QEkzkFm7 zfAc=(=D`q^vH*-AFAsV0YJY>6>l%<-0)8E|hL+u}6$s}vWn$a1Ui*&-2VxVm1&3V@nb+VMC+%hg@&ax+7%vmMY3`> z0Zgk;cBAXN+9VbrEy7nB+Fv9Z8VGgKbO)~>cc9VEZ#2J*qJIb|13LzR1F`JEzk8C` zbEsM;EEB}hhifD4yI*~wx#Vo?om&@V=4ew%1+y!Cxv*rdO%yKbu^+w9svX;vo;)uALWh5J^FIi5;@yJ)Q z)DxjN4%J`HQN^F5KZpC(V%^B~af;x>>N7rP|zWBYadeenyJF$TW3gHaf9C6qOlz_lEax;gW+z>t{E_1hciMZMNp(#v%tS7T3Pu!;MkMdY{fQOFs?~Yx}A+~keA@wCc z_{#x?OJJnp_?p#WFB1l z@o)ivMuR}xN&;`<_WvvRf8nC;w41YYXHy;dz+D+1**ZPjRzj1+$*Q|l?J2X#-1$Dg ztX6Gr*6UustmAL5ro!k1nbgYk8mJ4#c<$cifZk6=XpW>&#a_VjuHF|q*h2l_6`<`% zG`JocDY_i`=81{PMl~L;1FMn@^q!%bJ6Ev`$}s=}Oi8)Cy6SON!|ls=Q!sAq)ezBh zkxABBJXrr(M^>gyoAgR;_)^!MJfbj-QQ#=thB(D$(rVNM0UA$$0o+2V`6fLvUaB9X zY;*)weBbFT3CJvSLLItQDyZ>7F@f8mzWp`63`92WhBZ9>=96{j7CCgfP}_?iJD-)O zH9B)dpztp?e9!etdBev}v*zMD^83xkv@g|Z52k!=>WS?<(! z?%|=4$u@Ggg0Sjco;3ZHB04M&v!CQo^+6AMSoA-+T1(aB^ZiYUv8OxTzIgj;Xnf`7 zsgutz$gu1t-ZP2l_*qvz_PwfU$GO`Hc;QIQTVOu?sBO^#cI6%slR;BP=6~U0urhT$K+$KFg`{Xn+sMewli(agYu39F;ooGXk!u6ok~+1m zD;psyz6S?U`?j~!8wlDe+DH7Shh9?B`=rT;IZ1hHm}aLB7;2Z@y8@3D*Mr$b+KW3X zXhgm&M2N!WK9*_Tu#RjwZ~cAOyl8qLKIqU<0{E?3hb^%NDLANpskR z2dj>eAZQqw42gS*E7I%#u!XE$XC25-!C22hdJuSiVI`fvqJJMb@O=`$aJ(U8t?6`c z)VgX6hZ>g&K{NhFgE^f^`b$=Un}SUfAx_jMm4YR~CNo&pB0G!yZs$S}NQJwhB)Q-I zG5X@_i;WWi5HVGGv*oL<&_AdqIu5-HGs}vhqYd54v?H>_P>uq}qe=;-c8A>r99DjD z5mJqCH53A~zt_yhGrav?sLEsURae-yO}QdHJDG$w^hPG^F$Vc%GO4=dqTPoKtJ8K5 zR0cT+3X$J;{6KUXktJB!5v4dQY0UiK#cq0{;LpPPLeiTL!EZ~&B%9uTGAAnB<+9Ky zEI^(u&R5^G)Tz1%(cOJ;Jf*R=wdT1zHK`P3t;UiN@w}*R39s+oNt>p?wT-m)-(l6` zre`~XkEK9RDwl+k@!Nri)@dobLwL*dtK>epOMLp4KGT|ogDck~J%t!CukS=-s(Jz_KHPM}i%QPS?t{L-u=m z0i`^W-E6Mp2OIx__I9emr}0KHi6}4uK6I)$Q9ao?YVt~0c0?o;PSn~anNrk^N~$`a z`vTqt!#qCT&ibov_=Ga#B=JxbGI&F1=WDyUyBRDmklKWgRP6%eD95ya%AN4WA?MrL zQ6EqHA|NBA2S!VWqxn%BCD-jSa`xuf2uXFx(3g|>WTO#bJVF7uvsaZNc8B`!+zXIM z>A#?TM+W@d`rg<0cotM(xC~((+hoVi>-Q@?b+Y_gUk;SnyKg zerTJ|>gk@Dy1^RaB5$?59PVj@c@YeGjpwHzyH}#k8pg)x!aoMGej%{f8xg({N9z6d z7dT#4aP`XWfZ!$-H43kgo&2RjHOllG+Fi1n<~nu|{Xq~7FoWi7xq)T1SSn)Hg&{g` z?5BhdWt2de)7(=O?;gG(trEdpckGRE_?~eO+7V92-Jg~a>k+^4zJ~@bGaw3NbnYXN zf`kT)kvOugQ3d~Wk7}=L5O?}o@4~BbpuZvMO3sRnfftJU7n_g&3?hGy4#f%X!Lfzr zCrG^miBsg}laJR%6QGGFhthGo7$bqubhPXS=|pguf)KUxtuF-Z&bO7 z2Tbw2<5yRsz~D9Uy&;ckAk##O0l+U>J35X(q1+%w z5H(r^_+4rW!8d$am%F9?hb2?62p`%+Y4Xwg5tHwOoZhsj_L;rD`kX8eM#XoA@Qsfo_7QWD#_wT>yALB4T z8s5#aq+{>Y`IPdf(b_7nF!((5fKt$FRWFQ$)h|_@l;jus=+i^zUy%GM{3p8{0-nYJ z4#O!}q+~?8=v%yo(g43#{^$jjveM%#QaGp6QyUfW?vUC{bQAUO0LwwtkXdXlmfCLL z(VRrdkqx|Q-cn*-(TafOUg7*TDAU(gOSm3^hLpr_1gZREh|CsF(9IGYW2fjgikQqh zi2YNR-L-Z33^MwNV?XSwtIcgn%T}9q1CbF?uqnBB)}u~KI)>xq%3Sm`9N7myBaHKU z6AI8@V>7sGqCud6Z~Iyvj|#Qqx*oep&)$|ip68*y(v3b8S6Pqibm_c|b1bM%tTV6k zd=)Bnzxw9RPN%-z$?KSRo*P59LtQkE3IIoS@0W#8u$-=!(&Xr81w2XIS8o@#mD`JT zu}D%?|b>@7N1BZn{DDIa>-uJZ=$8$A|%k+HcNd$sqS$Y;)Czl>8ng^-$^=x-Qd zvO6qSE^Ys6nAwuxE@hg|RCpVQ-*&b+e440C{3F3%*e*jzNE!t@Cf>bUAI*6@uzgha z`RHSNe1M@lC$L;|`Xp!s!2SlFcb z+PUcgw(GQ*(ezcL{VIfiuBrhV5E&ReEY%GR$29-Ao12_q@qZ{6O-$?CH))KBhl;(S ziAv&-X1%`Z;qIQ$BbdTc&2^T*1^qf`bCwplGHiIi@#obYOBJelyori8mVE)UUq2tz59Z63kWbg6C zRYsWaw)*pKu{-3vM!`&brlfwQJg-!Z@>U+w%T?BW?I5~DV+e7Uoeu0`xY2BD8Yn(* z*UX4F1PN_YxP+kPVj}D(jKuD1u&{T1f%;s0Op8k-8ko+8xE!haBtBeo>2|Jp?&zoF zv5WSl+F08qo@238TCOSv4q$rO!JHPnUW@3&SUG+MvF-*|H}$Rcjg1bncc-g%qmtM8 zuj{Ku#ae-V58`RgpvTRGc&mEI>%C?#WAX^@Hv*?7XWjUXS2BaLo0%7yO%vjZL1!lm z^aP)F)u-CyzZKp(pBFVaOAUFD7n4P!B&YHBT-elDS128>oSkJ=IbT4kmJaF<+1{{4 z+Z5#wO}LCy?nrgjuY_PlvLSfD8V$@9nK-u(`7$8#-mD=(e%H&j;)5u|J>|kr*&JpQ zu`hVOfa>or^VQf9LC?~11O0=;QKFth;a{1T&o`IuJ7)DKg9{($U6w*Di-K!HU{&?G z%4+z;}hXUEUC z4ud@LQ%W;+zUz!$YqjyteT#1%CFYBzy)Opt2A=)2pLS|UZ-aF;2W91VC{#SX9kb~NNDreP}Nj)Rpc>!}UYOb>gUp*l{sAs&r8hTO0o-$bQ!|x)o$wI@FT!=( zt@ps#NCGd`mG923X7ea(vY@2>QgtV}|FMNGaxw*y`H`*z%X0_=({i+cMdraIVmSkW-bL#|uwlOT78DTgFxhq9E| zL;LrCbb0%OJxZ_!hfxnVXZy}>=E%+CGIJ&(DEl4^+$I_SmD?b=~1R0xY zXD!#*`~A2I5$I=xn9G*(KYxvPF|`)&_YbOk3A$n1-Pe4nf}DSK#nwD!>$E)KtKE97 zTGO1pxc-el&v~cuoi?uzyW{zFq(i)eP#s7;zTe?eu6A9uVEN`$cEsy?(~gfddTiMv znEy-dobQF8Ip})j3g`GDltAY+vOoL#>dP* z)adIR40he{&G)2dj=r6_2ulcgwSEw2^j1u3PGwHgG_bxBcSJK+WEoCO+9R$$J4kqR zR-|dBiH6lX)tDC6sLgrG*B+F<8lW>slgkak*iTR|I(BX?#H8Cq=NZ^fL8%c?@D4SW zy!x0Cqj~jWRdhG>_|~`Jx6|W?yS!?4S$ln9Wev@QcNImO8V0Iu^Ps2mObzv)qH8P} zJ|P7kgfFJw-|lfW*|}9+qRN&%56NyB>n1Xu6TmE5pNoVZI>nFga9X|69tQNY7#QD6 zFf|{lMZP+p)9^k#zxMKlTqpWdms9XNe0w_5=NoL9W8=L)+_Pvt=Ms&(OL*^-wBUEB zY@aw+`or!j3u-^xs=s%@q4WCA{P(Q#qu3~S?Sf>L?*kibL%KO|-O%rTZoApX@W-vk z6Aa|NDgCASK=F3L5JqFx(~$2Mm2Zu46CH)t{6T5)i}hl!r1kr`fw4Mr5+^mBRiCO; z%-%hPFd6TwZN3t1+G64{ju6({Tlw<4Zm-+lv*L5Ota1VyRl$@4vyVUuPP&A(zT3~sESTm*DJ~}k+WtUlp@5WifK2pJYu+v1O!}-!d1W)rr%zOb zhZcHA_I!^`P%W0{e>-4*dlu=De0M+d;)~0x4Zg9Ffk2!e#Yu>lPkQHs8Ox;JF)a@Z z9%z(sxKSK(3mDanD~63QE*BP#&I8!modB?!-s?$(pPH@%{d6LcT*xk~?O zbD^c(C=_yVWW(cFF_^UmWJRWs@TfI-tLl%lIc%0DT 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

rLIksX;u|#!6qZ)F-WAWSt*>;`-|-Oq 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%0A;y*&6U=KJYTq z>%XNiBQ)UuIoOc1k(6 zu83z@q?S_wG4|h5n1bp|?zm$c)S}I4d5e2Gw-1igqdL>HW7$7h?(mg}76(en;w&6^ z(Vk;DDpUL@nJ#&?bg&QDBde>K8@50T&OcAoZn!jDcBVMP@o~Uf^0*=GWxOn@Pd_|v zYD-+>U#8ESByKw_w;y%cSNSAh1WV~7uHOD+8N{@C^C#(E&Pe`C#G2fKqw0dZ=Hl6S z8P!-Z+UjQMb5+mTBWArG_&sqPi^$?XU);f;N(hlTLw%{Idu8R&+1n?XeY^So&s?Z^ zzp3ZEfK%scN#8bgR(p+!dSL;X+D7I}52Foh!Nc?6Jn28@>JXa%iF5us&at-F{Z1r<+(wi&OCo%XsB`&H<_) zDOEleZ+KGL^;OUYgT*XU6YeUEhd~`iS7S&Xz^~7E;R~ zh>Y$Her1J6)CL&kx>9XL%_0OfsxvRF)vv}RRZnbHPXg)|uaKejPQSA!_x2Vocs>(v{S4uH1ampSXggeqF47y{5oE7zXvafw?VHr@yb>CcA4XOuT}d$t?&S zRPT84)kx!qY}#Byfql=~h+w|l{?(RGA#ST~IZR!+FJ`JU@jebgW8=NP+2+XXP8Y0O zQ?TgS^bWMO-=3~p-u4T9@ybMccjBJ1ur-%)X&?Pi=JHR)fwg;}HN0Hz&f4C+qNFli34XF2$>ktbll4+j^I`Rc0=TzvG;R4Q+HjUUS1WYofyr6KieT zOdJekLWc`tz0e>0Ri&i5Z(fsrH@Q-{yXuV>=k5n$MfzC}Xm?Y}(aWoRM$?Os6I-qZ zzN%QYtz`baueS-(hAz{OtYU5bbMgvk<7^AN+;{Lj_Y|+oX&VI8bKjg(45YguO68cJ zh6!#(VtUet&~{0*VPXf5kWIa{54JPwj9Zyc`05;kAF28;r{5d-D%UA61RA2AE_W*X z`iDr@l!5uVFo1DK_m%rbE5eKULD^ScFa1Wpl~1MQZ9%PuJObRk`|N$V?Z_)l`ua~kyvu4> zK96KKu=mO#eT!~;=?@qF^7)a!n|5@cy`wP^4XGb4i+}ay&)XA_%ib^(N2_mp zLlRyl;?_+(9%RhBEPRMq7C$k${$Aer%GbVmTw@bMSQa#f)xV)|I;{CiJ6zR5;voHGUOSaeY`BAnP`%iL6&!HV|0yDm0E`TlG6cOHuy3@ac}-toJa#YcCX2zK^{Sj#}W sX#Yb;Km{R4R<{3NgH60y`DQVEiiPd^Ijh$R{QTvM@Xs4QJN@nd0E$1vng9R* literal 0 HcmV?d00001 diff --git a/src/Spectron.Emulation/Files/ZipArchiveReader.cs b/src/Spectron.Emulation/Files/ZipArchiveReader.cs index 0c2ebcb..7d5a2ef 100644 --- a/src/Spectron.Emulation/Files/ZipArchiveReader.cs +++ b/src/Spectron.Emulation/Files/ZipArchiveReader.cs @@ -26,6 +26,8 @@ public List GetSupportedFiles() return entries; } + public bool ContainsTapeFile() => _zip.Entries.Any(file => FileTypeResolver.FromPath(file.FullName).IsTape()); + public Stream? GetFile(string fullName) => _zip.Entries.FirstOrDefault(e => e.FullName == fullName)?.Open(); diff --git a/src/Spectron/ViewModels/FavoriteItemViewModel.cs b/src/Spectron/ViewModels/FavoriteItemViewModel.cs index 3ba0155..f3f234f 100644 --- a/src/Spectron/ViewModels/FavoriteItemViewModel.cs +++ b/src/Spectron/ViewModels/FavoriteItemViewModel.cs @@ -51,6 +51,20 @@ public bool IsTapeFile var fileType = FileTypeResolver.FromPath(Path); + if (fileType == FileType.Zip) + { + try + { + using var archive = new ZipArchiveReader(Path); + + return archive.ContainsTapeFile(); + } + catch + { + return false; + } + } + return fileType is FileType.Tap or FileType.Tzx; } } From 4adf2ccd2f1dada265ea0b5eef9ce068ff981d09 Mon Sep 17 00:00:00 2001 From: voytas Date: Thu, 19 Mar 2026 20:26:25 +0000 Subject: [PATCH 26/26] Update documentation --- docs/Favorites.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Favorites.md b/docs/Favorites.md index 95aee11..0f9b3d6 100644 --- a/docs/Favorites.md +++ b/docs/Favorites.md @@ -5,10 +5,12 @@ You can group them by category. [Favourites Manager](FavoritesEditor.png?raw=true "Favourites Manager") -Favourites are accessible from the main menu. +Favourites are easily accessible from the main menu. ## Context menu +All available actions are available from the context menu. + [Context Menu](FavoritesContextMenu.png?raw=true "Context Menu") ## Settings Overrides