Files
better-genshin-impact/BetterGenshinImpact/View/Pages/ScriptControlPage.xaml
2024-08-10 13:37:29 +08:00

213 lines
11 KiB
XML

<Page x:Class="BetterGenshinImpact.View.Pages.ScriptControlPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:linq="clr-namespace:System.Linq;assembly=System.Linq"
xmlns:local="clr-namespace:BetterGenshinImpact.View.Pages"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pages="clr-namespace:BetterGenshinImpact.ViewModel.Pages"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
Title="HomePage"
d:DataContext="{d:DesignInstance Type=pages:ScriptControlViewModel}"
d:DesignHeight="850"
d:DesignWidth="800"
ui:Design.Background="{DynamicResource ApplicationBackgroundBrush}"
ui:Design.Foreground="{DynamicResource TextFillColorPrimaryBrush}"
FontFamily="{StaticResource TextThemeFontFamily}"
Foreground="{DynamicResource TextFillColorPrimaryBrush}"
mc:Ignorable="d">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/View/Controls/Style/ListViewEx.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
<Grid Margin="8,8,8,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="7" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!-- 左侧栏 -->
<Grid Grid.Column="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Grid.Row="0"
BorderBrush="{DynamicResource ControlStrongFillColorDisabledBrush}"
BorderThickness="0,0,0,1">
<ui:TextBlock Margin="4,4,8,4"
FontTypography="BodyStrong"
Text="脚本组"
TextAlignment="Center" />
</Border>
<ui:ListView Grid.Row="1"
ItemsSource="{Binding ScriptGroups, Mode=TwoWay}"
SelectedItem="{Binding SelectedScriptGroup, Mode=TwoWay}"
SelectionMode="Single">
<ui:ListView.ItemTemplate>
<DataTemplate>
<TextBlock Margin="8,4" Text="{Binding Name, Mode=OneWay}" />
</DataTemplate>
</ui:ListView.ItemTemplate>
<ui:ListView.ContextMenu>
<ContextMenu>
<MenuItem Command="{Binding AddScriptGroupCommand}" Header="新增组" />
<MenuItem Command="{Binding DeleteScriptGroupCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
Header="删除组" />
</ContextMenu>
</ui:ListView.ContextMenu>
</ui:ListView>
</Grid>
</Grid>
<!-- 分割 -->
<GridSplitter Grid.Column="1"
Width="2"
HorizontalAlignment="Stretch"
Background="{DynamicResource ControlStrongFillColorDisabledBrush}" />
<!-- 右侧栏:无选中组 -->
<Border Grid.Column="2"
Background="{ui:ThemeResource CardBackgroundFillColorDefaultBrush}"
BorderBrush="{ui:ThemeResource CardStrokeColorDefaultBrush}"
BorderThickness="1,1,1,1"
CornerRadius="8">
<!-- 无选中组 -->
<Grid Margin="8,8,0,0">
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedScriptGroup, Converter={StaticResource NotNullConverter}}" Value="True">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<StackPanel>
<ui:TextBlock Margin="0,0,0,8"
FontTypography="BodyStrong"
Text="请在左侧栏选择或新增脚本组" />
<ui:TextBlock Margin="0,0,0,8"
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
TextWrapping="Wrap">
支持 Javascript 编写的脚本,<Hyperlink Command="{Binding GoToAutoDomainUrlCommand}" Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}">
点击查看使用教程
</Hyperlink>
</ui:TextBlock>
</StackPanel>
</Grid>
</Border>
<!-- 右侧栏:选中组 -->
<Border Grid.Column="2"
Background="{ui:ThemeResource CardBackgroundFillColorDefaultBrush}"
BorderBrush="{ui:ThemeResource CardStrokeColorDefaultBrush}"
BorderThickness="1,1,1,1"
CornerRadius="8">
<Grid Margin="8,8,0,0">
<Grid.Style>
<Style TargetType="Grid">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedScriptGroup}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ui:TextBlock Grid.Row="0"
Margin="0,0,0,8"
FontTypography="BodyStrong"
Text="{Binding SelectedScriptGroup.Name}" />
<ui:TextBlock Grid.Row="1"
Margin="0,0,0,8"
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
TextWrapping="Wrap">
支持 Javascript 编写的脚本,<Hyperlink Command="{Binding GoToScriptUrlCommand}" Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}">
点击查看使用教程
</Hyperlink>
</ui:TextBlock>
<StackPanel Grid.Row="2" Orientation="Horizontal">
<ui:Button Command="{Binding StartRecordCommand}"
Content="运行此组配置"
Icon="{ui:SymbolIcon Play24}"
IsEnabled="{Binding IsRecording, Converter={StaticResource InverseBooleanConverter}}" />
<Separator Width="10" Opacity="0" />
<ui:Button Command="{Binding StopRecordCommand}"
Content="停止运行"
Icon="{ui:SymbolIcon Stop24}"
IsEnabled="{Binding IsRecording}" />
<Separator Width="10" Opacity="0" />
<ui:Button Command="{Binding OpenScriptFolderCommand}"
Content="打开脚本目录"
Icon="{ui:SymbolIcon FolderOpen24}" />
</StackPanel>
<Separator Grid.Row="3"
Height="8"
Opacity="0" />
<Grid Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="180" />
<ColumnDefinition Width="120" />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<Grid x:Name="Col1" Grid.Column="0" />
<Grid x:Name="Col2" Grid.Column="1" />
<Grid x:Name="Col3" Grid.Column="2" />
</Grid>
<ui:ListView Grid.Row="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding SelectedScriptGroup.Projects, Mode=OneWay}"
SelectionMode="Single">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderDarkStyle}">
<GridViewColumn DisplayMemberBinding="{Binding Order}" Header="执行优先级" />
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="脚本名称" />
<GridViewColumn DisplayMemberBinding="{Binding ScheduleDesc}" Header="执行周期" />
<GridViewColumn DisplayMemberBinding="{Binding StatusDesc}" Header="启用状态" />
</GridView>
</ListView.View>
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Command="{Binding AddScriptCommand}" Header="新增配置" />
<MenuItem Command="{Binding DeleteScriptCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
Header="删除配置" />
</ContextMenu>
</ListBox.ContextMenu>
<ListView.Style>
<Style TargetType="{x:Type ListView}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Background" Value="Transparent" />
</Style>
</ListView.Style>
</ui:ListView>
</Grid>
</Border>
</Grid>
</Page>