1.1.0 -> 1.1.1 第3次更新

This commit is contained in:
Space Time 2024-05-12 16:36:55 +08:00
parent a834b7589e
commit 987a97802b
6 changed files with 66 additions and 28 deletions

View File

@ -12,7 +12,7 @@ namespace Sheas_Cealer.Consts
[GeneratedRegex(@"^\r$")]
internal static partial Regex HostRegex();
[GeneratedRegex(@"^((((ht|f)tps?):\/\/)?[a-zA-Z0-9](-*[a-zA-Z0-9])*(\.[a-zA-Z0-9](-*[a-zA-Z0-9])*)*(:\d{1,5})?(\/[a-zA-Z0-9.-_\~\!\$\&\'\(\)\*\+\,\;\=\:\@\%]*)*)?$")]
[GeneratedRegex(@"^((((ht|f)tps?):\/\/)?[a-zA-Z0-9](-*[a-zA-Z0-9])*(\.[a-zA-Z0-9](-*[a-zA-Z0-9])*)*(:\d{1,5})?(\/[a-zA-Z0-9.\-_\~\!\$\&\'\(\)\*\+\,\;\=\:\@\%]*)*)?$")]
internal static partial Regex UrlRegex();
[GeneratedRegex(@"^(--[a-z](-?[a-z])*( --[a-z](-?[a-z])*)*)?$")]

View File

@ -1,4 +1,5 @@
using System;
using System.Diagnostics;
using System.Windows.Data;
using Sheas_Cealer.Consts;
@ -18,9 +19,9 @@ namespace Sheas_Cealer.Convs
if (mode == MainConst.Mode.browserPathMode)
{
if((bool)!isFocused! && string.IsNullOrEmpty(browserPath))
if ((bool)!isFocused! && string.IsNullOrEmpty(browserPath))
return MainConst.BrowserPathPlaceHolder;
else if((bool)isFocused! && browserPath == MainConst.BrowserPathPlaceHolder)
else if ((bool)isFocused! && browserPath == MainConst.BrowserPathPlaceHolder)
return string.Empty;
else
return browserPath!;
@ -45,7 +46,7 @@ namespace Sheas_Cealer.Convs
}
else
{
throw new Exception("Invalid mode");
throw new UnreachableException();
}
}

View File

@ -0,0 +1,28 @@
using System;
using System.Globalization;
using System.IO;
using System.Windows.Data;
using Sheas_Cealer.Consts;
namespace Sheas_Cealer.Convs
{
internal class MainStartCealButtonIsEnabledConv : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string? browserPath = values[0] as string;
string? upstreamUrl = values[1] as string;
string? extraArgs = values[2] as string;
if (File.Exists(browserPath) && Path.GetFileName(browserPath).ToLower().EndsWith(".exe") && MainConst.UrlRegex().IsMatch(upstreamUrl!) && MainConst.ArgsRegex().IsMatch(extraArgs!))
return true;
return false;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@ -14,10 +14,10 @@ namespace Sheas_Cealer.Wins
private void AboutButton_Click(object sender, RoutedEventArgs e)
{
if (sender == VersionButton)
if (sender as Button == VersionButton)
MessageBox.Show("密码: 3wnj");
ProcessStartInfo processStartInfo = new(sender == EmailButton ? "mailto:" : string.Empty + (sender as Button)!.ToolTip) { UseShellExecute = true };
ProcessStartInfo processStartInfo = new(sender as Button == EmailButton ? "mailto:" : string.Empty + (sender as Button)!.ToolTip) { UseShellExecute = true };
Process.Start(processStartInfo);
}

View File

@ -29,7 +29,7 @@
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox utils:FocusExtension.IsFocused="{Binding IsContentBoxFocused}"
<TextBox x:Name="ContentText" utils:FocusExtension.IsFocused="{Binding IsContentBoxFocused}"
Grid.Column="0" Margin="5" VerticalContentAlignment="Center"
TextChanged="ContentBox_TextChanged" PreviewDragOver="MainWin_DragEnter">
<TextBox.Text>
@ -70,7 +70,21 @@
<Button IsDefault="True"
Grid.Row="1" Margin="5" Content="{Binding StartCealButtonContent, Source={StaticResource MainConst}}"
Click="StartCealButton_Click" />
Click="StartCealButton_Click">
<Button.IsEnabled>
<MultiBinding>
<MultiBinding.Converter>
<convs:MainStartCealButtonIsEnabledConv />
</MultiBinding.Converter>
<Binding Path="BrowserPath" />
<Binding Path="UpstreamUrl" />
<Binding Path="ExtraArgs" />
</MultiBinding>
</Button.IsEnabled>
</Button>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>

View File

@ -61,18 +61,14 @@ namespace Sheas_Cealer.Wins
{
TextBox? ContentBox = sender as TextBox;
switch (MainPres!.Mode)
{
case MainConst.Mode.browserPathMode:
MainPres.BrowserPath = ContentBox!.Text;
return;
case MainConst.Mode.upstreamUrlMode:
MainPres.UpstreamUrl = ContentBox!.Text;
return;
case MainConst.Mode.extraArgsMode:
MainPres.ExtraArgs = ContentBox!.Text;
return;
};
if (MainPres!.Mode == MainConst.Mode.browserPathMode)
MainPres.BrowserPath = ContentBox!.Text;
else if (MainPres!.Mode == MainConst.Mode.upstreamUrlMode)
MainPres.UpstreamUrl = ContentBox!.Text;
else if (MainPres!.Mode == MainConst.Mode.extraArgsMode)
MainPres.ExtraArgs = ContentBox!.Text;
else
throw new UnreachableException();
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
@ -123,7 +119,6 @@ namespace Sheas_Cealer.Wins
private async void UpdateHostButton_Click(object sender, RoutedEventArgs e)
{
string hostUrl = MainPres!.UpstreamUrl;
string UpdateHostString = await Http.GetAsync<string>(hostUrl, MainClient);
StreamReader hostLocalStreamReader = new(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase!, @"Cealing-Host.json"));
string hostLocalString = hostLocalStreamReader.ReadToEnd();