1.1.3 -> 1.1.4 第67次更新

This commit is contained in:
Space Time 2024-12-16 18:12:21 +08:00
parent 5e9ab2d928
commit 32871f580a
9 changed files with 183 additions and 308 deletions

View File

@ -9,7 +9,31 @@
"MainMultilangConst.resx": [ "MainConst.cs" ], "MainMultilangConst.resx": [ "MainConst.cs" ],
"MainMultilangConst.zh.resx": [ "MainConst.cs" ], "MainMultilangConst.zh.resx": [ "MainConst.cs" ],
"SettingsMultilangConst.resx": [ "SettingsConst.cs" ], "SettingsMultilangConst.resx": [ "SettingsConst.cs" ],
"SettingsMultilangConst.zh.resx": [ "SettingsConst.cs" ] "SettingsMultilangConst.zh.resx": [ "SettingsConst.cs" ],
"AboutAccentButtonForegroundConv.cs": [ "AboutConv.cs" ],
"AboutVersionButtonContentConv.cs": [ "AboutConv.cs" ],
"MainAdminControlVisibilityConv.cs": [ "MainConv.cs" ],
"MainMihomoButtonContentConv.cs": [ "MainConv.cs" ],
"MainMihomoButtonToolTipConv.cs": [ "MainConv.cs" ],
"MainNginxButtonContentConv.cs": [ "MainConv.cs" ],
"MainNginxButtonToolTipConv.cs": [ "MainConv.cs" ],
"MainNoClickButtonContentConv.cs": [ "MainConv.cs" ],
"MainNoClickButtonToolTipConv.cs": [ "MainConv.cs" ],
"MainProxyButtonIsEnabledConv.cs": [ "MainConv.cs" ],
"MainProxyColumnWidthConv.cs": [ "MainConv.cs" ],
"MainSettingsBoxHintConv.cs": [ "MainConv.cs" ],
"MainSettingsBoxTextConv.cs": [ "MainConv.cs" ],
"MainSettingsBoxToolTipConv.cs": [ "MainConv.cs" ],
"MainSettingsFunctionButtonContentConv.cs": [ "MainConv.cs" ],
"MainSettingsModeButtonContentConv.cs": [ "MainConv.cs" ],
"MainStartButtonIsEnabledConv.cs": [ "MainConv.cs" ],
"MainUpdateHostButtonContentConv.cs": [ "MainConv.cs" ],
"MainUpdateHostButtonIsEnabledConv.cs": [ "MainConv.cs" ],
"MainWinWidthConv.cs": [ "MainConv.cs" ],
"SettingsLangsButtonContentConv.cs": [ "SettingsConv.cs" ],
"SettingsThemesButtonContentConv.cs": [ "SettingsConv.cs" ],
"SettingsWeightsButtonContentConv.cs": [ "SettingsConv.cs" ]
} }
} }
} }

7
Convs/AboutConv.cs Normal file
View File

@ -0,0 +1,7 @@
namespace Sheas_Cealer.Convs;
internal static class AboutConv
{
public static AboutAccentButtonForegroundConv AboutAccentButtonForegroundConv => new();
public static AboutVersionButtonContentConv AboutVersionButtonContentConv => new();
}

23
Convs/MainConv.cs Normal file
View File

@ -0,0 +1,23 @@
namespace Sheas_Cealer.Convs;
internal static class MainConv
{
public static MainAdminControlVisibilityConv MainAdminControlVisibilityConv => new();
public static MainMihomoButtonContentConv MainMihomoButtonContentConv => new();
public static MainMihomoButtonToolTipConv MainMihomoButtonToolTipConv => new();
public static MainNginxButtonContentConv MainNginxButtonContentConv => new();
public static MainNginxButtonToolTipConv MainNginxButtonToolTipConv => new();
public static MainNoClickButtonContentConv MainNoClickButtonContentConv => new();
public static MainNoClickButtonToolTipConv MainNoClickButtonToolTipConv => new();
public static MainProxyButtonIsEnabledConv MainProxyButtonIsEnabledConv => new();
public static MainProxyColumnWidthConv MainProxyColumnWidthConv => new();
public static MainSettingsBoxHintConv MainSettingsBoxHintConv => new();
public static MainSettingsBoxTextConv MainSettingsBoxTextConv => new();
public static MainSettingsBoxToolTipConv MainSettingsBoxToolTipConv => new();
public static MainSettingsFunctionButtonContentConv MainSettingsFunctionButtonContentConv => new();
public static MainSettingsModeButtonContentConv MainSettingsModeButtonContentConv => new();
public static MainStartButtonIsEnabledConv MainStartButtonIsEnabledConv => new();
public static MainUpdateHostButtonContentConv MainUpdateHostButtonContentConv => new();
public static MainUpdateHostButtonIsEnabledConv MainUpdateHostButtonIsEnabledConv => new();
public static MainWinWidthConv MainWinWidthConv => new();
}

