Sheas-Cealer/Wins/MainWin.axaml
2025-06-06 10:37:43 +08:00

222 lines
13 KiB
XML

<Window x:Class="Sheas_Cealer_Nix.Wins.MainWin"
x:DataType="preses:MainPres"
xmlns="https://github.com/avaloniaui"
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_Nix.Consts"
xmlns:convs="clr-namespace:Sheas_Cealer_Nix.Convs"
xmlns:preses="clr-namespace:Sheas_Cealer_Nix.Preses"
mc:Ignorable="d"
DragDrop.AllowDrop="True"
WindowStartupLocation="CenterScreen" CanResize="False" SizeToContent="Height"
Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainWinWidthConv}}"
Loaded="MainWin_Loaded" Closing="MainWin_Closing" DragDrop.DragEnter="MainWin_DragEnter" DragDrop.Drop="MainWin_Drop" KeyDown="MainWin_KeyDown">
<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"
Content="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsModeButtonContentConv}}"
ToolTip.Tip="{x:Static consts:MainConst.SettingsModeButtonToolTip}"
Click="SettingsModeButton_Click" />
<TextBox x:Name="SettingsBox"
Grid.Column="1" Margin="5" VerticalContentAlignment="Center" UseFloatingWatermark="True"
AutomationProperties.Name="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsBoxHintConv}}"
Watermark="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsBoxHintConv}}"
ToolTip.Tip="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsBoxToolTipConv}}"
TextChanged="SettingsBox_TextChanged" DragDrop.DragOver="MainWin_DragEnter">
<TextBox.Text>
<MultiBinding Mode="OneWay"
Converter="{x:Static convs:MainConv.MainSettingsBoxTextConv}">
<Binding Path="SettingsMode" />
<Binding Path="BrowserPath" />
<Binding Path="UpstreamUrl" />
<Binding Path="ExtraArgs" />
</MultiBinding>
</TextBox.Text>
</TextBox>
<Button Grid.Column="2" Margin="5"
Content="{Binding SettingsMode, Converter={x:Static convs:MainConv.MainSettingsFunctionButtonContentConv}}"
ToolTip.Tip="{x:Static consts:MainConst.SettingsFunctionButtonToolTip}"
Click="SettingsFunctionButton_Click" />
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
</Grid.ColumnDefinitions>
<Button x:Name="BrowserButton"
IsDefault="True"
Grid.Column="0" Margin="5"
Content="{x:Static consts:MainConst.BrowserButtonContent}"
ToolTip.Tip="{x:Static consts:MainConst.BrowserButtonToolTip}"
Click="LaunchButton_Click">
<Button.IsEnabled>
<MultiBinding Converter="{x:Static convs:MainConv.MainBrowserButtonIsEnabledConv}">
<Binding Path="BrowserPath" />
<Binding Path="ExtraArgs" />
</MultiBinding>
</Button.IsEnabled>
</Button>
<Button x:Name="NginxButton"
Grid.Column="1" Margin="5"
IsVisible="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
Click="LaunchButton_Click">
<Button.IsEnabled>
<MultiBinding Converter="{x:Static convs:MainConv.MainNginxButtonIsEnabledConv}">
<Binding Path="IsConginxExist" />
<Binding Path="IsNginxExist" />
<Binding Path="IsCoproxyIniting" />
<Binding Path="IsNginxIniting" />
<Binding Path="IsComihomoIniting" />
<Binding Path="IsMihomoIniting" />
</MultiBinding>
</Button.IsEnabled>
<Button.Content>
<MultiBinding Converter="{x:Static convs:MainConv.MainNginxButtonContentConv}">
<Binding Path="IsConginxRunning" />
<Binding Path="IsNginxRunning" />
<Binding Path="IsCoproxyIniting" />
<Binding Path="IsNginxIniting" />
</MultiBinding>
</Button.Content>
<ToolTip.Tip>
<MultiBinding Converter="{x:Static convs:MainConv.MainNginxButtonToolTipConv}">
<Binding Path="IsConginxRunning" />
<Binding Path="IsNginxRunning" />
</MultiBinding>
</ToolTip.Tip>
</Button>
<Button x:Name="MihomoButton"
Grid.Column="2" Margin="5"
IsVisible="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
ToolTip.Tip="{Binding IsMihomoRunning, Converter={x:Static convs:MainConv.MainMihomoButtonToolTipConv}}"
Click="LaunchButton_Click">
<Button.IsEnabled>
<MultiBinding Converter="{x:Static convs:MainConv.MainMihomoButtonIsEnabledConv}">
<Binding Path="IsComihomoExist" />
<Binding Path="IsMihomoExist" />
<Binding Path="IsCoproxyIniting" />
<Binding Path="IsComihomoIniting" />
<Binding Path="IsMihomoIniting" />
</MultiBinding>
</Button.IsEnabled>
<Button.Content>
<MultiBinding Converter="{x:Static convs:MainConv.MainMihomoButtonContentConv}">
<Binding Path="IsMihomoRunning" />
<Binding Path="IsComihomoIniting" />
<Binding Path="IsMihomoIniting" />
<Binding Path="IsCoproxyIniting" />
<Binding Path="IsCoproxyStopping" />
</MultiBinding>
</Button.Content>
</Button>
</Grid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
</Grid.ColumnDefinitions>
<Button x:Name="EditLocalHostButton"
Grid.Column="0" Margin="5"
Content="{x:Static consts:MainConst.EditLocalHostButtonContent}"
ToolTip.Tip="{x:Static consts:MainConst.EditLocalHostButtonToolTip}"
Click="EditHostButton_Click" />
<Button Grid.Column="1" Margin="5"
Content="{x:Static consts:MainConst.EditUpstreamHostButtonContent}"
ToolTip.Tip="{x:Static consts:MainConst.EditUpstreamHostButtonToolTip}"
Click="EditHostButton_Click" />
<Button x:Name="EditNginxConfButton"
Grid.Column="2" Margin="5"
IsVisible="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
Content="{x:Static consts:MainConst.EditNginxConfButtonContent}"
ToolTip.Tip="{x:Static consts:MainConst.EditNginxConfButtonToolTip}"
Click="EditConfButton_Click">
<Button.IsEnabled>
<MultiBinding Converter="{x:Static convs:MainConv.MainNginxButtonIsEnabledConv}">
<Binding Path="IsConginxExist" />
<Binding Path="IsNginxExist" />
<Binding Path="IsCoproxyIniting" />
<Binding Path="IsNginxIniting" />
<Binding Path="IsComihomoIniting" />
<Binding Path="IsMihomoIniting" />
</MultiBinding>
</Button.IsEnabled>
</Button>
<Button Grid.Column="3" Margin="5"
IsVisible="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
Content="{x:Static consts:MainConst.EditMihomoConfButtonContent}"
ToolTip.Tip="{x:Static consts:MainConst.EditMihomoConfButtonToolTip}"
Click="EditConfButton_Click">
<Button.IsEnabled>
<MultiBinding Converter="{x:Static convs:MainConv.MainMihomoButtonIsEnabledConv}">
<Binding Path="IsComihomoExist" />
<Binding Path="IsMihomoExist" />
<Binding Path="IsCoproxyIniting" />
<Binding Path="IsComihomoIniting" />
<Binding Path="IsMihomoIniting" />
</MultiBinding>
</Button.IsEnabled>
</Button>
</Grid>
<Grid Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Margin="5"
IsEnabled="{Binding UpstreamUrl, Converter={x:Static convs:MainConv.MainUpdateHostButtonIsEnabledConv}}"
Content="{Binding IsUpstreamHostUtd, Converter={x:Static convs:MainConv.MainUpdateHostButtonContentConv}}"
ToolTip.Tip="{x:Static consts:MainConst.UpdateUpstreamHostButtonToolTip}"
Click="UpdateUpstreamHostButton_Click" />
<Button x:Name="EditHostsConfButton"
Grid.Column="1" Margin="5"
IsVisible="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
Content="{x:Static consts:MainConst.EditHostsConfButtonContent}"
ToolTip.Tip="{x:Static consts:MainConst.EditHostsConfButtonToolTip}"
Click="EditConfButton_Click" />
</Grid>
<Grid Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainProxyColumnWidthConv}}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button IsEnabled="False"
Grid.Column="0" Margin="5"
Content="{x:Static consts:MainConst.SettingsButtonContent}"
ToolTip.Tip="{x:Static consts:MainConst.SettingsButtonToolTip}"
Click="SettingsButton_Click" />
<Button Focusable="False"
Grid.Column="1" Margin="5"
IsVisible="{Binding Source={x:Static consts:MainConst.IsAdmin}, Converter={x:Static convs:MainConv.MainAdminControlVisibilityConv}}"
Content="{Binding IsFlashing, Converter={x:Static convs:MainConv.MainNoClickButtonContentConv}}"
ToolTip.Tip="{Binding IsFlashing, Converter={x:Static convs:MainConv.MainNoClickButtonToolTipConv}}"
Click="NoClickButton_Click" />
<Button Grid.Column="2" Margin="5"
Content="{x:Static consts:MainConst.AboutButtonContent}"
ToolTip.Tip="{x:Static consts:MainConst.AboutButtonToolTip}"
Click="AboutButton_Click" />
</Grid>
</Grid>
</Window>