mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Device debugger - Redesigned window
Surface editor - Added option to disable color overlay
This commit is contained in:
parent
7f30950af1
commit
b4ab8f6969
@ -15,6 +15,7 @@ using Artemis.UI.Screens.ProfileEditor.ProfileTree.TreeItem;
|
|||||||
using Artemis.UI.Screens.ProfileEditor.Visualization;
|
using Artemis.UI.Screens.ProfileEditor.Visualization;
|
||||||
using Artemis.UI.Screens.ProfileEditor.Visualization.Tools;
|
using Artemis.UI.Screens.ProfileEditor.Visualization.Tools;
|
||||||
using Artemis.UI.Screens.Settings.Debug;
|
using Artemis.UI.Screens.Settings.Debug;
|
||||||
|
using Artemis.UI.Screens.Settings.Debug.Device.Tabs;
|
||||||
using Artemis.UI.Screens.Settings.Tabs.Devices;
|
using Artemis.UI.Screens.Settings.Tabs.Devices;
|
||||||
using Artemis.UI.Screens.Settings.Tabs.Plugins;
|
using Artemis.UI.Screens.Settings.Tabs.Plugins;
|
||||||
using Artemis.UI.Screens.Shared;
|
using Artemis.UI.Screens.Shared;
|
||||||
@ -43,7 +44,9 @@ namespace Artemis.UI.Ninject.Factories
|
|||||||
|
|
||||||
public interface IDeviceDebugVmFactory : IVmFactory
|
public interface IDeviceDebugVmFactory : IVmFactory
|
||||||
{
|
{
|
||||||
DeviceDebugViewModel Create(ArtemisDevice device);
|
DeviceDebugViewModel DeviceDebugViewModel(ArtemisDevice device);
|
||||||
|
DevicePropertiesTabViewModel DevicePropertiesTabViewModel(ArtemisDevice device);
|
||||||
|
DeviceLedsTabViewModel DeviceLedsTabViewModel(ArtemisDevice device);
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IProfileTreeVmFactory : IVmFactory
|
public interface IProfileTreeVmFactory : IVmFactory
|
||||||
|
|||||||
@ -0,0 +1,134 @@
|
|||||||
|
<mde:MaterialWindow x:Class="Artemis.UI.Screens.Settings.Debug.DeviceDebugView"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
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:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
|
xmlns:mde="clr-namespace:MaterialDesignExtensions.Controls;assembly=MaterialDesignExtensions"
|
||||||
|
xmlns:debug="clr-namespace:Artemis.UI.Screens.Settings.Debug"
|
||||||
|
xmlns:core="clr-namespace:Artemis.Core;assembly=Artemis.Core"
|
||||||
|
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Title="Artemis device debugger"
|
||||||
|
TitleBarIcon="{StaticResource BowIcon}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignBody}"
|
||||||
|
Background="{DynamicResource MaterialDesignPaper}"
|
||||||
|
FontFamily="pack://application:,,,/MaterialDesignThemes.Wpf;component/Resources/Roboto/#Roboto"
|
||||||
|
UseLayoutRounding="True"
|
||||||
|
FadeContentIfInactive="False"
|
||||||
|
Width="1400"
|
||||||
|
Height="800"
|
||||||
|
d:DesignHeight="800" d:DesignWidth="800"
|
||||||
|
d:DataContext="{d:DesignInstance debug:DeviceDebugViewModel}"
|
||||||
|
Icon="/Resources/Images/Logo/logo-512.png">
|
||||||
|
<mde:MaterialWindow.InputBindings>
|
||||||
|
<KeyBinding Command="{s:Action ClearSelection}" Key="Escape" />
|
||||||
|
</mde:MaterialWindow.InputBindings>
|
||||||
|
<DockPanel>
|
||||||
|
<mde:AppBar Type="Dense"
|
||||||
|
Title="{Binding Device.RgbDevice.DeviceInfo.Model}"
|
||||||
|
ShowShadow="True"
|
||||||
|
DockPanel.Dock="Top"
|
||||||
|
Margin="-18 0 0 0">
|
||||||
|
<mde:AppBar.AppIcon>
|
||||||
|
<materialDesign:PackIcon Kind="HammerWrench" Width="20" Height="28" />
|
||||||
|
</mde:AppBar.AppIcon>
|
||||||
|
|
||||||
|
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal">
|
||||||
|
<Button Style="{StaticResource MaterialDesignIconForegroundButton}" ToolTip="Identify" Command="{s:Action IdentifyDevice}">
|
||||||
|
<materialDesign:PackIcon Kind="AlarmLight" />
|
||||||
|
</Button>
|
||||||
|
<materialDesign:PopupBox PlacementMode="BottomAndAlignRightEdges" StaysOpen="False">
|
||||||
|
<StackPanel>
|
||||||
|
<Button Command="{s:Action OpenPluginDirectory}">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="Plugin" Margin="0 0 10 0 " VerticalAlignment="Center" />
|
||||||
|
<TextBlock VerticalAlignment="Center">Open plugin directory</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Command="{s:Action OpenImageDirectory}">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="Image" Margin="0 0 10 0 " VerticalAlignment="Center" />
|
||||||
|
<TextBlock VerticalAlignment="Center">Open layout image directory</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Separator />
|
||||||
|
<Button Command="{s:Action ReloadLayout}">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="Reload" Margin="0 0 10 0 " VerticalAlignment="Center" />
|
||||||
|
<TextBlock VerticalAlignment="Center">Reload layout</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Command="{s:Action ExportLayout}">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<materialDesign:PackIcon Kind="Xml" Margin="0 0 10 0 " VerticalAlignment="Center" />
|
||||||
|
<TextBlock VerticalAlignment="Center">Export layout</TextBlock>
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
</StackPanel>
|
||||||
|
</materialDesign:PopupBox>
|
||||||
|
</StackPanel>
|
||||||
|
</mde:AppBar>
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="0" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<Grid Name="DeviceDisplayGrid" Grid.Column="0">
|
||||||
|
<Grid.Background>
|
||||||
|
<VisualBrush TileMode="Tile" Stretch="Uniform" Viewport="0 0 20 20" ViewportUnits="Absolute">
|
||||||
|
<VisualBrush.Visual>
|
||||||
|
<Grid Width="20" Height="20">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Rectangle Grid.Row="0" Grid.Column="0" Fill="Black" Opacity="0.15" />
|
||||||
|
<Rectangle Grid.Row="0" Grid.Column="1" />
|
||||||
|
<Rectangle Grid.Row="1" Grid.Column="0" />
|
||||||
|
<Rectangle Grid.Row="1" Grid.Column="1" Fill="Black" Opacity="0.15" />
|
||||||
|
</Grid>
|
||||||
|
</VisualBrush.Visual>
|
||||||
|
</VisualBrush>
|
||||||
|
</Grid.Background>
|
||||||
|
|
||||||
|
<shared:DeviceVisualizer Device="{Binding Device}"
|
||||||
|
HighlightedLeds="{Binding SelectedLeds}"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
ShowColors="True"
|
||||||
|
Margin="0 0 100 0" />
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<GridSplitter Grid.Column="1" Width="15" Margin="-15 0 0 0" Background="Transparent" HorizontalAlignment="Stretch" Panel.ZIndex="3" />
|
||||||
|
|
||||||
|
<materialDesign:Card Grid.Column="2"
|
||||||
|
materialDesign:ShadowAssist.ShadowDepth="Depth3"
|
||||||
|
Background="{DynamicResource MaterialDesignPaper}">
|
||||||
|
<TabControl
|
||||||
|
Style="{StaticResource MaterialDesignTabControl}"
|
||||||
|
ItemsSource="{Binding Items}"
|
||||||
|
SelectedItem="{Binding ActiveItem}"
|
||||||
|
DisplayMemberPath="DisplayName">
|
||||||
|
<TabControl.ContentTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<ContentControl s:View.Model="{Binding IsAsync=True}"
|
||||||
|
VerticalContentAlignment="Stretch"
|
||||||
|
HorizontalContentAlignment="Stretch"
|
||||||
|
IsTabStop="False"
|
||||||
|
TextElement.Foreground="{DynamicResource MaterialDesignBody}" />
|
||||||
|
</DataTemplate>
|
||||||
|
</TabControl.ContentTemplate>
|
||||||
|
</TabControl>
|
||||||
|
</materialDesign:Card>
|
||||||
|
</Grid>
|
||||||
|
</DockPanel>
|
||||||
|
</mde:MaterialWindow>
|
||||||
@ -2,9 +2,12 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using Artemis.Core;
|
using Artemis.Core;
|
||||||
using Artemis.Core.Services;
|
using Artemis.Core.Services;
|
||||||
|
using Artemis.UI.Ninject.Factories;
|
||||||
|
using Artemis.UI.Screens.Shared;
|
||||||
using Artemis.UI.Shared.Services;
|
using Artemis.UI.Shared.Services;
|
||||||
using Ookii.Dialogs.Wpf;
|
using Ookii.Dialogs.Wpf;
|
||||||
using RGB.NET.Layout;
|
using RGB.NET.Layout;
|
||||||
@ -14,23 +17,29 @@ using Stylet;
|
|||||||
|
|
||||||
namespace Artemis.UI.Screens.Settings.Debug
|
namespace Artemis.UI.Screens.Settings.Debug
|
||||||
{
|
{
|
||||||
public class DeviceDebugViewModel : Screen
|
public class DeviceDebugViewModel : Conductor<Screen>.Collection.OneActive
|
||||||
{
|
{
|
||||||
private readonly IDeviceService _deviceService;
|
private readonly IDeviceService _deviceService;
|
||||||
private readonly IDialogService _dialogService;
|
private readonly IDialogService _dialogService;
|
||||||
private readonly IRgbService _rgbService;
|
private readonly IRgbService _rgbService;
|
||||||
private ArtemisLed _selectedLed;
|
private ArtemisLed _selectedLed;
|
||||||
|
|
||||||
public DeviceDebugViewModel(ArtemisDevice device, IDeviceService deviceService, IRgbService rgbService, IDialogService dialogService)
|
public DeviceDebugViewModel(ArtemisDevice device, IDeviceService deviceService, IRgbService rgbService, IDialogService dialogService, IDeviceDebugVmFactory factory)
|
||||||
{
|
{
|
||||||
_deviceService = deviceService;
|
_deviceService = deviceService;
|
||||||
_rgbService = rgbService;
|
_rgbService = rgbService;
|
||||||
_dialogService = dialogService;
|
_dialogService = dialogService;
|
||||||
|
|
||||||
Device = device;
|
Device = device;
|
||||||
|
PanZoomViewModel = new PanZoomViewModel();
|
||||||
|
|
||||||
|
Items.Add(factory.DevicePropertiesTabViewModel(device));
|
||||||
|
Items.Add(factory.DeviceLedsTabViewModel(device));
|
||||||
|
ActiveItem = Items.First();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ArtemisLed> SelectedLeds => SelectedLed != null ? new List<ArtemisLed> {SelectedLed} : null;
|
|
||||||
public ArtemisDevice Device { get; }
|
public ArtemisDevice Device { get; }
|
||||||
|
public PanZoomViewModel PanZoomViewModel { get; }
|
||||||
|
|
||||||
public ArtemisLed SelectedLed
|
public ArtemisLed SelectedLed
|
||||||
{
|
{
|
||||||
@ -41,6 +50,7 @@ namespace Artemis.UI.Screens.Settings.Debug
|
|||||||
NotifyOfPropertyChange(nameof(SelectedLeds));
|
NotifyOfPropertyChange(nameof(SelectedLeds));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public List<ArtemisLed> SelectedLeds => SelectedLed != null ? new List<ArtemisLed> { SelectedLed } : null;
|
||||||
|
|
||||||
public bool CanOpenImageDirectory => Device.Layout?.Image != null;
|
public bool CanOpenImageDirectory => Device.Layout?.Image != null;
|
||||||
|
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
<UserControl x:Class="Artemis.UI.Screens.Settings.Debug.Device.Tabs.DeviceLedsTabView"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:local="clr-namespace:Artemis.UI.Screens.Settings.Debug.Device.Tabs"
|
||||||
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
|
xmlns:core="clr-namespace:Artemis.Core;assembly=Artemis.Core"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignHeight="450" d:DesignWidth="800"
|
||||||
|
d:DataContext="{d:DesignInstance local:DeviceLedsTabViewModel}">
|
||||||
|
<Grid>
|
||||||
|
|
||||||
|
<DataGrid ItemsSource="{Binding Device.Leds}"
|
||||||
|
d:DataContext="{d:DesignInstance Type=core:ArtemisLed}"
|
||||||
|
CanUserSortColumns="True"
|
||||||
|
IsReadOnly="True"
|
||||||
|
CanUserAddRows="False"
|
||||||
|
AutoGenerateColumns="False"
|
||||||
|
materialDesign:DataGridAssist.CellPadding="13 8 8 8"
|
||||||
|
materialDesign:DataGridAssist.ColumnHeaderPadding="8"
|
||||||
|
SelectedItem="{Binding Parent.SelectedLed}"
|
||||||
|
CanUserResizeRows="False"
|
||||||
|
Margin="10">
|
||||||
|
<DataGrid.Columns>
|
||||||
|
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Id}" Header="LED ID" Width="Auto" />
|
||||||
|
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Color}" Header="Color (ARGB)" Width="Auto" />
|
||||||
|
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.CustomData.Image}" Header="Image path" />
|
||||||
|
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Shape}" Header="Shape" />
|
||||||
|
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Size}" Header="Size" Width="Auto" />
|
||||||
|
</DataGrid.Columns>
|
||||||
|
</DataGrid>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
using Artemis.Core;
|
||||||
|
using Stylet;
|
||||||
|
|
||||||
|
namespace Artemis.UI.Screens.Settings.Debug.Device.Tabs
|
||||||
|
{
|
||||||
|
public class DeviceLedsTabViewModel : Screen
|
||||||
|
{
|
||||||
|
|
||||||
|
public DeviceLedsTabViewModel(ArtemisDevice device)
|
||||||
|
{
|
||||||
|
Device = device;
|
||||||
|
DisplayName = "LEDS";
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArtemisDevice Device { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,197 @@
|
|||||||
|
<UserControl x:Class="Artemis.UI.Screens.Settings.Debug.Device.Tabs.DevicePropertiesTabView"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:local="clr-namespace:Artemis.UI.Screens.Settings.Debug.Device.Tabs"
|
||||||
|
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignHeight="450" d:DesignWidth="800"
|
||||||
|
d:DataContext="{d:DesignInstance local:DevicePropertiesTabViewModel}">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0" Margin="15" HorizontalAlignment="Stretch">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Device name</TextBlock>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.RgbDevice.DeviceInfo.DeviceName}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Manufacturer</TextBlock>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.RgbDevice.DeviceInfo.Manufacturer}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Device type</TextBlock>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.RgbDevice.DeviceInfo.DeviceType}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Physical layout</TextBlock>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.PhysicalLayout}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Device image</TextBlock>
|
||||||
|
<TextBox Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.Layout.Image, Mode=OneWay}"
|
||||||
|
IsReadOnly="True" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel Grid.Column="1" Margin="15" HorizontalAlignment="Stretch">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Size (1px = 1mm)</TextBlock>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.RgbDevice.Size}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Location (1px = 1mm)</TextBlock>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.RgbDevice.Location}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Rotation (degrees)</TextBlock>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.RgbDevice.Rotation.Degrees}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Logical layout</TextBlock>
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
||||||
|
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.LogicalLayout}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
||||||
|
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<StackPanel Grid.Column="0">
|
||||||
|
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Layout file path</TextBlock>
|
||||||
|
<TextBox Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
||||||
|
TextWrapping="Wrap"
|
||||||
|
Text="{Binding Device.Layout.FilePath, Mode=OneWay}"
|
||||||
|
IsReadOnly="True" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
using Artemis.Core;
|
||||||
|
using Stylet;
|
||||||
|
|
||||||
|
namespace Artemis.UI.Screens.Settings.Debug.Device.Tabs
|
||||||
|
{
|
||||||
|
public class DevicePropertiesTabViewModel : Screen
|
||||||
|
{
|
||||||
|
public DevicePropertiesTabViewModel(ArtemisDevice device)
|
||||||
|
{
|
||||||
|
Device = device;
|
||||||
|
DisplayName = "PROPERTIES";
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArtemisDevice Device { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,310 +0,0 @@
|
|||||||
<mde:MaterialWindow x:Class="Artemis.UI.Screens.Settings.Debug.DeviceDebugView"
|
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
||||||
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:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
|
|
||||||
xmlns:s="https://github.com/canton7/Stylet"
|
|
||||||
xmlns:mde="clr-namespace:MaterialDesignExtensions.Controls;assembly=MaterialDesignExtensions"
|
|
||||||
xmlns:debug="clr-namespace:Artemis.UI.Screens.Settings.Debug"
|
|
||||||
xmlns:core="clr-namespace:Artemis.Core;assembly=Artemis.Core"
|
|
||||||
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
|
||||||
mc:Ignorable="d"
|
|
||||||
Title="Artemis device debugger"
|
|
||||||
TitleBarIcon="{StaticResource BowIcon}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignBody}"
|
|
||||||
Background="{DynamicResource MaterialDesignPaper}"
|
|
||||||
FontFamily="pack://application:,,,/MaterialDesignThemes.Wpf;component/Resources/Roboto/#Roboto"
|
|
||||||
UseLayoutRounding="True"
|
|
||||||
FadeContentIfInactive="False"
|
|
||||||
Width="840"
|
|
||||||
Height="800"
|
|
||||||
d:DesignHeight="800" d:DesignWidth="800" d:DataContext="{d:DesignInstance debug:DeviceDebugViewModel}"
|
|
||||||
Icon="/Resources/Images/Logo/logo-512.png">
|
|
||||||
<mde:MaterialWindow.InputBindings>
|
|
||||||
<KeyBinding Command="{s:Action ClearSelection}" Key="Escape" />
|
|
||||||
</mde:MaterialWindow.InputBindings>
|
|
||||||
<DockPanel>
|
|
||||||
<mde:AppBar Type="Dense"
|
|
||||||
Title="{Binding Device.RgbDevice.DeviceInfo.Model}"
|
|
||||||
ShowShadow="True"
|
|
||||||
DockPanel.Dock="Top"
|
|
||||||
Margin="-18 0 0 0">
|
|
||||||
<mde:AppBar.AppIcon>
|
|
||||||
<materialDesign:PackIcon Kind="HammerWrench" Width="20" Height="28" />
|
|
||||||
</mde:AppBar.AppIcon>
|
|
||||||
|
|
||||||
<StackPanel DockPanel.Dock="Right" Orientation="Horizontal">
|
|
||||||
<Button Style="{StaticResource MaterialDesignIconForegroundButton}" ToolTip="Identify" Command="{s:Action IdentifyDevice}">
|
|
||||||
<materialDesign:PackIcon Kind="AlarmLight" />
|
|
||||||
</Button>
|
|
||||||
<materialDesign:PopupBox PlacementMode="BottomAndAlignRightEdges" StaysOpen="False">
|
|
||||||
<StackPanel>
|
|
||||||
<Button Command="{s:Action OpenPluginDirectory}">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="Plugin" Margin="0 0 10 0 " VerticalAlignment="Center" />
|
|
||||||
<TextBlock VerticalAlignment="Center">Open plugin directory</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<Button Command="{s:Action OpenImageDirectory}">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="Image" Margin="0 0 10 0 " VerticalAlignment="Center" />
|
|
||||||
<TextBlock VerticalAlignment="Center">Open layout image directory</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<Separator />
|
|
||||||
<Button Command="{s:Action ReloadLayout}">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="Reload" Margin="0 0 10 0 " VerticalAlignment="Center" />
|
|
||||||
<TextBlock VerticalAlignment="Center">Reload layout</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<Button Command="{s:Action ExportLayout}">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<materialDesign:PackIcon Kind="Xml" Margin="0 0 10 0 " VerticalAlignment="Center" />
|
|
||||||
<TextBlock VerticalAlignment="Center">Export layout</TextBlock>
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
</StackPanel>
|
|
||||||
</materialDesign:PopupBox>
|
|
||||||
</StackPanel>
|
|
||||||
</mde:AppBar>
|
|
||||||
|
|
||||||
<ScrollViewer>
|
|
||||||
<Grid Margin="15">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="Auto" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<TextBlock TextWrapping="Wrap" Margin="0 0 0 10">
|
|
||||||
In this window you can view detailed information of the device.
|
|
||||||
Please note that having this window open can have a performance impact on your system.
|
|
||||||
</TextBlock>
|
|
||||||
|
|
||||||
<materialDesign:Card materialDesign:ShadowAssist.ShadowDepth="Depth1" Grid.Row="1" Padding="15" Margin="0 10">
|
|
||||||
<shared:DeviceVisualizer Device="{Binding Device}"
|
|
||||||
HighlightedLeds="{Binding SelectedLeds}"
|
|
||||||
HorizontalAlignment="Center"
|
|
||||||
MaxHeight="400"
|
|
||||||
ShowColors="True" />
|
|
||||||
</materialDesign:Card>
|
|
||||||
|
|
||||||
<materialDesign:Card materialDesign:ShadowAssist.ShadowDepth="Depth1" Grid.Row="2" Padding="15" Margin="0 10">
|
|
||||||
<Expander VerticalAlignment="Center" Header="Device properties">
|
|
||||||
<Grid>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition />
|
|
||||||
<ColumnDefinition />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0" Margin="15" HorizontalAlignment="Stretch">
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Device name</TextBlock>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.RgbDevice.DeviceInfo.DeviceName}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
|
||||||
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Manufacturer</TextBlock>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.RgbDevice.DeviceInfo.Manufacturer}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
|
||||||
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Device type</TextBlock>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.RgbDevice.DeviceInfo.DeviceType}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
|
||||||
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Physical layout</TextBlock>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.PhysicalLayout}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
|
||||||
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Device image</TextBlock>
|
|
||||||
<TextBox Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.Layout.Image, Mode=OneWay}"
|
|
||||||
IsReadOnly="True" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
</StackPanel>
|
|
||||||
<StackPanel Grid.Column="1" Margin="15" HorizontalAlignment="Stretch">
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Size (1px = 1mm)</TextBlock>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.RgbDevice.Size}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Location (1px = 1mm)</TextBlock>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.RgbDevice.Location}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
|
||||||
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Rotation (degrees)</TextBlock>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.RgbDevice.Rotation.Degrees}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
|
||||||
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Logical layout</TextBlock>
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}"
|
|
||||||
Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.LogicalLayout}" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
<Separator Style="{StaticResource MaterialDesignSeparator}" Margin="0 5" />
|
|
||||||
|
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<StackPanel Grid.Column="0">
|
|
||||||
<TextBlock Style="{StaticResource MaterialDesignTextBlock}">Layout file path</TextBlock>
|
|
||||||
<TextBox Foreground="{DynamicResource MaterialDesignNavigationItemSubheader}"
|
|
||||||
TextWrapping="Wrap"
|
|
||||||
Text="{Binding Device.Layout.FilePath, Mode=OneWay}"
|
|
||||||
IsReadOnly="True" />
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
</StackPanel>
|
|
||||||
</Grid>
|
|
||||||
</Expander>
|
|
||||||
</materialDesign:Card>
|
|
||||||
|
|
||||||
<materialDesign:Card Grid.Row="3" materialDesign:ShadowAssist.ShadowDepth="Depth1" Padding="15" MaxHeight="413" Margin="0 10">
|
|
||||||
<DataGrid ItemsSource="{Binding Device.Leds}"
|
|
||||||
d:DataContext="{d:DesignInstance Type=core:ArtemisLed}"
|
|
||||||
CanUserSortColumns="True"
|
|
||||||
IsReadOnly="True"
|
|
||||||
CanUserAddRows="False"
|
|
||||||
AutoGenerateColumns="False"
|
|
||||||
materialDesign:DataGridAssist.CellPadding="13 8 8 8"
|
|
||||||
materialDesign:DataGridAssist.ColumnHeaderPadding="8"
|
|
||||||
SelectedItem="{Binding SelectedLed}"
|
|
||||||
CanUserResizeRows="False">
|
|
||||||
<DataGrid.Columns>
|
|
||||||
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Id}" Header="LED ID" Width="Auto" />
|
|
||||||
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Color}" Header="Color (ARGB)" Width="Auto" />
|
|
||||||
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Image}" Header="Image path" />
|
|
||||||
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Shape}" Header="Shape" />
|
|
||||||
<materialDesign:DataGridTextColumn Binding="{Binding RgbLed.Size}" Header="Size" Width="Auto" />
|
|
||||||
</DataGrid.Columns>
|
|
||||||
</DataGrid>
|
|
||||||
</materialDesign:Card>
|
|
||||||
|
|
||||||
|
|
||||||
</Grid>
|
|
||||||
</ScrollViewer>
|
|
||||||
|
|
||||||
</DockPanel>
|
|
||||||
</mde:MaterialWindow>
|
|
||||||
@ -62,7 +62,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Devices
|
|||||||
|
|
||||||
public void ShowDeviceDebugger()
|
public void ShowDeviceDebugger()
|
||||||
{
|
{
|
||||||
_windowManager.ShowWindow(_deviceDebugVmFactory.Create(Device));
|
_windowManager.ShowWindow(_deviceDebugVmFactory.DeviceDebugViewModel(Device));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OpenPluginDirectory()
|
public void OpenPluginDirectory()
|
||||||
|
|||||||
@ -201,6 +201,18 @@
|
|||||||
</Path.Fill>
|
</Path.Fill>
|
||||||
</Path>
|
</Path>
|
||||||
|
|
||||||
|
<StackPanel ZIndex="1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="10" Cursor="Arrow">
|
||||||
|
<materialDesign:Card Padding="8">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<CheckBox Style="{StaticResource MaterialDesignCheckBox}"
|
||||||
|
IsChecked="{Binding ColorDevices}"
|
||||||
|
ToolTip="If selected, each device is completely lid up with a random color">
|
||||||
|
Show random device colors
|
||||||
|
</CheckBox>
|
||||||
|
</StackPanel>
|
||||||
|
</materialDesign:Card>
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0, 0, 15, 15">
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0, 0, 15, 15">
|
||||||
<Button Command="{s:Action AutoArrange}"
|
<Button Command="{s:Action AutoArrange}"
|
||||||
Style="{StaticResource MaterialDesignFloatingActionMiniButton}"
|
Style="{StaticResource MaterialDesignFloatingActionMiniButton}"
|
||||||
|
|||||||
@ -45,6 +45,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
SelectionRectangle = new RectangleGeometry();
|
SelectionRectangle = new RectangleGeometry();
|
||||||
PanZoomViewModel = new PanZoomViewModel();
|
PanZoomViewModel = new PanZoomViewModel();
|
||||||
Cursor = null;
|
Cursor = null;
|
||||||
|
ColorDevices = true;
|
||||||
|
|
||||||
SurfaceDeviceViewModels = new BindableCollection<SurfaceDeviceViewModel>();
|
SurfaceDeviceViewModels = new BindableCollection<SurfaceDeviceViewModel>();
|
||||||
ListDeviceViewModels = new BindableCollection<ListDeviceViewModel>();
|
ListDeviceViewModels = new BindableCollection<ListDeviceViewModel>();
|
||||||
@ -84,6 +85,12 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
set => SetAndNotify(ref _cursor, value);
|
set => SetAndNotify(ref _cursor, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool ColorDevices
|
||||||
|
{
|
||||||
|
get => _colorDevices;
|
||||||
|
set => SetAndNotify(ref _colorDevices, value);
|
||||||
|
}
|
||||||
|
|
||||||
public void OpenHyperlink(object sender, RequestNavigateEventArgs e)
|
public void OpenHyperlink(object sender, RequestNavigateEventArgs e)
|
||||||
{
|
{
|
||||||
Core.Utilities.OpenUrl(e.Uri.AbsoluteUri);
|
Core.Utilities.OpenUrl(e.Uri.AbsoluteUri);
|
||||||
@ -111,9 +118,14 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
|
|
||||||
private void CoreServiceOnFrameRendering(object sender, FrameRenderingEventArgs e)
|
private void CoreServiceOnFrameRendering(object sender, FrameRenderingEventArgs e)
|
||||||
{
|
{
|
||||||
|
if (!ColorDevices)
|
||||||
|
return;
|
||||||
|
|
||||||
foreach (ListDeviceViewModel listDeviceViewModel in ListDeviceViewModels)
|
foreach (ListDeviceViewModel listDeviceViewModel in ListDeviceViewModels)
|
||||||
foreach (ArtemisLed artemisLed in listDeviceViewModel.Device.Leds)
|
{
|
||||||
e.Canvas.DrawRect(artemisLed.AbsoluteRectangle, new SKPaint {Color = listDeviceViewModel.Color});
|
foreach (ArtemisLed artemisLed in listDeviceViewModel.Device.Leds)
|
||||||
|
e.Canvas.DrawRect(artemisLed.AbsoluteRectangle, new SKPaint {Color = listDeviceViewModel.Color});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Overrides of Screen
|
#region Overrides of Screen
|
||||||
@ -122,7 +134,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
{
|
{
|
||||||
LoadWorkspaceSettings();
|
LoadWorkspaceSettings();
|
||||||
SurfaceDeviceViewModels.AddRange(_rgbService.EnabledDevices.OrderBy(d => d.ZIndex).Select(d => new SurfaceDeviceViewModel(d, _rgbService)));
|
SurfaceDeviceViewModels.AddRange(_rgbService.EnabledDevices.OrderBy(d => d.ZIndex).Select(d => new SurfaceDeviceViewModel(d, _rgbService)));
|
||||||
ListDeviceViewModels.AddRange(_rgbService.EnabledDevices.OrderBy(d => d.ZIndex * -1).Select(d => new ListDeviceViewModel(d)));
|
ListDeviceViewModels.AddRange(_rgbService.EnabledDevices.OrderBy(d => d.ZIndex * -1).Select(d => new ListDeviceViewModel(d, this)));
|
||||||
|
|
||||||
List<ArtemisDevice> shuffledDevices = _rgbService.EnabledDevices.OrderBy(d => Guid.NewGuid()).ToList();
|
List<ArtemisDevice> shuffledDevices = _rgbService.EnabledDevices.OrderBy(d => Guid.NewGuid()).ToList();
|
||||||
float amount = 360f / shuffledDevices.Count;
|
float amount = 360f / shuffledDevices.Count;
|
||||||
@ -249,6 +261,7 @@ namespace Artemis.UI.Screens.SurfaceEditor
|
|||||||
|
|
||||||
private MouseDragStatus _mouseDragStatus;
|
private MouseDragStatus _mouseDragStatus;
|
||||||
private Point _mouseDragStartPoint;
|
private Point _mouseDragStartPoint;
|
||||||
|
private bool _colorDevices;
|
||||||
|
|
||||||
// ReSharper disable once UnusedMember.Global - Called from view
|
// ReSharper disable once UnusedMember.Global - Called from view
|
||||||
public void EditorGridMouseClick(object sender, MouseButtonEventArgs e)
|
public void EditorGridMouseClick(object sender, MouseButtonEventArgs e)
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="clr-namespace:Artemis.UI.Screens.SurfaceEditor.Visualization"
|
xmlns:local="clr-namespace:Artemis.UI.Screens.SurfaceEditor.Visualization"
|
||||||
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
xmlns:shared="clr-namespace:Artemis.UI.Shared;assembly=Artemis.UI.Shared"
|
||||||
|
xmlns:s="https://github.com/canton7/Stylet"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="450" d:DesignWidth="800"
|
d:DesignHeight="450" d:DesignWidth="800"
|
||||||
d:DataContext="{d:DesignInstance {x:Type local:ListDeviceViewModel}}">
|
d:DataContext="{d:DesignInstance {x:Type local:ListDeviceViewModel}}">
|
||||||
@ -22,7 +23,12 @@
|
|||||||
<TextBlock Text="{Binding Device.RgbDevice.DeviceInfo.Model}" />
|
<TextBlock Text="{Binding Device.RgbDevice.DeviceInfo.Model}" />
|
||||||
<TextBlock Text="{Binding Device.RgbDevice.DeviceInfo.Manufacturer}" Foreground="{DynamicResource MaterialDesignBodyLight}" />
|
<TextBlock Text="{Binding Device.RgbDevice.DeviceInfo.Manufacturer}" Foreground="{DynamicResource MaterialDesignBodyLight}" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Ellipse Grid.Column="2" Width="20" Height="20" Stroke="{DynamicResource MaterialDesignBody}" StrokeThickness="1">
|
<Ellipse Grid.Column="2"
|
||||||
|
Width="20"
|
||||||
|
Height="20"
|
||||||
|
Stroke="{DynamicResource MaterialDesignBody}"
|
||||||
|
StrokeThickness="1"
|
||||||
|
Visibility="{Binding Parent.ColorDevices, Converter={x:Static s:BoolToVisibilityConverter.Instance}}">
|
||||||
<Ellipse.Fill>
|
<Ellipse.Fill>
|
||||||
<SolidColorBrush Color="{Binding Color, Converter={StaticResource SKColorToColorConverter}}" />
|
<SolidColorBrush Color="{Binding Color, Converter={StaticResource SKColorToColorConverter}}" />
|
||||||
</Ellipse.Fill>
|
</Ellipse.Fill>
|
||||||
|
|||||||
@ -6,9 +6,17 @@ namespace Artemis.UI.Screens.SurfaceEditor.Visualization
|
|||||||
{
|
{
|
||||||
public class ListDeviceViewModel : PropertyChangedBase
|
public class ListDeviceViewModel : PropertyChangedBase
|
||||||
{
|
{
|
||||||
private bool _isSelected;
|
|
||||||
private SKColor _color;
|
private SKColor _color;
|
||||||
|
private bool _isSelected;
|
||||||
|
|
||||||
|
public ListDeviceViewModel(ArtemisDevice device, SurfaceEditorViewModel surfaceEditorViewModel)
|
||||||
|
{
|
||||||
|
Device = device;
|
||||||
|
Parent = surfaceEditorViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
public ArtemisDevice Device { get; }
|
public ArtemisDevice Device { get; }
|
||||||
|
public SurfaceEditorViewModel Parent { get; }
|
||||||
|
|
||||||
public bool IsSelected
|
public bool IsSelected
|
||||||
{
|
{
|
||||||
@ -21,10 +29,5 @@ namespace Artemis.UI.Screens.SurfaceEditor.Visualization
|
|||||||
get => _color;
|
get => _color;
|
||||||
set => SetAndNotify(ref _color, value);
|
set => SetAndNotify(ref _color, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ListDeviceViewModel(ArtemisDevice device)
|
|
||||||
{
|
|
||||||
Device = device;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user