8
Convs/SettingsConv.cs Normal file
View File

@ -0,0 +1,8 @@
namespace Sheas_Cealer.Convs;
internal static class SettingsConv
{
public static SettingsLangsButtonContentConv SettingsLangsButtonContentConv => new();
public static SettingsThemesButtonContentConv SettingsThemesButtonContentConv => new();
public static SettingsWeightsButtonContentConv SettingsWeightsButtonContentConv => new();
}

View File

@ -39,5 +39,5 @@ internal partial class GlobalPres : ObservableObject
} }
[ObservableProperty] [ObservableProperty]
private static Color accentForegroundColor = (Color)ColorConverter.ConvertFromString("#2196f3"); private static Color accentForegroundColor = (Color)ColorConverter.ConvertFromString("#2196F3");
} }

View File

@ -23,7 +23,7 @@ internal static class ForegroundGenerator
return (blackContrast >= 5.5 && whiteContrast >= 2.5 ? null : return (blackContrast >= 5.5 && whiteContrast >= 2.5 ? null :
blackContrast >= whiteContrast ? Colors.Black : Colors.White, blackContrast >= whiteContrast ? Colors.Black : Colors.White,
(Color)ColorConverter.ConvertFromString(blueContrast >= redContrast ? "#2196f3" : "#f44336")); (Color)ColorConverter.ConvertFromString(blueContrast >= redContrast ? "#2196F3" : "#F44336"));
} }
private static double GammaCorrect(double component) => component <= 0.03928 ? component / 12.92 : Math.Pow((component + 0.055) / 1.055, 2.4); private static double GammaCorrect(double component) => component <= 0.03928 ? component / 12.92 : Math.Pow((component + 0.055) / 1.055, 2.4);

View File

@ -7,9 +7,10 @@
xmlns:convs="clr-namespace:Sheas_Cealer.Convs" xmlns:convs="clr-namespace:Sheas_Cealer.Convs"
xmlns:preses="clr-namespace:Sheas_Cealer.Preses" xmlns:preses="clr-namespace:Sheas_Cealer.Preses"
mc:Ignorable="d" mc:Ignorable="d"
WindowStartupLocation="CenterScreen" ResizeMode="NoResize" SizeToContent="Height" Width="500"
d:DataContext="{d:DesignInstance preses:AboutPres}" d:DataContext="{d:DesignInstance preses:AboutPres}"
Style="{DynamicResource CommonWindow}" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" SizeToContent="Height" Width="500" Style="{DynamicResource CommonWindow}"
Loaded="AboutWin_Loaded" KeyDown="AboutWin_KeyDown"> Loaded="AboutWin_Loaded" KeyDown="AboutWin_KeyDown">
<Grid Margin="5"> <Grid Margin="5">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="*" /> <RowDefinition Height="*" />
@ -22,32 +23,18 @@
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="5" d:Foreground="#2196F3" Content="{Binding Source={x:Static consts:AboutConst.DeveloperButtonContent}}" ToolTip="{Binding Source={x:Static consts:AboutConst.DeveloperButtonUrl}}" <Button Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="5" d:Foreground="#2196F3"
Click="AboutButton_Click"> Foreground="{Binding AccentForegroundColor, Converter={x:Static convs:AboutConv.AboutAccentButtonForegroundConv}}"
<Button.Foreground> Content="{x:Static consts:AboutConst.DeveloperButtonContent}"
<Binding Path="AccentForegroundColor"> ToolTip="{x:Static consts:AboutConst.DeveloperButtonUrl}"
<Binding.Converter> Click="AboutButton_Click" />
<convs:AboutAccentButtonForegroundConv />
</Binding.Converter>
</Binding>
</Button.Foreground>
</Button>
<Button x:Name="VersionButton" <Button x:Name="VersionButton"
Grid.Row="1" Grid.Column="0" Margin="5" d:Foreground="#2196F3" d:Content="# # #: #.#.#" ToolTip="{Binding Source={x:Static consts:AboutConst.VersionButtonUrl}}" Grid.Row="1" Grid.Column="0" Margin="5" d:Foreground="#2196F3" d:Content="# # #: #.#.#"
Foreground="{Binding AccentForegroundColor, Converter={x:Static convs:AboutConv.AboutAccentButtonForegroundConv}}"
ToolTip="{x:Static consts:AboutConst.VersionButtonUrl}"
Click="AboutButton_Click"> Click="AboutButton_Click">
<Button.Foreground>
<Binding Path="AccentForegroundColor">
<Binding.Converter>
<convs:AboutAccentButtonForegroundConv />
</Binding.Converter>
</Binding>
</Button.Foreground>
<Button.Content> <Button.Content>
<MultiBinding> <MultiBinding Converter="{x:Static convs:AboutConv.AboutVersionButtonContentConv}">
<MultiBinding.Converter>
<convs:AboutVersionButtonContentConv />
</MultiBinding.Converter>
<Binding Source="{x:Static consts:AboutConst.VersionButtonLabelContent}" /> <Binding Source="{x:Static consts:AboutConst.VersionButtonLabelContent}" />
<Binding Source="{x:Static consts:AboutConst.VersionButtonVersionContent}" /> <Binding Source="{x:Static consts:AboutConst.VersionButtonVersionContent}" />
<Binding Path="IsSheasCealerUtd" /> <Binding Path="IsSheasCealerUtd" />
@ -55,17 +42,27 @@
</Button.Content> </Button.Content>
</Button> </Button>
<Button x:Name="EmailButton" <Button x:Name="EmailButton"
Grid.Row="1" Grid.Column="1" Margin="5" Content="{Binding Source={x:Static consts:AboutConst.EmailButtonContent}}" ToolTip="{Binding Source={x:Static consts:AboutConst.EmailButtonUrl}}" Grid.Row="1" Grid.Column="1" Margin="5"
Content="{x:Static consts:AboutConst.EmailButtonContent}"
ToolTip="{x:Static consts:AboutConst.EmailButtonUrl}"
Click="AboutButton_Click" /> Click="AboutButton_Click" />
<Button Grid.Row="0" Grid.Column="2" Margin="5" Content="{Binding Source={x:Static consts:AboutConst.DocumentationButtonContent}}" ToolTip="{Binding Source={x:Static consts:AboutConst.DocumentationButtonUrl}}" <Button Grid.Row="0" Grid.Column="2" Margin="5"
Content="{x:Static consts:AboutConst.DocumentationButtonContent}"
ToolTip="{x:Static consts:AboutConst.DocumentationButtonUrl}"
Click="AboutButton_Click" /> Click="AboutButton_Click" />
<Button Grid.Row="1" Grid.Column="2" Margin="5" Content="{Binding Source={x:Static consts:AboutConst.RepositoryButtonContent}}" ToolTip="{Binding Source={x:Static consts:AboutConst.RepositoryButtonUrl}}" <Button Grid.Row="1" Grid.Column="2" Margin="5"
Content="{x:Static consts:AboutConst.RepositoryButtonContent}"
ToolTip="{x:Static consts:AboutConst.RepositoryButtonUrl}"
Click="AboutButton_Click" /> Click="AboutButton_Click" />
<Button Grid.Row="0" Grid.Column="3" Margin="5" Content="{Binding Source={x:Static consts:AboutConst.PolicyButtonContent}}" ToolTip="{Binding Source={x:Static consts:AboutConst.PolicyButtonUrl}}" <Button Grid.Row="0" Grid.Column="3" Margin="5"
Content="{x:Static consts:AboutConst.PolicyButtonContent}"
ToolTip="{x:Static consts:AboutConst.PolicyButtonUrl}"
Click="AboutButton_Click" /> Click="AboutButton_Click" />
<Button Grid.Row="1" Grid.Column="3" Margin="5" Content="{Binding Source={x:Static consts:AboutConst.AgreementButtonContent}}" ToolTip="{Binding Source={x:Static consts:AboutConst.AgreementButtonUrl}}" <Button Grid.Row="1" Grid.Column="3" Margin="5"
Content="{x:Static consts:AboutConst.AgreementButtonContent}"
ToolTip="{x:Static consts:AboutConst.AgreementButtonUrl}"
Click="AboutButton_Click" /> Click="AboutButton_Click" />
</Grid> </Grid>
</Window> </Window>

View File

@ -8,17 +8,12 @@
xmlns:convs="clr-namespace:Sheas_Cealer.Convs" xmlns:convs="clr-namespace:Sheas_Cealer.Convs"
xmlns:preses="clr-namespace:Sheas_Cealer.Preses" xmlns:preses="clr-namespace:Sheas_Cealer.Preses"
mc:Ignorable="d" mc:Ignorable="d"
d:DataContext="{d:DesignInstance preses:MainPres}" AllowDrop="True" AllowDrop="True"
Style="{DynamicResource CommonWindow}" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" SizeToContent="Height" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" SizeToContent="Height"
d:DataContext="{d:DesignInstance preses:MainPres}"
Style="{DynamicResource CommonWindow}"
Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainWinWidthConv}}"
Loaded="MainWin_Loaded" Closing="MainWin_Closing" DragEnter="MainWin_DragEnter" Drop="MainWin_Drop" KeyDown="MainWin_KeyDown"> Loaded="MainWin_Loaded" Closing="MainWin_Closing" DragEnter="MainWin_DragEnter" Drop="MainWin_Drop" KeyDown="MainWin_KeyDown">
<Window.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainWinWidthConv />
</Binding.Converter>
</Binding>
</Window.Width>
<Grid Margin="5"> <Grid Margin="5">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
@ -35,326 +30,165 @@
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Column="0" Margin="5" d:Content="# # # #" ToolTip="{Binding Source={x:Static consts:MainConst.SettingsModeButtonToolTip}}" <Button Grid.Column="0" Margin="5" d:Content="# # # #"
Click="SettingsModeButton_Click"> Content="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsModeButtonContentConv}}"
<Button.Content> ToolTip="{x:Static consts:MainConst.SettingsModeButtonToolTip}"
<Binding Path="SettingsMode"> Click="SettingsModeButton_Click" />
<Binding.Converter>
<convs:MainSettingsModeButtonContentConv />
</Binding.Converter>
</Binding>
</Button.Content>
</Button>
<TextBox x:Name="SettingsBox" <TextBox x:Name="SettingsBox"
Grid.Column="1" Margin="5" VerticalContentAlignment="Center" md:HintAssist.IsFloating="True" Grid.Column="1" Margin="5" VerticalContentAlignment="Center" md:HintAssist.IsFloating="True"
md:HintAssist.Hint="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsBoxHintConv}}"
ToolTip="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsBoxToolTipConv}}"
TextChanged="SettingsBox_TextChanged" PreviewDragOver="MainWin_DragEnter"> TextChanged="SettingsBox_TextChanged" PreviewDragOver="MainWin_DragEnter">
<TextBox.Text> <TextBox.Text>
<MultiBinding Mode="OneWay" UpdateSourceTrigger="PropertyChanged"> <MultiBinding Mode="OneWay" UpdateSourceTrigger="PropertyChanged"
<MultiBinding.Converter> Converter="{x:Static convs:MainConv.MainSettingsBoxTextConv}">
<convs:MainSettingsBoxTextConv />
</MultiBinding.Converter>
<Binding Path="SettingsMode" /> <Binding Path="SettingsMode" />
<Binding Path="BrowserPath" /> <Binding Path="BrowserPath" />
<Binding Path="UpstreamUrl" /> <Binding Path="UpstreamUrl" />
<Binding Path="ExtraArgs" /> <Binding Path="ExtraArgs" />
</MultiBinding> </MultiBinding>
</TextBox.Text> </TextBox.Text>
<TextBox.ToolTip>
<Binding Path="SettingsMode">
<Binding.Converter>
<convs:MainSettingsBoxToolTipConv />
</Binding.Converter>
</Binding>
</TextBox.ToolTip>
<md:HintAssist.Hint>
<Binding Path="SettingsMode">
<Binding.Converter>
<convs:MainSettingsBoxHintConv />
</Binding.Converter>
</Binding>
</md:HintAssist.Hint>
</TextBox> </TextBox>
<Button Grid.Column="2" Margin="5" d:Content="# # # #" ToolTip="{Binding Source={x:Static consts:MainConst.SettingsFunctionButtonToolTip}}" <Button Grid.Column="2" Margin="5" d:Content="# # # #"
Click="SettingsFunctionButton_Click"> Content="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsFunctionButtonContentConv}}"
<Button.Content> ToolTip="{x:Static consts:MainConst.SettingsFunctionButtonToolTip}"
<Binding Path="SettingsMode"> Click="SettingsFunctionButton_Click" />
<Binding.Converter>
<convs:MainSettingsFunctionButtonContentConv />
</Binding.Converter>
</Binding>
</Button.Content>
</Button>
</Grid> </Grid>
<Grid Grid.Row="1"> <Grid Grid.Row="1">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" /> <ColumnDefinition Width="2*" />
<ColumnDefinition> <ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<ColumnDefinition.Width> <ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
<ColumnDefinition>
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button IsDefault="True" <Button IsDefault="True"
Grid.Column="0" Margin="5" Content="{Binding Source={x:Static consts:MainConst.StartButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.StartButtonToolTip}}" Grid.Column="0" Margin="5"
Click="StartButton_Click" PreviewMouseDown="StartButton_PreviewMouseDown"> Content="{x:Static consts:MainConst.StartButtonContent}"
ToolTip="{x:Static consts:MainConst.StartButtonToolTip}"
Click="StartButton_Click" PreviewMouseDown="StartButton_PreviewMouseDown">
<Button.IsEnabled> <Button.IsEnabled>
<MultiBinding> <MultiBinding Converter="{x:Static convs:MainConv.MainStartButtonIsEnabledConv}">
<MultiBinding.Converter>
<convs:MainStartButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="BrowserPath" /> <Binding Path="BrowserPath" />
<Binding Path="ExtraArgs" /> <Binding Path="ExtraArgs" />
</MultiBinding> </MultiBinding>
</Button.IsEnabled> </Button.IsEnabled>
</Button> </Button>
<Button Grid.Column="1" Margin="5" d:Content="# # # #" <Button Grid.Column="1" Margin="5" d:Content="# # # #"
Click="NginxButton_Click" PreviewMouseDown="NginxButton_PreviewMouseDown"> Visibility="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
<Button.Visibility> ToolTip="{Binding IsNginxRunning, Converter={x:Static convs:MainConv.MainNginxButtonToolTipConv}}"
<Binding Source="{x:Static consts:MainConst.IsAdmin}"> Click="NginxButton_Click" PreviewMouseDown="NginxButton_PreviewMouseDown">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
<Button.IsEnabled> <Button.IsEnabled>
<MultiBinding> <MultiBinding Converter="{x:Static convs:MainConv.MainProxyButtonIsEnabledConv}">
<MultiBinding.Converter>
<convs:MainProxyButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="IsNginxExist" /> <Binding Path="IsNginxExist" />
<Binding Path="IsNginxIniting" /> <Binding Path="IsNginxIniting" />
</MultiBinding> </MultiBinding>
</Button.IsEnabled> </Button.IsEnabled>
<Button.Content> <Button.Content>
<MultiBinding> <MultiBinding Converter="{x:Static convs:MainConv.MainNginxButtonContentConv}">
<MultiBinding.Converter>
<convs:MainNginxButtonContentConv />
</MultiBinding.Converter>
<Binding Path="IsNginxRunning" /> <Binding Path="IsNginxRunning" />
<Binding Path="IsNginxIniting" /> <Binding Path="IsNginxIniting" />
</MultiBinding> </MultiBinding>
</Button.Content> </Button.Content>
<Button.ToolTip>
<Binding Path="IsNginxRunning">
<Binding.Converter>
<convs:MainNginxButtonToolTipConv />
</Binding.Converter>
</Binding>
</Button.ToolTip>
</Button> </Button>
<Button Grid.Column="2" Margin="5" d:Content="# # # #" <Button Grid.Column="2" Margin="5" d:Content="# # # #"
Click="MihomoButton_Click" PreviewMouseDown="MihomoButton_PreviewMouseDown"> Visibility="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
<Button.Visibility> ToolTip="{Binding IsMihomoRunning, Converter={x:Static convs:MainConv.MainMihomoButtonToolTipConv}}"
<Binding Source="{x:Static consts:MainConst.IsAdmin}"> Click="MihomoButton_Click" PreviewMouseDown="MihomoButton_PreviewMouseDown">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
<Button.IsEnabled> <Button.IsEnabled>
<MultiBinding> <MultiBinding Converter="{x:Static convs:MainConv.MainProxyButtonIsEnabledConv}">
<MultiBinding.Converter>
<convs:MainProxyButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="IsMihomoExist" /> <Binding Path="IsMihomoExist" />
<Binding Path="IsMihomoIniting" /> <Binding Path="IsMihomoIniting" />
</MultiBinding> </MultiBinding>
</Button.IsEnabled> </Button.IsEnabled>
<Button.Content> <Button.Content>
<MultiBinding> <MultiBinding Converter="{x:Static convs:MainConv.MainMihomoButtonContentConv}">
<MultiBinding.Converter>
<convs:MainMihomoButtonContentConv />
</MultiBinding.Converter>
<Binding Path="IsMihomoRunning" /> <Binding Path="IsMihomoRunning" />
<Binding Path="IsMihomoIniting" /> <Binding Path="IsMihomoIniting" />
</MultiBinding> </MultiBinding>
</Button.Content> </Button.Content>
<Button.ToolTip>
<Binding Path="IsMihomoRunning">
<Binding.Converter>
<convs:MainMihomoButtonToolTipConv />
</Binding.Converter>
</Binding>
</Button.ToolTip>
</Button> </Button>
</Grid> </Grid>
<Grid Grid.Row="2"> <Grid Grid.Row="2">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition> <ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<ColumnDefinition.Width> <ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
<ColumnDefinition>
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button x:Name="EditLocalHostButton" <Button x:Name="EditLocalHostButton"
Grid.Column="0" Margin="5" Content="{Binding Source={x:Static consts:MainConst.EditLocalHostButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.EditLocalHostButtonToolTip}}" Grid.Column="0" Margin="5"
Content="{x:Static consts:MainConst.EditLocalHostButtonContent}"
ToolTip="{x:Static consts:MainConst.EditLocalHostButtonToolTip}"
Click="EditHostButton_Click" /> Click="EditHostButton_Click" />
<Button Grid.Column="1" Margin="5" Content="{Binding Source={x:Static consts:MainConst.EditUpstreamHostButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.EditUpstreamHostButtonToolTip}}" <Button Grid.Column="1" Margin="5"
Content="{x:Static consts:MainConst.EditUpstreamHostButtonContent}"
ToolTip="{x:Static consts:MainConst.EditUpstreamHostButtonToolTip}"
Click="EditHostButton_Click" /> Click="EditHostButton_Click" />
<Button x:Name="EditNginxConfButton" <Button x:Name="EditNginxConfButton"
Grid.Column="2" Margin="5" Content="{Binding Source={x:Static consts:MainConst.EditNginxConfButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.EditNginxConfButtonToolTip}}" Grid.Column="2" Margin="5"
Visibility="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
Content="{x:Static consts:MainConst.EditNginxConfButtonContent}"
ToolTip="{x:Static consts:MainConst.EditNginxConfButtonToolTip}"
Click="EditConfButton_Click"> Click="EditConfButton_Click">
<Button.IsEnabled> <Button.IsEnabled>
<MultiBinding> <MultiBinding Converter="{x:Static convs:MainConv.MainProxyButtonIsEnabledConv}">
<MultiBinding.Converter>
<convs:MainProxyButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="IsNginxExist" /> <Binding Path="IsNginxExist" />
<Binding Path="IsNginxIniting" /> <Binding Path="IsNginxIniting" />
</MultiBinding> </MultiBinding>
</Button.IsEnabled> </Button.IsEnabled>
<Button.Visibility>
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
</Button> </Button>
<Button Grid.Column="3" Margin="5" Content="{Binding Source={x:Static consts:MainConst.EditMihomoConfButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.EditMihomoConfButtonToolTip}}" <Button Grid.Column="3" Margin="5"
Visibility="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
Content="{x:Static consts:MainConst.EditMihomoConfButtonContent}"
ToolTip="{x:Static consts:MainConst.EditMihomoConfButtonToolTip}"
Click="EditConfButton_Click"> Click="EditConfButton_Click">
<Button.IsEnabled> <Button.IsEnabled>
<MultiBinding> <MultiBinding Converter="{x:Static convs:MainConv.MainProxyButtonIsEnabledConv}">
<MultiBinding.Converter>
<convs:MainProxyButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="IsMihomoExist" /> <Binding Path="IsMihomoExist" />
<Binding Path="IsMihomoIniting" /> <Binding Path="IsMihomoIniting" />
</MultiBinding> </MultiBinding>
</Button.IsEnabled> </Button.IsEnabled>
<Button.Visibility>
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
</Button> </Button>
</Grid> </Grid>
<Grid Grid.Row="3"> <Grid Grid.Row="3">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition> <ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Column="0" Margin="5" d:Content="# # # # # #" ToolTip="{Binding Source={x:Static consts:MainConst.UpdateUpstreamHostButtonToolTip}}" <Button Grid.Column="0" Margin="5" d:Content="# # # # # #"
Click="UpdateUpstreamHostButton_Click"> IsEnabled="{Binding UpstreamUrl, Converter={x:Static convs:MainConv.MainUpdateHostButtonIsEnabledConv}}"
<Button.IsEnabled> Content="{Binding IsUpstreamHostUtd, Converter={x:Static convs:MainConv.MainUpdateHostButtonContentConv}}"
<Binding Path="UpstreamUrl"> ToolTip="{x:Static consts:MainConst.UpdateUpstreamHostButtonToolTip}"
<Binding.Converter> Click="UpdateUpstreamHostButton_Click" />
<convs:MainUpdateHostButtonIsEnabledConv />
</Binding.Converter>
</Binding>
</Button.IsEnabled>
<Button.Content>
<Binding Path="IsUpstreamHostUtd">
<Binding.Converter>
<convs:MainUpdateHostButtonContentConv />
</Binding.Converter>
</Binding>
</Button.Content>
</Button>
<Button x:Name="EditHostsConfButton" <Button x:Name="EditHostsConfButton"
Grid.Column="1" Margin="5" Content="{Binding Source={x:Static consts:MainConst.EditHostsConfButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.EditHostsConfButtonToolTip}}" Grid.Column="1" Margin="5"
Click="EditConfButton_Click"> Visibility="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
<Button.Visibility> Content="{x:Static consts:MainConst.EditHostsConfButtonContent}"
<Binding Source="{x:Static consts:MainConst.IsAdmin}"> ToolTip="{x:Static consts:MainConst.EditHostsConfButtonToolTip}"
<Binding.Converter> Click="EditConfButton_Click" />
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
</Button>
</Grid> </Grid>
<Grid Grid.Row="4"> <Grid Grid.Row="4">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition> <ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Column="0" Margin="5" Content="{Binding Source={x:Static consts:MainConst.SettingsButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.SettingsButtonToolTip}}" <Button Grid.Column="0" Margin="5"
Content="{x:Static consts:MainConst.SettingsButtonContent}"
ToolTip="{x:Static consts:MainConst.SettingsButtonToolTip}"
Click="SettingsButton_Click" /> Click="SettingsButton_Click" />
<Button Focusable="False" <Button Focusable="False"
Grid.Column="1" Margin="5" d:Content="# # # #" Grid.Column="1" Margin="5" d:Content="# # # #"
Click="NoClickButton_Click"> Visibility="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
<Button.Visibility> Content="{Binding IsFlashing, Converter={x:Static convs:MainConv.MainNoClickButtonContentConv}}"
<Binding Source="{x:Static consts:MainConst.IsAdmin}"> ToolTip="{Binding IsFlashing, Converter={x:Static convs:MainConv.MainNoClickButtonToolTipConv}}"
<Binding.Converter> Click="NoClickButton_Click" />
<convs:MainAdminControlVisibilityConv /> <Button Grid.Column="2" Margin="5"
</Binding.Converter> Content="{x:Static consts:MainConst.AboutButtonContent}"
</Binding> ToolTip="{x:Static consts:MainConst.AboutButtonToolTip}"
</Button.Visibility>
<Button.Content>
<Binding Path="IsFlashing">
<Binding.Converter>
<convs:MainNoClickButtonContentConv />
</Binding.Converter>
</Binding>
</Button.Content>
<Button.ToolTip>
<Binding Path="IsFlashing">
<Binding.Converter>
<convs:MainNoClickButtonToolTipConv />
</Binding.Converter>
</Binding>
</Button.ToolTip>
</Button>
<Button Grid.Column="2" Margin="5" Content="{Binding Source={x:Static consts:MainConst.AboutButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.AboutButtonToolTip}}"
Click="AboutButton_Click" /> Click="AboutButton_Click" />
</Grid> </Grid>
</Grid> </Grid>

