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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +