Redesign main window to be winui3 themed

master
LeapwardKoex 2024-11-16 16:23:29 +13:00
parent 3eb9c1438a
commit 066ecf6850
8 changed files with 180 additions and 76 deletions

View File

@ -2,8 +2,14 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfMaiTouchEmulator"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ui:ThemesDictionary Theme="Light" />
<ui:ControlsDictionary />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

View File

@ -3,61 +3,112 @@
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:ui="http://schemas.lepo.co/wpfui/2022/xaml"
mc:Ignorable="d"
Closing="MainWindow_Closing"
Title="MainWindow" Height="400" Width="587" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen">
<StackPanel Margin="0,0,0,0">
<Menu Width="Auto" Height="20">
<MenuItem Header="{Binding LbMenuCategoryHelp}" d:Header="_Help">
<MenuItem x:Name="instructionsLabel" Header="{Binding LbMenuItemSetup}" HorizontalAlignment="Left" Width="220" Click="instructionsLabel_Click"/>
</MenuItem>
</Menu>
<Grid Background="Transparent" >
<Button x:Name="ConnectToPortButton" Content="{Binding LbConnectToPort}" d:Content="Connect to port" HorizontalAlignment="Left" Margin="10,95,0,0" VerticalAlignment="Top" Click="ConnectToPortButton_Click" Width="130" />
<TextBox x:Name="RecievedLogBox"
IsReadOnly="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"
AcceptsReturn="True"
AcceptsTab="True"
TextWrapping="Wrap" Margin="376,34,0,0" HorizontalAlignment="Left" Width="88" Height="80" VerticalAlignment="Top" />
<TextBox x:Name="SentLogBox"
IsReadOnly="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"
AcceptsReturn="True"
AcceptsTab="True"
TextWrapping="Wrap" Margin="480,34,0,0" HorizontalAlignment="Left" Width="88" Height="80" VerticalAlignment="Top" />
<Label x:Name="label" Content="{Binding LbRecievedData}" d:Content="Recieved Data" HorizontalAlignment="Left" Margin="376,8,0,0" VerticalAlignment="Top" Width="88"/>
<Label x:Name="label_Copy" Content="{Binding LbSentData}" d:Content="Sent Data" HorizontalAlignment="Left" Margin="480,8,0,0" VerticalAlignment="Top" Width="88"/>
<Label x:Name="label_Copy1" Content="{Binding LbButtonState}" d:Content="Button state" HorizontalAlignment="Left" Margin="238,56,0,0" VerticalAlignment="Top" Width="88"/>
<Label x:Name="buttonStateValue" Content="0" HorizontalAlignment="Left" Margin="238,82,0,0" VerticalAlignment="Top" RenderTransformOrigin="3.566,1.468" FontSize="10"/>
<CheckBox x:Name="debugMode" Content="{Binding LbDebugMode}" d:Content="Debug mode" HorizontalAlignment="Left" Margin="10,213,0,0" VerticalAlignment="Top" IsChecked="{Binding Path=IsDebugEnabled}" Click="debugMode_Click" Cursor="" Focusable="False" ToolTip="Show the touchpad with translucency and show inputs highlighted" Width="224"/>
<CheckBox x:Name="automaticTouchPanelPositioning" d:Content="Automatic touch panel positioning" HorizontalAlignment="Left" Margin="10,233,0,0" VerticalAlignment="Top" Height="17" Width="224" Content="{Binding LbAutoSensorPositioning}" IsChecked="{Binding Path=IsAutomaticPositioningEnabled}" Click="automaticTouchPanelPositioning_Click" ToolTip="{Binding LbAutoSensorPositioningTT}"/>
<CheckBox x:Name="automaticPortConnecting" d:Content="Automatic port connecting" HorizontalAlignment="Left" Margin="10,255,0,0" VerticalAlignment="Top" Height="17" Width="224" Content="{Binding LbAutoPortConnecting}" IsChecked="{Binding Path=IsAutomaticPortConnectingEnabled}" Click="automaticPortConnecting_Click" ToolTip="{Binding LbAutoPortConnectingTT}"/>
<Label x:Name="label1" Content="{Binding LbConnectionState}" d:Content="Connection state" HorizontalAlignment="Left" Margin="238,8,0,0" VerticalAlignment="Top"/>
<Label x:Name="connectionStateLabel" Content="{Binding LbConnectionStateNotConnected}" d:Content="Not connected" HorizontalAlignment="Left" Margin="238,31,0,0" VerticalAlignment="Top" FontSize="10"/>
<CheckBox x:Name="exitWithSinmai" Content="{Binding LbExitWithSinmai}" d:Content="Exit with Sinmai" HorizontalAlignment="Left" Margin="10,277,0,0" VerticalAlignment="Top" Height="17" Width="224" IsChecked="{Binding IsExitWithSinmaiEnabled}" Click="exitWithSinmai_Click" ToolTip="{Binding LbExitWithSinmaiTT}"/>
<CheckBox x:Name="emulateRingButtons" Content="{Binding LbEmulateRingButtons}" d:Content="Emulate ring buttons" HorizontalAlignment="Left" Margin="10,299,0,0" VerticalAlignment="Top" Height="17" Width="224" IsChecked="{Binding IsRingButtonEmulationEnabled}" ToolTip="{Binding LbEmulateRingButtonsTT}" Click="emulateRingButtons_Click"/>
<Button x:Name="buttonInstallComPort" Content="{Binding LbInstallComPort}" d:Content="Install COM port" HorizontalAlignment="Left" Margin="10,9,0,0" VerticalAlignment="Top" Click="buttonInstallComPort_Click" Width="130"/>
<Button x:Name="buttonUninstallComPorts" Content="{Binding LbUninstallComPort}" d:Content="Uninstall COM port" HorizontalAlignment="Left" Margin="10,34,0,0" VerticalAlignment="Top" Click="buttonUninstallComPorts_Click" Width="130"/>
<Button x:Name="buttonListComPorts" Content="{Binding LbListComPorts}" d:Content="List installed COM ports" HorizontalAlignment="Left" Margin="10,59,0,0" VerticalAlignment="Top" Click="buttonListComPorts_Click" Width="130"/>
<Separator HorizontalAlignment="Left" Margin="10,84,0,0" VerticalAlignment="Top" Height="6" Width="126"/>
<ComboBox x:Name="languageSelector" HorizontalAlignment="Left" Margin="10,186,0,0" VerticalAlignment="Top" Width="149" ItemsSource="{Binding SupportedLanguages}"
DisplayMemberPath="NativeName"
SelectedItem="{Binding SelectedLanguage, Mode=TwoWay}"/>
<Label x:Name="languageLabel" Content="{Binding LbLanguageDropdown}" d:Content="Language" HorizontalAlignment="Left" Margin="10,155,0,0" VerticalAlignment="Top" Width="126"/>
<Label x:Name="borderSettingLabel" Content="{Binding LbBorderSettings}" d:Content="Border Settings" HorizontalAlignment="Left" Margin="238,155,0,0" VerticalAlignment="Top" Width="126"/>
<StackPanel Margin="238,185,0,0" HorizontalAlignment="Left" Width="200" Height="91" VerticalAlignment="Top">
<RadioButton x:Name="rbBorderDisabled" Content="{Binding LbBorderDisabled}" d:Content="Disabled" GroupName="ColorOptions" Checked="RadioButton1_Checked"/>
<RadioButton x:Name="rbBorderSolidColour" Content="{Binding LbBorderSolid}" d:Content="Solid Colour (#AARRGGBB)" GroupName="ColorOptions" Checked="RadioButton2_Checked"/>
<TextBox x:Name="txtBorderHexColor" Text="{Binding Path=BorderColour}" IsEnabled="False" Margin="10,10,0,10" Width="127" Height="25" TextChanged="txtBorderHexColor_TextChanged"/>
Background="AliceBlue"
Title="MainWindow" Height="750" Width="500" WindowStartupLocation="CenterScreen">
<ScrollViewer>
<StackPanel MaxWidth="400" Margin="0,0,0,50">
<Menu>
<MenuItem Header="{Binding LbMenuCategoryHelp}" d:Header="_Help">
<MenuItem.Icon>
<ui:SymbolIcon Symbol="BookQuestionMark20" />
</MenuItem.Icon>
<MenuItem x:Name="instructionsLabel" Header="{Binding LbMenuItemSetup}" Click="instructionsLabel_Click"/>
</MenuItem>
</Menu>
<ui:Card Margin="0,0,0,10">
<StackPanel>
<ui:TextBlock d:Text="Connection State" Text="{Binding LbConnectionState}"/>
<Label x:Name="connectionStateLabel" Content="{Binding LbConnectionStateNotConnected}" d:Content="Not connected" FontSize="10"/>
<Separator Margin="0,6"/>
<Label x:Name="recievedDataLabel" Content="{Binding LbRecievedData}" d:Content="Recieved Data"/>
<ui:TextBox x:Name="RecievedLogBox"
IsReadOnly="True"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"
Focusable="False"
AcceptsReturn="True"
AcceptsTab="True"
TextWrapping="Wrap" Height="80">
<ui:TextBox.Icon>
<ui:SymbolIcon Symbol="ArrowDownLeft20" />
</ui:TextBox.Icon>
</ui:TextBox>
<RadioButton Name="rbBorderRainbow" Content="{Binding LbBorderRainbow}" d:Content="Rainbow" GroupName="ColorOptions" Checked="RadioButton3_Checked"/>
</StackPanel>
<Label x:Name="sentDataLabel" Content="{Binding LbSentData}" d:Content="Sent Data"/>
<ui:TextBox x:Name="SentLogBox"
IsReadOnly="True"
Focusable="False"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto"
AcceptsReturn="True"
AcceptsTab="True"
TextWrapping="Wrap" Height="80">
<ui:TextBox.Icon>
<ui:SymbolIcon Symbol="ArrowUpRight20" />
</ui:TextBox.Icon>
</ui:TextBox>
<Separator Margin="0,6"/>
<Label x:Name="buttonStateLabel" Content="{Binding LbButtonState}" d:Content="Button state" />
<Label x:Name="buttonStateValue" Content="0" />
</StackPanel>
</ui:Card>
<ui:CardExpander
CornerRadius="8"
Margin="0,0,0,10"
Header="{Binding LbComPort}"
d:Header="COM Port">
<ui:CardExpander.Icon>
<ui:SymbolIcon Symbol="PlugDisconnected20" />
</ui:CardExpander.Icon>
<StackPanel>
<ui:Button x:Name="ConnectToPortButton" Content="{Binding LbConnectToPort}" d:Content="Connect to port" Click="ConnectToPortButton_Click" />
<Separator Margin="0,6"/>
<ui:Button x:Name="buttonInstallComPort" Content="{Binding LbInstallComPort}" Margin="0,0,0,10" d:Content="Install COM port" Click="buttonInstallComPort_Click" />
<ui:Button x:Name="buttonUninstallComPorts" Content="{Binding LbUninstallComPort}" Margin="0,0,0,10" d:Content="Uninstall COM port" Click="buttonUninstallComPorts_Click" />
<ui:Button x:Name="buttonListComPorts" Content="{Binding LbListComPorts}" d:Content="List installed COM ports" Click="buttonListComPorts_Click" />
</StackPanel>
</ui:CardExpander>
<ui:CardExpander
CornerRadius="8"
Margin="0,0,0,10"
Header="{Binding LbBorderSettings}"
d:Header="Border settings">
<ui:CardExpander.Icon>
<ui:SymbolIcon Symbol="EditSettings20" />
</ui:CardExpander.Icon>
<StackPanel>
<RadioButton x:Name="rbBorderDisabled" Content="{Binding LbBorderDisabled}" d:Content="Disabled" GroupName="ColorOptions" Checked="RadioButton1_Checked"/>
<RadioButton x:Name="rbBorderSolidColour" Content="{Binding LbBorderSolid}" d:Content="Solid Colour" GroupName="ColorOptions" Checked="RadioButton2_Checked"/>
<ui:TextBox x:Name="txtBorderHexColor" Text="{Binding Path=BorderColour}" PlaceholderText="#AARRGGBB" IsEnabled="False" Margin="10,10,0,10" TextChanged="txtBorderHexColor_TextChanged"/>
<RadioButton Name="rbBorderRainbow" Content="{Binding LbBorderRainbow}" d:Content="Rainbow" GroupName="ColorOptions" Checked="RadioButton3_Checked"/>
</StackPanel>
</ui:CardExpander>
<ui:CardExpander
CornerRadius="8"
Header="{Binding LbSettings}"
d:Header="Settings">
<ui:CardExpander.Icon>
<ui:SymbolIcon Symbol="Settings20" />
</ui:CardExpander.Icon>
<StackPanel>
<Label x:Name="languageLabel" Content="{Binding LbLanguageDropdown}" d:Content="Language"/>
<ComboBox x:Name="languageSelector" ItemsSource="{Binding SupportedLanguages}" DisplayMemberPath="NativeName" SelectedItem="{Binding SelectedLanguage, Mode=TwoWay}"/>
<Separator Margin="0,6"/>
<CheckBox x:Name="debugMode" Content="{Binding LbDebugMode}" d:Content="Debug mode" IsChecked="{Binding Path=IsDebugEnabled}" Click="debugMode_Click" Cursor="" Focusable="False" ToolTip="Show the touchpad with translucency and show inputs highlighted" />
<CheckBox x:Name="automaticTouchPanelPositioning" d:Content="Automatic touch panel positioning" Content="{Binding LbAutoSensorPositioning}" IsChecked="{Binding Path=IsAutomaticPositioningEnabled}" Click="automaticTouchPanelPositioning_Click" ToolTip="{Binding LbAutoSensorPositioningTT}"/>
<CheckBox x:Name="automaticPortConnecting" d:Content="Automatic port connecting" Content="{Binding LbAutoPortConnecting}" IsChecked="{Binding Path=IsAutomaticPortConnectingEnabled}" Click="automaticPortConnecting_Click" ToolTip="{Binding LbAutoPortConnectingTT}"/>
<CheckBox x:Name="exitWithSinmai" Content="{Binding LbExitWithSinmai}" d:Content="Exit with Sinmai" IsChecked="{Binding IsExitWithSinmaiEnabled}" Click="exitWithSinmai_Click" ToolTip="{Binding LbExitWithSinmaiTT}"/>
<CheckBox x:Name="emulateRingButtons" Content="{Binding LbEmulateRingButtons}" d:Content="Emulate ring buttons" IsChecked="{Binding IsRingButtonEmulationEnabled}" ToolTip="{Binding LbEmulateRingButtonsTT}" Click="emulateRingButtons_Click"/>
</StackPanel>
</ui:CardExpander>
</StackPanel>
</ScrollViewer>
</Grid>
</StackPanel>
</Window>

View File

@ -8,84 +8,92 @@ namespace WpfMaiTouchEmulator;
public class MainWindowViewModel : INotifyPropertyChanged
{
// Language
public string LbAutoPortConnecting
public string? LbAutoPortConnecting
{
get; set;
}
public string LbAutoSensorPositioning
public string? LbAutoSensorPositioning
{
get; set;
}
public string LbButtonState
public string? LbButtonState
{
get; set;
}
public string LbConnectionState
public string? LbConnectionState
{
get; set;
}
public string LbConnectionStateNotConnected
public string? LbConnectionStateNotConnected
{
get; set;
}
public string LbConnectToPort
public string? LbConnectToPort
{
get; set;
}
public string LbDebugMode
public string? LbDebugMode
{
get; set;
}
public string LbExitWithSinmai
public string? LbExitWithSinmai
{
get; set;
}
public string LbEmulateRingButtons
public string? LbEmulateRingButtons
{
get; set;
}
public string LbInstallComPort
public string? LbInstallComPort
{
get; set;
}
public string LbLanguageDropdown
public string? LbLanguageDropdown
{
get; set;
}
public string LbBorderSettings
public string? LbBorderSettings
{
get; set;
}
public string LbBorderDisabled
public string? LbSettings
{
get; set;
}
public string LbBorderSolid
public string? LbComPort
{
get; set;
}
public string LbBorderRainbow
public string? LbBorderDisabled
{
get; set;
}
public string LbListComPorts
public string? LbBorderSolid
{
get; set;
}
public string LbReceivedData
public string? LbBorderRainbow
{
get; set;
}
public string LbRecievedData
public string? LbListComPorts
{
get; set;
}
public string? LbReceivedData
{
get; set;
}
public string? LbRecievedData
{
get;
private set;
}
public string LbSentData
public string? LbSentData
{
get; set;
}
public string LbUninstallComPort
public string? LbUninstallComPort
{
get; set;
}
@ -334,7 +342,9 @@ public class MainWindowViewModel : INotifyPropertyChanged
LbInstallComPort = resourceManager.GetString("lbInstallComPort");
LbLanguageDropdown = resourceManager.GetString("lbLanguageDropdown");
LbComPort = resourceManager.GetString("LbComPort");
LbBorderSettings = resourceManager.GetString("LbBorderSettings");
LbSettings = resourceManager.GetString("LbSettings");
LbBorderDisabled = resourceManager.GetString("LbBorderDisabled");
LbBorderSolid = resourceManager.GetString("LbBorderSolid");
LbBorderRainbow = resourceManager.GetString("LbBorderRainbow");

View File

@ -124,7 +124,7 @@ namespace WpfMaiTouchEmulator.Resources {
}
/// <summary>
/// Looks up a localized string similar to Solid (#AARRGGBB).
/// Looks up a localized string similar to Solid.
/// </summary>
internal static string LbBorderSolid {
get {
@ -141,6 +141,15 @@ namespace WpfMaiTouchEmulator.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to COM Port.
/// </summary>
internal static string LbComPort {
get {
return ResourceManager.GetString("LbComPort", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Connection state.
/// </summary>
@ -276,6 +285,15 @@ namespace WpfMaiTouchEmulator.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Settings.
/// </summary>
internal static string LbSettings {
get {
return ResourceManager.GetString("LbSettings", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Drag.
/// </summary>

View File

@ -139,11 +139,14 @@
<value>境界線設定</value>
</data>
<data name="LbBorderSolid" xml:space="preserve">
<value>単色#AARRGGBB</value>
<value>単色</value>
</data>
<data name="lbButtonState" xml:space="preserve">
<value>ボタン状態</value>
</data>
<data name="LbComPort" xml:space="preserve">
<value>COMポート</value>
</data>
<data name="lbConnectionState" xml:space="preserve">
<value>接続状態</value>
</data>
@ -189,6 +192,9 @@
<data name="lbSentData" xml:space="preserve">
<value>送信データ</value>
</data>
<data name="LbSettings" xml:space="preserve">
<value>設定</value>
</data>
<data name="LbTouchPanelDrag" xml:space="preserve">
<value>ドラッグ</value>
</data>

View File

@ -139,11 +139,14 @@
<value>Border Settings</value>
</data>
<data name="LbBorderSolid" xml:space="preserve">
<value>Solid (#AARRGGBB)</value>
<value>Solid</value>
</data>
<data name="lbButtonState" xml:space="preserve">
<value>Button State</value>
</data>
<data name="LbComPort" xml:space="preserve">
<value>COM Port</value>
</data>
<data name="lbConnectionState" xml:space="preserve">
<value>Connection state</value>
</data>
@ -189,6 +192,9 @@
<data name="lbSentData" xml:space="preserve">
<value>Sent</value>
</data>
<data name="LbSettings" xml:space="preserve">
<value>Settings</value>
</data>
<data name="LbTouchPanelDrag" xml:space="preserve">
<value>Drag</value>
</data>

View File

@ -139,11 +139,14 @@
<value>境界線設定</value>
</data>
<data name="LbBorderSolid" xml:space="preserve">
<value>纯色#AARRGGBB</value>
<value>纯色</value>
</data>
<data name="lbButtonState" xml:space="preserve">
<value>按钮状态</value>
</data>
<data name="LbComPort" xml:space="preserve">
<value>COM端口</value>
</data>
<data name="lbConnectionState" xml:space="preserve">
<value>连接状态</value>
</data>
@ -189,6 +192,9 @@
<data name="lbSentData" xml:space="preserve">
<value>已发送数据</value>
</data>
<data name="LbSettings" xml:space="preserve">
<value>设置</value>
</data>
<data name="LbTouchPanelDrag" xml:space="preserve">
<value>拖动</value>
</data>

View File

@ -21,6 +21,7 @@
<ItemGroup>
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
<PackageReference Include="System.IO.Ports" Version="9.0.0" />
<PackageReference Include="WPF-UI" Version="3.0.5" />
</ItemGroup>
<ItemGroup>