View File

@ -7,8 +7,9 @@
xmlns:convs="clr-namespace:Sheas_Cealer.Convs" xmlns:convs="clr-namespace:Sheas_Cealer.Convs"
xmlns:preses="clr-namespace:Sheas_Cealer.Preses" xmlns:preses="clr-namespace:Sheas_Cealer.Preses"
mc:Ignorable="d" mc:Ignorable="d"
WindowStartupLocation="CenterScreen" ResizeMode="NoResize" SizeToContent="Height" Width="500"
d:DataContext="{d:DesignInstance preses:SettingsPres}" d:DataContext="{d:DesignInstance preses:SettingsPres}"
Style="{DynamicResource CommonWindow}" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" SizeToContent="Height" Width="500" Style="{DynamicResource CommonWindow}"
KeyDown="SettingsWin_KeyDown"> KeyDown="SettingsWin_KeyDown">
<Grid Margin="5"> <Grid Margin="5">
<Grid.RowDefinitions> <Grid.RowDefinitions>
@ -20,40 +21,21 @@
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Margin="5" d:Content="# # # #" ToolTip="{Binding Source={x:Static consts:SettingsConst.ThemesButtonToolTip}}" <Button Grid.Row="0" Grid.Column="0" Margin="5" d:Content="# # # #"
Click="ThemesButton_Click"> Content="{Binding IsLightTheme, Converter={x:Static convs:SettingsConv.SettingsThemesButtonContentConv}}"
<Button.Content> ToolTip="{x:Static consts:SettingsConst.ThemesButtonToolTip}"
<Binding Path="IsLightTheme"> Click="ThemesButton_Click" />
<Binding.Converter> <Button Grid.Row="0" Grid.Column="1" Margin="5" d:Content="# # # #"
<convs:SettingsThemesButtonContentConv /> Content="{Binding IsEnglishLang, Converter={x:Static convs:SettingsConv.SettingsLangsButtonContentConv}}"
</Binding.Converter> ToolTip="{x:Static consts:SettingsConst.LangsButtonToolTip}"
</Binding> Click="LangsButton_Click" />
</Button.Content> <Button Grid.Row="1" Grid.Column="0" Margin="5"
</Button> Content="{x:Static consts:SettingsConst.ColorsButtonContent}"
ToolTip="{x:Static consts:SettingsConst.ColorsButtonToolTip}"
<Button Grid.Row="0" Grid.Column="1" Margin="5" d:Content="# # # #" ToolTip="{Binding Source={x:Static consts:SettingsConst.LangsButtonToolTip}}"
Click="LangsButton_Click">
<Button.Content>
<Binding Path="IsEnglishLang">
<Binding.Converter>
<convs:SettingsLangsButtonContentConv />
</Binding.Converter>
</Binding>
</Button.Content>
</Button>
<Button Grid.Row="1" Grid.Column="0" Margin="5" Content="{Binding Source={x:Static consts:SettingsConst.ColorsButtonContent}}" ToolTip="{Binding Source={x:Static consts:SettingsConst.ColorsButtonToolTip}}"
Click="ColorsButton_Click" /> Click="ColorsButton_Click" />
<Button Grid.Row="1" Grid.Column="1" Margin="5" d:Content="# # # #"
<Button Grid.Row="1" Grid.Column="1" Margin="5" d:Content="# # # #" ToolTip="{Binding Source={x:Static consts:SettingsConst.WeightsButtonToolTip}}" Content="{Binding IsLightWeight, Converter={x:Static convs:SettingsConv.SettingsWeightsButtonContentConv}}"
Click="WeightsButton_Click"> ToolTip="{x:Static consts:SettingsConst.WeightsButtonToolTip}"
<Button.Content> Click="WeightsButton_Click" />
<Binding Path="IsLightWeight">
<Binding.Converter>
<convs:SettingsWeightsButtonContentConv />
</Binding.Converter>
</Binding>
</Button.Content>
</Button>
</Grid> </Grid>
</Window> </Window>