Sheas-Cealer/Wins/MainWin.xaml
2024-12-03 12:50:21 +08:00

355 lines
17 KiB
XML

<Window x:Class="Sheas_Cealer.Wins.MainWin"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:consts="clr-namespace:Sheas_Cealer.Consts"
xmlns:convs="clr-namespace:Sheas_Cealer.Convs"
xmlns:preses="clr-namespace:Sheas_Cealer.Preses"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance preses:MainPres}" AllowDrop="True"
Style="{DynamicResource CommonWindow}" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" SizeToContent="Height"
Loaded="MainWin_Loaded" Closing="MainWin_Closing" DragEnter="MainWin_DragEnter" Drop="MainWin_Drop" KeyDown="MainWin_KeyDown">
<Window.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainWinWidthConv />
</Binding.Converter>
</Binding>
</Window.Width>
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Margin="5" d:Content="# # # #" ToolTip="{Binding Source={x:Static consts:MainConst.SettingsModeButtonToolTip}}"
Click="SettingsModeButton_Click">
<Button.Content>
<Binding Path="SettingsMode">
<Binding.Converter>
<convs:MainSettingsModeButtonContentConv />
</Binding.Converter>
</Binding>
</Button.Content>
</Button>
<TextBox x:Name="SettingsBox"
Grid.Column="1" Margin="5" VerticalContentAlignment="Center" md:HintAssist.IsFloating="True"
TextChanged="SettingsBox_TextChanged" PreviewDragOver="MainWin_DragEnter">
<TextBox.Text>
<MultiBinding Mode="OneWay" UpdateSourceTrigger="PropertyChanged">
<MultiBinding.Converter>
<convs:MainSettingsBoxTextConv />
</MultiBinding.Converter>
<Binding Path="SettingsMode" />
<Binding Path="BrowserPath" />
<Binding Path="UpstreamUrl" />
<Binding Path="ExtraArgs" />
</MultiBinding>
</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>
<Button Grid.Column="2" Margin="5" d:Content="# # # #" ToolTip="{Binding Source={x:Static consts:MainConst.SettingsFunctionButtonToolTip}}"
Click="SettingsFunctionButton_Click">
<Button.Content>
<Binding Path="SettingsMode">
<Binding.Converter>
<convs:MainSettingsFunctionButtonContentConv />
</Binding.Converter>
</Binding>
</Button.Content>
</Button>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition>
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
<ColumnDefinition>
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
</Grid.ColumnDefinitions>
<Button IsDefault="True"
Grid.Column="0" Margin="5" Content="{Binding Source={x:Static consts:MainConst.StartButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.StartButtonToolTip}}"
Click="StartButton_Click" PreviewMouseDown="StartButton_PreviewMouseDown">
<Button.IsEnabled>
<MultiBinding>
<MultiBinding.Converter>
<convs:MainStartButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="BrowserPath" />
<Binding Path="ExtraArgs" />
</MultiBinding>
</Button.IsEnabled>
</Button>
<Button Grid.Column="1" Margin="5" d:Content="# # # #"
Click="NginxButton_Click" PreviewMouseDown="NginxButton_PreviewMouseDown">
<Button.Visibility>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
<Button.IsEnabled>
<MultiBinding>
<MultiBinding.Converter>
<convs:MainProxyButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="IsNginxExist" />
<Binding Path="IsNginxIniting" />
</MultiBinding>
</Button.IsEnabled>
<Button.Content>
<MultiBinding>
<MultiBinding.Converter>
<convs:MainNginxButtonContentConv />
</MultiBinding.Converter>
<Binding Path="IsNginxRunning" />
<Binding Path="IsNginxIniting" />
</MultiBinding>
</Button.Content>
<Button.ToolTip>
<Binding Path="IsNginxRunning">
<Binding.Converter>
<convs:MainNginxButtonToolTipConv />
</Binding.Converter>
</Binding>
</Button.ToolTip>
</Button>
<Button Grid.Column="2" Margin="5" d:Content="# # # #"
Click="MihomoButton_Click" PreviewMouseDown="MihomoButton_PreviewMouseDown">
<Button.Visibility>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
<Button.IsEnabled>
<MultiBinding>
<MultiBinding.Converter>
<convs:MainProxyButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="IsMihomoExist" />
<Binding Path="IsMihomoIniting" />
</MultiBinding>
</Button.IsEnabled>
<Button.Content>
<MultiBinding>
<MultiBinding.Converter>
<convs:MainMihomoButtonContentConv />
</MultiBinding.Converter>
<Binding Path="IsMihomoRunning" />
<Binding Path="IsMihomoIniting" />
</MultiBinding>
</Button.Content>
<Button.ToolTip>
<Binding Path="IsMihomoRunning">
<Binding.Converter>
<convs:MainMihomoButtonToolTipConv />
</Binding.Converter>
</Binding>
</Button.ToolTip>
</Button>
</Grid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition>
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
<ColumnDefinition>
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
</Grid.ColumnDefinitions>
<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}}"
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}}"
Click="EditHostButton_Click" />
<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}}"
Click="EditConfButton_Click">
<Button.IsEnabled>
<MultiBinding>
<MultiBinding.Converter>
<convs:MainProxyButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="IsNginxExist" />
<Binding Path="IsNginxIniting" />
</MultiBinding>
</Button.IsEnabled>
<Button.Visibility>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
</Button>
<Button Grid.Column="3" Margin="5" Content="{Binding Source={x:Static consts:MainConst.EditMihomoConfButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.EditMihomoConfButtonToolTip}}"
Click="EditConfButton_Click">
<Button.IsEnabled>
<MultiBinding>
<MultiBinding.Converter>
<convs:MainProxyButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="IsMihomoExist" />
<Binding Path="IsMihomoIniting" />
</MultiBinding>
</Button.IsEnabled>
<Button.Visibility>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
</Button>
</Grid>
<Grid Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition>
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Margin="5" Content="{Binding Source={x:Static consts:MainConst.UpdateUpstreamHostButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.UpdateUpstreamHostButtonToolTip}}"
Click="UpdateUpstreamHostButton_Click">
<Button.IsEnabled>
<Binding Path="UpstreamUrl">
<Binding.Converter>
<convs:MainUpdateHostButtonIsEnabledConv />
</Binding.Converter>
</Binding>
</Button.IsEnabled>
</Button>
<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}}"
Click="EditConfButton_Click">
<Button.Visibility>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</Button.Visibility>
</Button>
</Grid>
<Grid Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition>
<ColumnDefinition.Width>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainProxyColumnWidthConv />
</Binding.Converter>
</Binding>
</ColumnDefinition.Width>
</ColumnDefinition>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Margin="5" Content="{Binding Source={x:Static consts:MainConst.SettingsButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.SettingsButtonToolTip}}"
Click="SettingsButton_Click" />
<Button Focusable="False"
Grid.Column="1" Margin="5" d:Content="# # # #"
Click="NoClickButton_Click">
<Button.Visibility>
<Binding Source="{x:Static consts:MainConst.IsAdmin}" Mode="OneTime">
<Binding.Converter>
<convs:MainAdminControlVisibilityConv />
</Binding.Converter>
</Binding>
</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 x:Name="AboutButton"
Grid.Column="2" Margin="5" Content="{Binding Source={x:Static consts:MainConst.AboutButtonContent}}" ToolTip="{Binding Source={x:Static consts:MainConst.AboutButtonToolTip}}"
Click="AboutButton_Click" />
</Grid>
</Grid>
</Window>