mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-09 00:34:14 +08:00
393 lines
24 KiB
XML
393 lines
24 KiB
XML
<UserControl 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:dd="urn:gong-wpf-dragdrop"
|
|
xmlns:local="clr-namespace:BetterGenshinImpact.View.Pages"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:pages="clr-namespace:BetterGenshinImpact.ViewModel.Pages"
|
|
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
|
|
xmlns:markup="clr-namespace:BetterGenshinImpact.Markup"
|
|
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">
|
|
<UserControl.Resources>
|
|
<ResourceDictionary>
|
|
<ResourceDictionary.MergedDictionaries>
|
|
<ResourceDictionary Source="/View/Controls/Style/ListViewEx.xaml" />
|
|
</ResourceDictionary.MergedDictionaries>
|
|
</ResourceDictionary>
|
|
</UserControl.Resources>
|
|
<Grid Margin="8,0,8,0">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="150" />
|
|
<ColumnDefinition Width="16" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- 调度器 -->
|
|
<Grid Grid.Column="0" Margin="0,8,8,8">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
<Border Grid.Row="0"
|
|
BorderBrush="{DynamicResource ControlStrongFillColorDisabledBrush}"
|
|
BorderThickness="0,0,0,1">
|
|
<ui:TextBlock Margin="4,4,8,4"
|
|
FontTypography="BodyStrong"
|
|
Text="{markup:Localize Key=scheduler.configGroup}"
|
|
TextAlignment="Center" />
|
|
</Border>
|
|
<ui:ListView Grid.Row="1"
|
|
dd:DragDrop.IsDragSource="True"
|
|
dd:DragDrop.IsDropTarget="True"
|
|
dd:DragDrop.UseDefaultDragAdorner="True"
|
|
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}" >
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="White" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding NextFlag}" Value="True">
|
|
<Setter Property="Foreground" Value="Green" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
</DataTemplate>
|
|
</ui:ListView.ItemTemplate>
|
|
<ui:ListView.ContextMenu>
|
|
<ContextMenu>
|
|
<MenuItem Command="{Binding AddScriptGroupCommand}" Header="{markup:Localize Key=scheduler.addGroup}" />
|
|
<MenuItem Command="{Binding DeleteScriptGroupCommand}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
Header="{markup:Localize Key=scheduler.deleteGroup}" />
|
|
<MenuItem Command="{Binding RenameScriptGroupCommand}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
Header="{markup:Localize Key=scheduler.rename}" />
|
|
<MenuItem Command="{Binding CopyScriptGroupCommand}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
Header="{markup:Localize Key=scheduler.copyGroup}" />
|
|
<MenuItem Command="{Binding AddScriptGroupNextFlagCommand}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
Header="{markup:Localize Key=scheduler.startContinuousTasksFromHere}" />
|
|
</ContextMenu>
|
|
</ui:ListView.ContextMenu>
|
|
</ui:ListView>
|
|
<Grid Grid.Row="2">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<ui:Button Grid.Row="0"
|
|
Margin="2"
|
|
HorizontalAlignment="Stretch"
|
|
Command="{Binding StartMultiScriptGroupCommand}"
|
|
Content="{markup:Localize Key=scheduler.continuousExecution}" />
|
|
|
|
<ui:Button Grid.Row="1"
|
|
Margin="2"
|
|
HorizontalAlignment="Stretch"
|
|
Command="{Binding ContinueMultiScriptGroupCommand}"
|
|
Content="{markup:Localize Key=scheduler.continueExecution}" />
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
|
|
<!-- 分隔符 -->
|
|
<ui:FontIcon Grid.Column="1"
|
|
HorizontalAlignment="Center" Glyph="" Style="{StaticResource FaFontIconStyle}" />
|
|
<GridSplitter Grid.Column="1"
|
|
Width="12"
|
|
HorizontalAlignment="Stretch"
|
|
Background="{DynamicResource ControlStrongFillColorDisabledBrush}"
|
|
Focusable="False"
|
|
Opacity="0.4" />
|
|
|
|
<!-- 右侧面板:未选择组 -->
|
|
<Border Grid.Column="2"
|
|
Margin="6"
|
|
Background="{ui:ThemeResource CardBackgroundFillColorDefaultBrush}"
|
|
BorderBrush="{ui:ThemeResource CardStrokeColorDefaultBrush}"
|
|
BorderThickness="1,1,1,1"
|
|
CornerRadius="8">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<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>
|
|
</Border.Style>
|
|
<Grid Margin="8,8,0,0">
|
|
|
|
<StackPanel>
|
|
<ui:TextBlock Margin="0,0,0,8"
|
|
FontTypography="BodyStrong"
|
|
Text="{markup:Localize Key=scheduler.experimentalSelectOrAddGroup}" />
|
|
<ui:TextBlock Margin="0,0,0,8"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
|
TextWrapping="Wrap">
|
|
<Run Text="{markup:Localize Key=scheduler.rightClickToAddModifyDrag}" />
|
|
<Hyperlink Command="{Binding GoToScriptGroupUrlCommand}"
|
|
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}">
|
|
<Run Text="{markup:Localize Key=scheduler.clickToViewTutorial}" />
|
|
</Hyperlink>
|
|
</ui:TextBlock>
|
|
<ui:TextBlock Margin="0,0,0,8"
|
|
FontTypography="BodyStrong"
|
|
Text="{markup:Localize Key=scheduler.rightClickOrButtonToAdd}" />
|
|
<ui:Button Margin="0,0,0,12"
|
|
Command="{Binding AddScriptGroupCommand}"
|
|
Content="{markup:Localize Key=scheduler.addConfigGroup}" />
|
|
<!-- 示例配置组 -->
|
|
<!--<ui:TextBlock Margin="0,0,0,8"
|
|
FontTypography="BodyStrong"
|
|
Text="也可以直接点击下面按钮导入示例配置组" />
|
|
<ui:TextBlock Margin="0,0,0,8"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
|
TextWrapping="Wrap">
|
|
<Hyperlink Command="{Binding ImportScriptGroupCommand}"
|
|
CommandParameter="AutoCrystalflyExampleGroup"
|
|
Foreground="{ui:ThemeResource TextFillColorSecondaryBrush}">
|
|
导入自动晶蝶示例配置组
|
|
</Hyperlink>
|
|
</ui:TextBlock>-->
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 右侧面板:已选择组 -->
|
|
<Border Grid.Column="2"
|
|
Margin="6"
|
|
Background="{ui:ThemeResource CardBackgroundFillColorDefaultBrush}"
|
|
BorderBrush="{ui:ThemeResource CardStrokeColorDefaultBrush}"
|
|
BorderThickness="1,1,1,1"
|
|
CornerRadius="8">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding SelectedScriptGroup}" Value="{x:Null}">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<Grid Margin="8,8,0,0">
|
|
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
|
<ui:TextBlock Margin="0,0,0,8"
|
|
FontTypography="BodyStrong"
|
|
Text="{markup:Localize Key=scheduler.experimentalConfigGroup}" />
|
|
<ui:TextBlock Margin="0,0,0,8"
|
|
FontTypography="BodyStrong"
|
|
Text="{Binding SelectedScriptGroup.Name}" />
|
|
</StackPanel>
|
|
|
|
<ui:TextBlock Grid.Row="1"
|
|
Margin="0,0,0,8"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
|
Text="{markup:Localize Key=scheduler.rightClickToAddDragToReorder}">
|
|
</ui:TextBlock>
|
|
|
|
|
|
<StackPanel Grid.Row="2" Orientation="Horizontal">
|
|
<ui:Button Command="{Binding StartScriptGroupCommand}"
|
|
Content="{markup:Localize Key=scheduler.run}"
|
|
Icon="{ui:SymbolIcon Play24}" />
|
|
<Separator Width="10" Opacity="0" />
|
|
|
|
|
|
<ui:DropDownButton Content="{markup:Localize Key=scheduler.add}" Icon="{ui:SymbolIcon Add24}">
|
|
<ui:DropDownButton.Flyout>
|
|
<ContextMenu>
|
|
<MenuItem Header="{markup:Localize Key=scheduler.jsScript}" Command="{Binding AddJsScriptCommand}" />
|
|
<MenuItem Header="{markup:Localize Key=scheduler.mapTrackingTask}" Command="{Binding AddPathingCommand}" />
|
|
<MenuItem Header="{markup:Localize Key=scheduler.keyMouseScript}" Command="{Binding AddKmScriptCommand}" />
|
|
<MenuItem Header="{markup:Localize Key=scheduler.shell}" Command="{Binding AddShellCommand}" />
|
|
</ContextMenu>
|
|
</ui:DropDownButton.Flyout>
|
|
</ui:DropDownButton>
|
|
<Separator Width="10" Opacity="0" />
|
|
<ui:DropDownButton Content="{markup:Localize Key=scheduler.moreFunctions}">
|
|
<ui:DropDownButton.Flyout>
|
|
<ContextMenu>
|
|
<MenuItem Header="{markup:Localize Key=scheduler.clear}" Command="{Binding ClearTasksCommand}" />
|
|
<MenuItem Header="{markup:Localize Key=scheduler.logAnalysis}" Command="{Binding OpenLogParseCommand}" />
|
|
<MenuItem Header="{markup:Localize Key=scheduler.openScriptRepo}" Command="{Binding OpenLocalScriptRepoCommand}" />
|
|
<MenuItem Header="{markup:Localize Key=scheduler.updateByFolder}" Command="{Binding UpdateTasksCommand}" />
|
|
<MenuItem Header="{markup:Localize Key=scheduler.reverseTaskOrder}" Command="{Binding ReverseTaskOrderCommand}" />
|
|
<MenuItem Header="{markup:Localize Key=scheduler.exportTasksModifiedByControlFile}" Command="{Binding ExportMergerJsonsCommand}" />
|
|
</ContextMenu>
|
|
</ui:DropDownButton.Flyout>
|
|
</ui:DropDownButton>
|
|
<Separator Width="10" Opacity="0" />
|
|
<ui:Button Command="{Binding OpenScriptGroupSettingsCommand}"
|
|
Content="{markup:Localize Key=scheduler.settings}"
|
|
Icon="{ui:SymbolIcon Settings24}" />
|
|
<!--<ui:TextBlock VerticalAlignment="Center"
|
|
FontSize="16"
|
|
Foreground="{ui:ThemeResource TextFillColorTertiaryBrush}"
|
|
TextWrapping="Wrap">
|
|
ֹͣ停止运行请配置并使用快捷键!
|
|
</ui:TextBlock>-->
|
|
</StackPanel>
|
|
|
|
<Separator Grid.Row="3"
|
|
Height="8"
|
|
Opacity="0" />
|
|
|
|
<Grid Grid.Row="4">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="40" />
|
|
<ColumnDefinition Width="*" />
|
|
<ColumnDefinition Width="80" />
|
|
<ColumnDefinition Width="80" />
|
|
<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 x:Name="Col4" Grid.Column="3" />
|
|
</Grid>
|
|
<ui:ListView Grid.Row="5"
|
|
HorizontalAlignment="Stretch"
|
|
VerticalAlignment="Stretch"
|
|
dd:DragDrop.IsDragSource="True"
|
|
dd:DragDrop.IsDropTarget="True"
|
|
dd:DragDrop.UseDefaultDragAdorner="True"
|
|
ItemsSource="{Binding SelectedScriptGroup.Projects, Mode=TwoWay}"
|
|
SelectionMode="Single">
|
|
|
|
|
|
<ListView.View>
|
|
|
|
<GridView ColumnHeaderContainerStyle="{StaticResource GridViewColumnHeaderDarkStyle}">
|
|
<GridViewColumn Width="{Binding ElementName=Col1, Path=ActualWidth}"
|
|
DisplayMemberBinding="{Binding Index}"
|
|
Header="#" />
|
|
<GridViewColumn Width="{Binding ElementName=Col2, Path=ActualWidth}"
|
|
|
|
Header="{markup:Localize Key=scheduler.name}" >
|
|
<GridViewColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<TextBlock Text="{Binding Name}" FontSize="14" ToolTip="{Binding FolderName}">
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="White" />
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding NextFlag}" Value="True">
|
|
<Setter Property="Foreground" Value="Green" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
</DataTemplate>
|
|
</GridViewColumn.CellTemplate>
|
|
|
|
</GridViewColumn>
|
|
<GridViewColumn Width="{Binding ElementName=Col3, Path=ActualWidth}"
|
|
DisplayMemberBinding="{Binding TypeDesc}"
|
|
Header="{markup:Localize Key=scheduler.type}" />
|
|
<GridViewColumn Width="{Binding ElementName=Col4, Path=ActualWidth}" Header="{markup:Localize Key=scheduler.enableStatus}">
|
|
<GridViewColumn.CellTemplate>
|
|
<DataTemplate>
|
|
<ui:ToggleSwitch
|
|
IsChecked="{Binding Status, Converter={StaticResource BooleanToEnableTextConverter}, Mode=TwoWay}" />
|
|
</DataTemplate>
|
|
</GridViewColumn.CellTemplate>
|
|
</GridViewColumn>
|
|
</GridView>
|
|
</ListView.View>
|
|
<ListView.ContextMenu>
|
|
<ContextMenu>
|
|
<MenuItem Command="{Binding AddJsScriptCommand}" Header="{markup:Localize Key=scheduler.addJsScript}" />
|
|
<MenuItem Command="{Binding AddPathingCommand}" Header="{markup:Localize Key=scheduler.addMapTrackingTask}" />
|
|
<MenuItem Command="{Binding AddKmScriptCommand}" Header="{markup:Localize Key=scheduler.addKeyMouseScript}" />
|
|
<MenuItem Command="{Binding AddShellCommand}" Header="{markup:Localize Key=scheduler.addShell}" />
|
|
<MenuItem Command="{Binding AddNextFlagCommand}" Header="{markup:Localize Key=scheduler.nextTaskExecuteFromHere}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
/>
|
|
|
|
<MenuItem Command="{Binding EditScriptCommonCommand}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
Header="{markup:Localize Key=scheduler.modifyCommonConfig}" />
|
|
<MenuItem Command="{Binding EditJsScriptSettingsCommand}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
Header="{markup:Localize Key=scheduler.modifyJsScriptCustomConfig}">
|
|
<MenuItem.Style>
|
|
<Style TargetType="MenuItem">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger
|
|
Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem.Type}"
|
|
Value="Javascript">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</MenuItem.Style>
|
|
</MenuItem>
|
|
<MenuItem Command="{Binding DeleteScriptCommand}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
Header="{markup:Localize Key=scheduler.remove}" />
|
|
<MenuItem Command="{Binding DeleteScriptByFolderCommand}"
|
|
CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}"
|
|
Header="{markup:Localize Key=scheduler.removeByFolder}">
|
|
<MenuItem.Style>
|
|
<Style TargetType="MenuItem">
|
|
<Setter Property="Visibility" Value="Collapsed" />
|
|
<Style.Triggers>
|
|
<DataTrigger
|
|
Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem.Type}"
|
|
Value="Pathing">
|
|
<Setter Property="Visibility" Value="Visible" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</MenuItem.Style>
|
|
</MenuItem>
|
|
</ContextMenu>
|
|
</ListView.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>
|
|
</UserControl>
|