From d217a0e6d4b8a27577390b23adb1a0e47c9ba169 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Mon, 8 Sep 2025 15:10:59 +0800 Subject: [PATCH] feat: add checker log widget --- .../HFUTCourseSimulation.csproj | 11 +++-- HFUTCourseSimulation/Kernel/Arranger.cs | 5 ++- HFUTCourseSimulation/MainWindow.xaml.cs | 40 ++++++++++++------ HFUTCourseSimulation/Widget/LogChecker.xaml | 37 +++++++++++++++++ .../Widget/LogChecker.xaml.cs | 41 +++++++++++++++++++ README.md | 4 +- 6 files changed, 119 insertions(+), 19 deletions(-) create mode 100644 HFUTCourseSimulation/Widget/LogChecker.xaml create mode 100644 HFUTCourseSimulation/Widget/LogChecker.xaml.cs diff --git a/HFUTCourseSimulation/HFUTCourseSimulation.csproj b/HFUTCourseSimulation/HFUTCourseSimulation.csproj index ff5d576..3f3d830 100644 --- a/HFUTCourseSimulation/HFUTCourseSimulation.csproj +++ b/HFUTCourseSimulation/HFUTCourseSimulation.csproj @@ -96,6 +96,9 @@ + + LogChecker.xaml + Designer MSBuild:Compile @@ -120,6 +123,10 @@ MainWindow.xaml Code + + Designer + MSBuild:Compile + @@ -148,8 +155,6 @@ - - - + \ No newline at end of file diff --git a/HFUTCourseSimulation/Kernel/Arranger.cs b/HFUTCourseSimulation/Kernel/Arranger.cs index 8860618..fedc75d 100644 --- a/HFUTCourseSimulation/Kernel/Arranger.cs +++ b/HFUTCourseSimulation/Kernel/Arranger.cs @@ -87,7 +87,7 @@ namespace HFUTCourseSimulation.Kernel { /// 如果检查无误则返回检查好的结构,否则返回null private static Data.Built.Semester CheckSemester(Data.Storage.Semester semester, Reporter reporter) { // 检查Semester - reporter.Info($"正在检查学期"); + reporter.Info($"正在检查学期设置..."); if (semester.StartDate.DayOfWeek != DayOfWeek.Monday) { reporter.Error($"起始日期{semester.StartDate:yyyy-MM-dd}不是星期一"); return null; @@ -108,10 +108,11 @@ namespace HFUTCourseSimulation.Kernel { if (rv is null) return null; int dinnerAt = rv.Value; + reporter.Info($"正在检查课程设置..."); var courses = new List(); foreach (var course in semester.Courses) { // 检查课程(实际上只有安排需要检查) - reporter.Info($"正在检查课程:{course.Name}"); + reporter.Info($"正在检查课程:{course.Name}..."); var schedules = new List(); diff --git a/HFUTCourseSimulation/MainWindow.xaml.cs b/HFUTCourseSimulation/MainWindow.xaml.cs index f9e7618..eeb61ea 100644 --- a/HFUTCourseSimulation/MainWindow.xaml.cs +++ b/HFUTCourseSimulation/MainWindow.xaml.cs @@ -248,34 +248,48 @@ namespace HFUTCourseSimulation { private void uiMenuCheck_Click(object sender, RoutedEventArgs e) { var semester = _context.Semester.ToStorage(); var reporter = new Kernel.Reporter(); - var rv = Kernel.Arranger.Arrange(semester, reporter); + Kernel.Arranger.Arrange(semester, reporter); + + var widget = new Widget.LogChecker(); + widget.CurrentReporter = reporter; + widget.ShowDialog(); } private void uiMenuSimulator_Click(object sender, RoutedEventArgs e) { var semester = _context.Semester.ToStorage(); var reporter = new Kernel.Reporter(); var rv = Kernel.Arranger.Arrange(semester, reporter); - if (rv is null) return; - var dialog = new Dialog.Simulator(); - dialog.CurrentSemester = rv; - dialog.ShowDialog(); + if (rv is null || reporter.HasError()) { + var widget = new Widget.LogChecker(); + widget.CurrentReporter = reporter; + widget.ShowDialog(); + } else { + var dialog = new Dialog.Simulator(); + dialog.CurrentSemester = rv; + dialog.ShowDialog(); + } } private void uiMenuRender_Click(object sender, RoutedEventArgs e) { var semester = _context.Semester.ToStorage(); var reporter = new Kernel.Reporter(); var rv = Kernel.Arranger.Arrange(semester, reporter); - if (rv is null) return; - // Fetch file path. - var filepath = Util.Win32Dialog.SaveRender(); - if (filepath is null) return; - - if (Kernel.Render.Rending(rv, filepath)) { - ReportStatus($"已导出图片:{filepath}"); + if (rv is null || reporter.HasError()) { + var widget = new Widget.LogChecker(); + widget.CurrentReporter = reporter; + widget.ShowDialog(); } else { - Win32Dialog.Error("导出失败。请检查文件是否被占用,或检查GDI是否能正常使用。", "导出结果"); + // Fetch file path. + var filepath = Util.Win32Dialog.SaveRender(); + if (filepath is null) return; + + if (Kernel.Render.Rending(rv, filepath)) { + ReportStatus($"已导出图片:{filepath}"); + } else { + Win32Dialog.Error("导出失败。请检查文件是否被占用,或检查GDI是否能正常使用。", "导出渲染结果"); + } } } diff --git a/HFUTCourseSimulation/Widget/LogChecker.xaml b/HFUTCourseSimulation/Widget/LogChecker.xaml new file mode 100644 index 0000000..8d8e24e --- /dev/null +++ b/HFUTCourseSimulation/Widget/LogChecker.xaml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +