From 8ebd09818684160896d8a51269222b7bd40f591e Mon Sep 17 00:00:00 2001 From: Robert Date: Sat, 6 Nov 2021 21:54:44 +0100 Subject: [PATCH] Add missing debugger folder Moved device VMs --- .../Artemis.UI.Avalonia.csproj | 12 ++ .../Ninject/Factories/IVMFactory.cs | 3 +- .../Screens/Debugger/DebugView.axaml | 26 ++++ .../Screens/Debugger/DebugView.axaml.cs | 53 ++++++++ .../Screens/Debugger/DebugViewModel.cs | 76 +++++++++++ .../Tabs/DataModel/DataModelDebugView.axaml | 8 ++ .../DataModel/DataModelDebugView.axaml.cs | 18 +++ .../Tabs/DataModel/DataModelDebugViewModel.cs | 15 +++ .../Debugger/Tabs/Logs/LogsDebugView.axaml | 8 ++ .../Debugger/Tabs/Logs/LogsDebugView.axaml.cs | 18 +++ .../Debugger/Tabs/Logs/LogsDebugViewModel.cs | 15 +++ .../Performance/PerformanceDebugView.axaml | 8 ++ .../Performance/PerformanceDebugView.axaml.cs | 18 +++ .../Performance/PerformanceDebugViewModel.cs | 15 +++ .../Tabs/Render/RenderDebugView.axaml | 16 +++ .../Tabs/Render/RenderDebugView.axaml.cs | 18 +++ .../Tabs/Render/RenderDebugViewModel.cs | 118 ++++++++++++++++++ .../{Views => }/DevicePropertiesView.axaml | 2 +- .../{Views => }/DevicePropertiesView.axaml.cs | 4 +- .../DevicePropertiesViewModel.cs | 2 +- .../ViewModels/DeviceInfoTabViewModel.cs | 2 +- .../ViewModels/DeviceLedsTabViewModel.cs | 2 +- .../DevicePropertiesTabViewModel.cs | 2 +- .../ViewModels/InputMappingsTabViewModel.cs | 2 +- .../{ => Tabs}/Views/DeviceInfoTabView.axaml | 2 +- .../Views/DeviceInfoTabView.axaml.cs | 3 +- .../{ => Tabs}/Views/DeviceLedsTabView.axaml | 2 +- .../Views/DeviceLedsTabView.axaml.cs | 3 +- .../Views/DevicePropertiesTabView.axaml | 4 +- .../Views/DevicePropertiesTabView.axaml.cs | 7 +- .../Views/InputMappingsTabView.axaml | 2 +- .../Views/InputMappingsTabView.axaml.cs | 3 +- .../Services/DebugService.cs | 2 +- 33 files changed, 462 insertions(+), 27 deletions(-) create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/DebugView.axaml create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/DebugView.axaml.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/DebugViewModel.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugView.axaml create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugView.axaml.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugViewModel.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugViewModel.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugView.axaml create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugView.axaml.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugViewModel.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugView.axaml create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugView.axaml.cs create mode 100644 src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugViewModel.cs rename src/Artemis.UI.Avalonia/Screens/Device/{Views => }/DevicePropertiesView.axaml (97%) rename src/Artemis.UI.Avalonia/Screens/Device/{Views => }/DevicePropertiesView.axaml.cs (76%) rename src/Artemis.UI.Avalonia/Screens/Device/{ViewModels => }/DevicePropertiesViewModel.cs (95%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/ViewModels/DeviceInfoTabViewModel.cs (93%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/ViewModels/DeviceLedsTabViewModel.cs (97%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/ViewModels/DevicePropertiesTabViewModel.cs (99%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/ViewModels/InputMappingsTabViewModel.cs (98%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/Views/DeviceInfoTabView.axaml (81%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/Views/DeviceInfoTabView.axaml.cs (82%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/Views/DeviceLedsTabView.axaml (81%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/Views/DeviceLedsTabView.axaml.cs (82%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/Views/DevicePropertiesTabView.axaml (98%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/Views/DevicePropertiesTabView.axaml.cs (76%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/Views/InputMappingsTabView.axaml (80%) rename src/Artemis.UI.Avalonia/Screens/Device/{ => Tabs}/Views/InputMappingsTabView.axaml.cs (83%) diff --git a/src/Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj b/src/Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj index 0ef45a871..62c11bbd0 100644 --- a/src/Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj +++ b/src/Artemis.UI.Avalonia/Artemis.UI.Avalonia.csproj @@ -35,6 +35,18 @@ %(Filename) + + %(Filename) + + + %(Filename) + + + %(Filename) + + + %(Filename) + %(Filename) diff --git a/src/Artemis.UI.Avalonia/Ninject/Factories/IVMFactory.cs b/src/Artemis.UI.Avalonia/Ninject/Factories/IVMFactory.cs index d1066fe06..52ee5432e 100644 --- a/src/Artemis.UI.Avalonia/Ninject/Factories/IVMFactory.cs +++ b/src/Artemis.UI.Avalonia/Ninject/Factories/IVMFactory.cs @@ -1,6 +1,7 @@ using System.Collections.ObjectModel; using Artemis.Core; -using Artemis.UI.Avalonia.Screens.Device.ViewModels; +using Artemis.UI.Avalonia.Screens.Device; +using Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels; using Artemis.UI.Avalonia.Screens.Root.ViewModels; using Artemis.UI.Avalonia.Screens.SurfaceEditor.ViewModels; using ReactiveUI; diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/DebugView.axaml b/src/Artemis.UI.Avalonia/Screens/Debugger/DebugView.axaml new file mode 100644 index 000000000..7867c29a0 --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/DebugView.axaml @@ -0,0 +1,26 @@ + + + + + + + Test + + + + Test + + + + \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/DebugView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/DebugView.axaml.cs new file mode 100644 index 000000000..dc5c68597 --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/DebugView.axaml.cs @@ -0,0 +1,53 @@ +using System; +using System.Reactive.Disposables; +using Artemis.UI.Avalonia.Shared.Events; +using Avalonia.Controls; +using Avalonia.Markup.Xaml; +using Avalonia.ReactiveUI; +using FluentAvalonia.Core; +using FluentAvalonia.UI.Controls; +using ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger +{ + public class DebugView : ReactiveWindow + { + private readonly NavigationView _navigation; + + public DebugView() + { + Activated += OnActivated; + Deactivated += OnDeactivated; + InitializeComponent(); + + _navigation = this.Get("Navigation"); + this.WhenActivated(d => + { + ViewModel!.WhenAnyValue(vm => vm!.IsActive).Subscribe(_ => Activate()).DisposeWith(d); + ViewModel!.SelectedItem = (NavigationViewItem) _navigation.MenuItems.ElementAt(0); + }); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + + private void OnDeactivated(object? sender, EventArgs e) + { + if (ViewModel != null) + ViewModel.IsActive = false; + } + + private void OnActivated(object? sender, EventArgs e) + { + if (ViewModel != null) + ViewModel.IsActive = true; + } + + private void DeviceVisualizer_OnLedClicked(object? sender, LedClickedEventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/DebugViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/DebugViewModel.cs new file mode 100644 index 000000000..967de423c --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/DebugViewModel.cs @@ -0,0 +1,76 @@ +using System; +using System.Reactive.Disposables; +using Artemis.UI.Avalonia.Screens.Debugger.Tabs.DataModel; +using Artemis.UI.Avalonia.Screens.Debugger.Tabs.Logs; +using Artemis.UI.Avalonia.Screens.Debugger.Tabs.Performance; +using Artemis.UI.Avalonia.Screens.Debugger.Tabs.Render; +using Artemis.UI.Avalonia.Services.Interfaces; +using FluentAvalonia.UI.Controls; +using Ninject; +using Ninject.Parameters; +using ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger +{ + public class DebugViewModel : ActivatableViewModelBase, IScreen + { + private readonly IKernel _kernel; + private readonly IDebugService _debugService; + private bool _isActive; + private NavigationViewItem? _selectedItem; + + public DebugViewModel(IKernel kernel, IDebugService debugService) + { + _kernel = kernel; + _debugService = debugService; + + this.WhenAnyValue(x => x.SelectedItem).WhereNotNull().Subscribe(NavigateToSelectedItem); + this.WhenActivated(disposables => + { + Disposable + .Create(HandleDeactivation) + .DisposeWith(disposables); + }); + } + + public bool IsActive + { + get => _isActive; + set => this.RaiseAndSetIfChanged(ref _isActive, value); + } + + public NavigationViewItem? SelectedItem + { + get => _selectedItem; + set => this.RaiseAndSetIfChanged(ref _selectedItem, value); + } + + private void NavigateToSelectedItem(NavigationViewItem item) + { + // Kind of a lame way to do this but it's so static idc + ConstructorArgument hostScreen = new("hostScreen", this); + switch ((string) item.Content) + { + case "Rendering": + Router.Navigate.Execute(_kernel.Get(hostScreen)); + break; + case "Logs": + Router.Navigate.Execute(_kernel.Get(hostScreen)); + break; + case "Data Model": + Router.Navigate.Execute(_kernel.Get(hostScreen)); + break; + case "Performance": + Router.Navigate.Execute(_kernel.Get(hostScreen)); + break; + } + } + + private void HandleDeactivation() + { + _debugService.ClearDebugger(); + } + + public RoutingState Router { get; } = new(); + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugView.axaml b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugView.axaml new file mode 100644 index 000000000..d82578a19 --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugView.axaml @@ -0,0 +1,8 @@ + + Data Model + \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugView.axaml.cs new file mode 100644 index 000000000..edc26496f --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugView.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia.Markup.Xaml; +using Avalonia.ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger.Tabs.DataModel +{ + public class DataModelDebugView : ReactiveUserControl + { + public DataModelDebugView() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugViewModel.cs new file mode 100644 index 000000000..bbc5f996e --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/DataModel/DataModelDebugViewModel.cs @@ -0,0 +1,15 @@ +using ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger.Tabs.DataModel +{ + public class DataModelDebugViewModel : ActivatableViewModelBase, IRoutableViewModel + { + public DataModelDebugViewModel(IScreen hostScreen) + { + HostScreen = hostScreen; + } + + public string UrlPathSegment => "data-model"; + public IScreen HostScreen { get; } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml new file mode 100644 index 000000000..ffd33b22d --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml @@ -0,0 +1,8 @@ + + Logs + \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml.cs new file mode 100644 index 000000000..d2cd7b97c --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugView.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia.Markup.Xaml; +using Avalonia.ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger.Tabs.Logs +{ + public class LogsDebugView : ReactiveUserControl + { + public LogsDebugView() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugViewModel.cs new file mode 100644 index 000000000..bca2adce5 --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Logs/LogsDebugViewModel.cs @@ -0,0 +1,15 @@ +using ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger.Tabs.Logs +{ + public class LogsDebugViewModel : ActivatableViewModelBase, IRoutableViewModel + { + public LogsDebugViewModel(IScreen hostScreen) + { + HostScreen = hostScreen; + } + + public string UrlPathSegment => "logs"; + public IScreen HostScreen { get; } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugView.axaml b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugView.axaml new file mode 100644 index 000000000..8641a964d --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugView.axaml @@ -0,0 +1,8 @@ + + Performance + \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugView.axaml.cs new file mode 100644 index 000000000..ed3608aae --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugView.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia.Markup.Xaml; +using Avalonia.ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger.Tabs.Performance +{ + public class PerformanceDebugView : ReactiveUserControl + { + public PerformanceDebugView() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugViewModel.cs new file mode 100644 index 000000000..922bb501c --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Performance/PerformanceDebugViewModel.cs @@ -0,0 +1,15 @@ +using ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger.Tabs.Performance +{ + public class PerformanceDebugViewModel : ActivatableViewModelBase, IRoutableViewModel + { + public PerformanceDebugViewModel(IScreen hostScreen) + { + HostScreen = hostScreen; + } + + public string UrlPathSegment => "performance"; + public IScreen HostScreen { get; } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugView.axaml b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugView.axaml new file mode 100644 index 000000000..ef59cd8fc --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugView.axaml @@ -0,0 +1,16 @@ + + + + + + + Render + + + + \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugView.axaml.cs new file mode 100644 index 000000000..97da511c8 --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugView.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia.Markup.Xaml; +using Avalonia.ReactiveUI; + +namespace Artemis.UI.Avalonia.Screens.Debugger.Tabs.Render +{ + public class RenderDebugView : ReactiveUserControl + { + public RenderDebugView() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugViewModel.cs new file mode 100644 index 000000000..eda43abca --- /dev/null +++ b/src/Artemis.UI.Avalonia/Screens/Debugger/Tabs/Render/RenderDebugViewModel.cs @@ -0,0 +1,118 @@ +using System.IO; +using System.Reactive.Disposables; +using System.Timers; +using Artemis.Core; +using Artemis.Core.Services; +using ReactiveUI; +using SkiaSharp; + +namespace Artemis.UI.Avalonia.Screens.Debugger.Tabs.Render +{ + public class RenderDebugViewModel : ActivatableViewModelBase, IRoutableViewModel + { + private readonly ICoreService _coreService; + private readonly Timer _fpsTimer; + private double _currentFps; + + private SKImage? _currentFrame; + private int _frames; + private string? _frameTargetPath; + private string _renderer; + private int _renderHeight; + private int _renderWidth; + + public RenderDebugViewModel(DebugViewModel hostScreen, ICoreService coreService) + { + HostScreen = hostScreen; + + _coreService = coreService; + _fpsTimer = new Timer(1000); + _fpsTimer.Start(); + + this.WhenActivated(disposables => + { + HandleActivation(); + Disposable.Create(HandleDeactivation).DisposeWith(disposables); + }); + } + + public SKImage? CurrentFrame + { + get => _currentFrame; + set => this.RaiseAndSetIfChanged(ref _currentFrame, value); + } + + public double CurrentFps + { + get => _currentFps; + set => this.RaiseAndSetIfChanged(ref _currentFps, value); + } + + public int RenderWidth + { + get => _renderWidth; + set => this.RaiseAndSetIfChanged(ref _renderWidth, value); + } + + public int RenderHeight + { + get => _renderHeight; + set => this.RaiseAndSetIfChanged(ref _renderHeight, value); + } + + public string Renderer + { + get => _renderer; + set => this.RaiseAndSetIfChanged(ref _renderer, value); + } + + private void HandleActivation() + { + _coreService.FrameRendered += CoreServiceOnFrameRendered; + _fpsTimer.Elapsed += FpsTimerOnElapsed; + } + + private void HandleDeactivation() + { + _coreService.FrameRendered -= CoreServiceOnFrameRendered; + _fpsTimer.Elapsed -= FpsTimerOnElapsed; + _fpsTimer.Dispose(); + } + + private void CoreServiceOnFrameRendered(object? sender, FrameRenderedEventArgs e) + { + _frames++; + + using SKImage skImage = e.Texture.Surface.Snapshot(); + SKImageInfo bitmapInfo = e.Texture.ImageInfo; + + if (_frameTargetPath != null) + { + using (SKData data = skImage.Encode(SKEncodedImageFormat.Png, 100)) + { + using (FileStream stream = File.OpenWrite(_frameTargetPath)) + { + data.SaveTo(stream); + } + } + + _frameTargetPath = null; + } + + RenderHeight = bitmapInfo.Height; + RenderWidth = bitmapInfo.Width; + + CurrentFrame = e.Texture.Surface.Snapshot(); + } + + private void FpsTimerOnElapsed(object sender, ElapsedEventArgs e) + { + CurrentFps = _frames; + Renderer = Constants.ManagedGraphicsContext != null ? Constants.ManagedGraphicsContext.GetType().Name : "Software"; + _frames = 0; + } + + public string UrlPathSegment => "render"; + public IScreen HostScreen { get; } + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesView.axaml b/src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesView.axaml similarity index 97% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesView.axaml rename to src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesView.axaml index 23c5676a5..78b19a2da 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesView.axaml +++ b/src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesView.axaml @@ -4,7 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:controls="clr-namespace:Artemis.UI.Avalonia.Shared.Controls;assembly=Artemis.UI.Avalonia.Shared" mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="800" - x:Class="Artemis.UI.Avalonia.Screens.Device.Views.DevicePropertiesView" + x:Class="Artemis.UI.Avalonia.Screens.Device.DevicePropertiesView" Title="Artemis | Device Properties" Width="1250" Height="900" diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesView.axaml.cs similarity index 76% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesView.axaml.cs rename to src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesView.axaml.cs index 873a57126..7fce03fb9 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesView.axaml.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesView.axaml.cs @@ -1,10 +1,8 @@ -using Artemis.UI.Avalonia.Screens.Device.ViewModels; using Avalonia; -using Avalonia.Controls; using Avalonia.Markup.Xaml; using Avalonia.ReactiveUI; -namespace Artemis.UI.Avalonia.Screens.Device.Views +namespace Artemis.UI.Avalonia.Screens.Device { public partial class DevicePropertiesView : ReactiveWindow { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DevicePropertiesViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesViewModel.cs similarity index 95% rename from src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DevicePropertiesViewModel.cs rename to src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesViewModel.cs index 26341477a..9fe91baf9 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DevicePropertiesViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/DevicePropertiesViewModel.cs @@ -4,7 +4,7 @@ using Artemis.UI.Avalonia.Ninject.Factories; using RGB.NET.Core; using ArtemisLed = Artemis.Core.ArtemisLed; -namespace Artemis.UI.Avalonia.Screens.Device.ViewModels +namespace Artemis.UI.Avalonia.Screens.Device { public class DevicePropertiesViewModel : ActivatableViewModelBase { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DeviceInfoTabViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceInfoTabViewModel.cs similarity index 93% rename from src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DeviceInfoTabViewModel.cs rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceInfoTabViewModel.cs index 0e065f8be..4c374130b 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DeviceInfoTabViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceInfoTabViewModel.cs @@ -3,7 +3,7 @@ using Artemis.Core; using Avalonia; using RGB.NET.Core; -namespace Artemis.UI.Avalonia.Screens.Device.ViewModels +namespace Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels { public class DeviceInfoTabViewModel : ActivatableViewModelBase { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DeviceLedsTabViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceLedsTabViewModel.cs similarity index 97% rename from src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DeviceLedsTabViewModel.cs rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceLedsTabViewModel.cs index 176ee1819..ac27f82f8 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DeviceLedsTabViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceLedsTabViewModel.cs @@ -7,7 +7,7 @@ using Artemis.Core; using DynamicData.Binding; using ReactiveUI; -namespace Artemis.UI.Avalonia.Screens.Device.ViewModels +namespace Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels { public class DeviceLedsTabViewModel : ActivatableViewModelBase { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DevicePropertiesTabViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DevicePropertiesTabViewModel.cs similarity index 99% rename from src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DevicePropertiesTabViewModel.cs rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DevicePropertiesTabViewModel.cs index 1d51a69c9..3c04a654d 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/DevicePropertiesTabViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DevicePropertiesTabViewModel.cs @@ -9,7 +9,7 @@ using Artemis.UI.Avalonia.Shared.Services.Interfaces; using ReactiveUI; using SkiaSharp; -namespace Artemis.UI.Avalonia.Screens.Device.ViewModels +namespace Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels { public class DevicePropertiesTabViewModel : ActivatableViewModelBase { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/InputMappingsTabViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/InputMappingsTabViewModel.cs similarity index 98% rename from src/Artemis.UI.Avalonia/Screens/Device/ViewModels/InputMappingsTabViewModel.cs rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/InputMappingsTabViewModel.cs index 16e688a11..0556e4d49 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/ViewModels/InputMappingsTabViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/InputMappingsTabViewModel.cs @@ -8,7 +8,7 @@ using Artemis.UI.Avalonia.Exceptions; using ReactiveUI; using RGB.NET.Core; -namespace Artemis.UI.Avalonia.Screens.Device.ViewModels +namespace Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels { public class InputMappingsTabViewModel : ActivatableViewModelBase { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceInfoTabView.axaml b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml similarity index 81% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceInfoTabView.axaml rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml index 7ab1fb957..443b06da8 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceInfoTabView.axaml +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml @@ -3,6 +3,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Artemis.UI.Avalonia.Screens.Device.Views.DeviceInfoTabView"> + x:Class="Artemis.UI.Avalonia.Screens.Device.Tabs.Views.DeviceInfoTabView"> Welcome to Avalonia! diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceInfoTabView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml.cs similarity index 82% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceInfoTabView.axaml.cs rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml.cs index 704d98805..dae2666b3 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceInfoTabView.axaml.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml.cs @@ -1,8 +1,7 @@ -using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; -namespace Artemis.UI.Avalonia.Screens.Device.Views +namespace Artemis.UI.Avalonia.Screens.Device.Tabs.Views { public partial class DeviceInfoTabView : UserControl { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceLedsTabView.axaml b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceLedsTabView.axaml similarity index 81% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceLedsTabView.axaml rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceLedsTabView.axaml index 1b9e80874..ab528dee6 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceLedsTabView.axaml +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceLedsTabView.axaml @@ -3,6 +3,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Artemis.UI.Avalonia.Screens.Device.Views.DeviceLedsTabView"> + x:Class="Artemis.UI.Avalonia.Screens.Device.Tabs.Views.DeviceLedsTabView"> Welcome to Avalonia! diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceLedsTabView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceLedsTabView.axaml.cs similarity index 82% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceLedsTabView.axaml.cs rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceLedsTabView.axaml.cs index 5c080c933..e3dbd1d2f 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/DeviceLedsTabView.axaml.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceLedsTabView.axaml.cs @@ -1,8 +1,7 @@ -using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; -namespace Artemis.UI.Avalonia.Screens.Device.Views +namespace Artemis.UI.Avalonia.Screens.Device.Tabs.Views { public partial class DeviceLedsTabView : UserControl { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesTabView.axaml b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DevicePropertiesTabView.axaml similarity index 98% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesTabView.axaml rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DevicePropertiesTabView.axaml index d185ab91d..52e8643bb 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesTabView.axaml +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DevicePropertiesTabView.axaml @@ -4,10 +4,10 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" - xmlns:viewModels="clr-namespace:Artemis.UI.Avalonia.Screens.Device.ViewModels" xmlns:converters="clr-namespace:Artemis.UI.Avalonia.Shared.Converters;assembly=Artemis.UI.Avalonia.Shared" + xmlns:viewModels="clr-namespace:Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="1200" - x:Class="Artemis.UI.Avalonia.Screens.Device.Views.DevicePropertiesTabView"> + x:Class="Artemis.UI.Avalonia.Screens.Device.Tabs.Views.DevicePropertiesTabView"> diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesTabView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DevicePropertiesTabView.axaml.cs similarity index 76% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesTabView.axaml.cs rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DevicePropertiesTabView.axaml.cs index a8b8c6e05..63d0295a1 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/DevicePropertiesTabView.axaml.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DevicePropertiesTabView.axaml.cs @@ -1,12 +1,9 @@ -using System.Threading.Tasks; -using Artemis.UI.Avalonia.Screens.Device.ViewModels; -using Avalonia; -using Avalonia.Controls; +using Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels; using Avalonia.Input; using Avalonia.Markup.Xaml; using Avalonia.ReactiveUI; -namespace Artemis.UI.Avalonia.Screens.Device.Views +namespace Artemis.UI.Avalonia.Screens.Device.Tabs.Views { public partial class DevicePropertiesTabView : ReactiveUserControl { diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/InputMappingsTabView.axaml b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/InputMappingsTabView.axaml similarity index 80% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/InputMappingsTabView.axaml rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/InputMappingsTabView.axaml index 50bbb2dbb..c18ce5319 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/InputMappingsTabView.axaml +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/InputMappingsTabView.axaml @@ -3,6 +3,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - x:Class="Artemis.UI.Avalonia.Screens.Device.Views.InputMappingsTabView"> + x:Class="Artemis.UI.Avalonia.Screens.Device.Tabs.Views.InputMappingsTabView"> Welcome to Avalonia! diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Views/InputMappingsTabView.axaml.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/InputMappingsTabView.axaml.cs similarity index 83% rename from src/Artemis.UI.Avalonia/Screens/Device/Views/InputMappingsTabView.axaml.cs rename to src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/InputMappingsTabView.axaml.cs index e54cccf45..21ea6cf5b 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Views/InputMappingsTabView.axaml.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/InputMappingsTabView.axaml.cs @@ -1,8 +1,7 @@ -using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; -namespace Artemis.UI.Avalonia.Screens.Device.Views +namespace Artemis.UI.Avalonia.Screens.Device.Tabs.Views { public partial class InputMappingsTabView : UserControl { diff --git a/src/Artemis.UI.Avalonia/Services/DebugService.cs b/src/Artemis.UI.Avalonia/Services/DebugService.cs index b6802edca..80e52ed7a 100644 --- a/src/Artemis.UI.Avalonia/Services/DebugService.cs +++ b/src/Artemis.UI.Avalonia/Services/DebugService.cs @@ -1,4 +1,4 @@ -using Artemis.UI.Avalonia.Screens.Debug; +using Artemis.UI.Avalonia.Screens.Debugger; using Artemis.UI.Avalonia.Services.Interfaces; using Artemis.UI.Avalonia.Shared.Services.Interfaces;