- 移除主窗口、设置窗口和任务编辑窗口对 app.ico 资源路径的直接引用。 - 避免发布包不包含外置 app.ico 时 WPF 在加载窗口 BAML 阶段抛出 XamlParseException。 - 保留 exe 图标嵌入和托盘图标从 exe 读取的发布包结构。 - 已重新发布并验证 release 目录中的 OmniScheduler.exe 可正常启动。
104 lines
6.0 KiB
XML
104 lines
6.0 KiB
XML
<Window x:Class="OmniScheduler.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Title="OmniScheduler"
|
|
Height="780"
|
|
Width="1180"
|
|
MinHeight="640"
|
|
MinWidth="980"
|
|
Closing="Window_Closing">
|
|
<Window.Resources>
|
|
<SolidColorBrush x:Key="PanelBrush" Color="#F5F7FA" />
|
|
<SolidColorBrush x:Key="LineBrush" Color="#D8DEE9" />
|
|
<SolidColorBrush x:Key="AccentBrush" Color="#2563EB" />
|
|
<Style TargetType="Button">
|
|
<Setter Property="MinHeight" Value="30" />
|
|
<Setter Property="Padding" Value="12,4" />
|
|
<Setter Property="Margin" Value="0,0,8,0" />
|
|
</Style>
|
|
<Style TargetType="DataGrid">
|
|
<Setter Property="AutoGenerateColumns" Value="False" />
|
|
<Setter Property="CanUserAddRows" Value="False" />
|
|
<Setter Property="CanUserSortColumns" Value="True" />
|
|
<Setter Property="IsReadOnly" Value="True" />
|
|
<Setter Property="GridLinesVisibility" Value="Horizontal" />
|
|
<Setter Property="HeadersVisibility" Value="Column" />
|
|
<Setter Property="RowHeight" Value="32" />
|
|
</Style>
|
|
</Window.Resources>
|
|
|
|
<DockPanel Background="White">
|
|
<Border DockPanel.Dock="Top" Background="{StaticResource PanelBrush}" BorderBrush="{StaticResource LineBrush}" BorderThickness="0,0,0,1" Padding="10,8">
|
|
<DockPanel>
|
|
<TextBlock DockPanel.Dock="Right" VerticalAlignment="Center" Foreground="#667085" Text="{Binding StatusText}" />
|
|
<StackPanel Orientation="Horizontal">
|
|
<Button Content="新建" Click="AddTask_Click" />
|
|
<Button Content="编辑" Click="EditTask_Click" />
|
|
<Button Content="删除" Click="DeleteTask_Click" />
|
|
<Button Content="克隆" Click="CloneTask_Click" />
|
|
<Button Content="手动触发" Click="FireTask_Click" />
|
|
<Button Content="设置" Click="Settings_Click" />
|
|
<ToggleButton x:Name="PauseToggle" Content="暂停全部" Checked="PauseToggle_Changed" Unchecked="PauseToggle_Changed" />
|
|
</StackPanel>
|
|
</DockPanel>
|
|
</Border>
|
|
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="3*" />
|
|
<RowDefinition Height="6" />
|
|
<RowDefinition Height="2*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<DataGrid x:Name="TasksGrid"
|
|
Grid.Row="0"
|
|
ItemsSource="{Binding State.Tasks}"
|
|
SelectedItem="{Binding SelectedTask, Mode=TwoWay}"
|
|
MouseDoubleClick="TasksGrid_MouseDoubleClick">
|
|
<DataGrid.Columns>
|
|
<DataGridCheckBoxColumn Header="启用" Binding="{Binding IsEnabled}" SortMemberPath="IsEnabled" Width="58" IsReadOnly="False" />
|
|
<DataGridTextColumn Header="任务名称" Binding="{Binding Name}" SortMemberPath="Name" Width="190" />
|
|
<DataGridTextColumn Header="频道" Binding="{Binding Channel}" SortMemberPath="Channel" Width="150" />
|
|
<DataGridTextColumn Header="触发规则" Binding="{Binding TriggerSummary}" SortMemberPath="TriggerSummary" Width="*" />
|
|
<DataGridTextColumn Header="上次运行" Binding="{Binding LastRunAt, StringFormat=yyyy-MM-dd HH:mm:ss}" SortMemberPath="LastRunAt" Width="155" />
|
|
<DataGridTextColumn Header="下次运行" Binding="{Binding NextRunAt, StringFormat=yyyy-MM-dd HH:mm:ss}" SortMemberPath="NextRunAt" Width="155" />
|
|
<DataGridTextColumn Header="最近状态" Binding="{Binding LastStatus}" SortMemberPath="LastStatus" Width="90" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<GridSplitter Grid.Row="1" Height="6" HorizontalAlignment="Stretch" Background="{StaticResource LineBrush}" />
|
|
|
|
<DockPanel Grid.Row="2">
|
|
<Border DockPanel.Dock="Top" Background="{StaticResource PanelBrush}" BorderBrush="{StaticResource LineBrush}" BorderThickness="0,1,0,1" Padding="10,6">
|
|
<DockPanel>
|
|
<Button DockPanel.Dock="Right" Content="清空日志" Click="ClearLogs_Click" />
|
|
<TextBlock FontWeight="SemiBold" VerticalAlignment="Center" Text="执行日志" />
|
|
</DockPanel>
|
|
</Border>
|
|
<DataGrid x:Name="LogsGrid"
|
|
ItemsSource="{Binding State.Logs}"
|
|
MouseDoubleClick="LogsGrid_MouseDoubleClick">
|
|
<DataGrid.RowStyle>
|
|
<Style TargetType="DataGridRow">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding Level}" Value="ERROR">
|
|
<Setter Property="Foreground" Value="#B42318" />
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGrid.RowStyle>
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="时间" Binding="{Binding Timestamp, StringFormat=yyyy-MM-dd HH:mm:ss}" Width="155" />
|
|
<DataGridTextColumn Header="级别" Binding="{Binding Level}" Width="70" />
|
|
<DataGridTextColumn Header="任务" Binding="{Binding TaskName}" Width="170" />
|
|
<DataGridTextColumn Header="触发" Binding="{Binding TriggerType}" Width="100" />
|
|
<DataGridTextColumn Header="HTTP" Binding="{Binding StatusCode}" Width="70" />
|
|
<DataGridTextColumn Header="耗时(ms)" Binding="{Binding ElapsedMs}" Width="80" />
|
|
<DataGridTextColumn Header="消息" Binding="{Binding Message}" Width="*" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</DockPanel>
|
|
</Grid>
|
|
</DockPanel>
|
|
</Window>
|