Show report dialog.
26def show_report_dialog(ui: "MainWindow", b_clear_report: bool = True, b_auto_print: bool = False, report_text: Optional[str] = None) -> None:
27 """!
28 @brief Show report dialog.
29 @param ui : main window
30 @param b_clear_report : [True] create report and clear log; [False] show only status
31 @param b_auto_print : status if report was printed automatic
32 @param report_text : [None] use report text from report; [other] use this text for print preview
33 """
34 log.debug("Starting Report dialog")
35 dialog_report = create_dialog(ui)
36 ui_report = REPORT_DIALOG()
37 ui_report.setupUi(dialog_report)
38 ui.model.c_monitor.set_dialog_style(dialog_report)
39
40 if report_text is None:
41 s_report_text = ui.model.c_report.s_report_text
42 user = ui.model.c_report.s_report_user
43 out_folder = ui.model.c_report.out_folder
44 s_total_sum = ui.model.c_report.s_total_sum
45 b_log_modified = ui.model.c_report.b_log_modified
46
47 geometry = get_window_geometry(ui)
48 b_light_theme = ui.model.c_monitor.is_light_theme()
49 if report_text is None:
50 if b_clear_report:
51 icon = ICON_REPORT_LIGHT if b_light_theme else ICON_REPORT_DARK
52 title = L_REPORT_TITLE
53 else:
54 icon = ICON_STATUS_LIGHT if b_light_theme else ICON_STATUS_DARK
55 title = L_REPORT_STATUS_TITLE if (user is None) else L_USER_STATUS_TITLE
56 else:
57 icon = ICON_PRINT_PREVIEW_LIGHT if b_light_theme else ICON_PRINT_PREVIEW_DARK
58 title = L_MENU_ARTICLE_PREVIEW
59 config_window(dialog_report, title=ui.model.c_language.get_language_text(title),
60 icon=icon, geometry=geometry)
61
62
63 width, height = get_window_size(ui)
64 height -= 60
65 config_window(dialog_report, resize=(width, height), show=True)
66
67
68 i_actual_width, i_actual_height = get_window_size(dialog_report)
69 i_actual_height -= I_MENU_BAR_HEIGHT
70 x_scale_factor = i_actual_width / I_DEFAULT_WIN_WIDTH
71 y_scale_factor = i_actual_height / I_DEFAULT_WIN_HEIGHT
72 report_text_width = int((2 / 3) * i_actual_width)
73 btn_width = i_actual_width - report_text_width
74 btn_height = int(i_actual_height / 6)
75 btn_font = ui.model.c_monitor.get_font("report_button", x_scale_factor=x_scale_factor, y_scale_factor=y_scale_factor)
76 lbl_font = ui.model.c_monitor.get_font("report_dialog", x_scale_factor=x_scale_factor, y_scale_factor=y_scale_factor)
77 text_font = ui.model.c_monitor.get_font("report_text", x_scale_factor=x_scale_factor, y_scale_factor=y_scale_factor, font="Consolas")
78
79
80 if report_text is None:
81 s_report_text = ui.model.c_report.s_report_text
82 else:
83 s_report_text = report_text
84 config_text(ui_report.text_report, text=s_report_text,
85 size=(0, 0, report_text_width, i_actual_height), font=text_font)
86
87
88 if report_text is None:
89 label_text = ""
90 if b_clear_report:
91 l_text = ["Report", "Bericht"]
92 else:
93 l_text = ["Interim Status", "Zwischenstand"]
94 label_text += f"{ui.model.c_language.get_language_text(l_text)}" + "\n\n"
95 label_text += ui.model.c_language.get_language_text(["User", "Benutzer"])
96 if user:
97 text = user
98 else:
99 text = ui.model.c_language.get_language_text(L_TOTAL)
100 label_text += f": {text}" + "\n"
101 label_text += ui.model.c_language.get_language_text(L_SUM)
102 label_text += f": {s_total_sum} {S_UNIT_SYMBOL}" + "\n"
103 if b_log_modified:
104 color = "orange"
105 label_text += ui.model.c_language.get_language_text(["\nWarning: \nLog modified!", "\nWarnung: \nLog Modifiziert"])
106 else:
107 color = None
108 else:
109 label_text = ui.model.c_language.get_language_text(L_MENU_ARTICLE_PREVIEW)
110 color = None
111 config_label(ui_report.lbl_summary, text=label_text,
112 size=(report_text_width, 0, btn_width, i_actual_height - (3 * btn_height)),
113 font=lbl_font, fg=color, central=True)
114
115
116 if report_text is None:
117 if out_folder is not None:
118 connect_button(ui_report.btn_open_folder, open_explorer, index=out_folder)
119 open_enable = True
120 else:
121 open_enable = False
122 s_open_folder_btn_text = ui.model.c_language.get_language_text(L_MENU_OPEN_FOLDER)
123 b_show = True
124 else:
125 open_enable = False
126 b_show = False
127 s_open_folder_btn_text = None
128 config_btn(ui_report.btn_open_folder, show=b_show, enable=open_enable, text=s_open_folder_btn_text,
129 size=(report_text_width, i_actual_height - (3 * btn_height), btn_width, btn_height),
130 font=btn_font)
131
132
133 if report_text is None:
134 if b_auto_print:
135 s_print_btn_text = ui.model.c_language.get_language_text(["Print again", "Nochmal Drucken"])
136 else:
137 s_print_btn_text = ui.model.c_language.get_language_text(["Print", "Drucken"])
138 b_printer_enable = bool(ui.model.c_printer.s_select_com_port is not None)
139 b_show = True
140 connect_button(ui_report.btn_print, ui.model.c_printer.add_to_report, index=s_report_text)
141 else:
142 b_printer_enable = False
143 b_show = False
144 s_print_btn_text = None
145 config_btn(ui_report.btn_print, show=b_show, enable=b_printer_enable, text=s_print_btn_text,
146 size=(report_text_width, i_actual_height - (2 * btn_height), btn_width, btn_height),
147 font=btn_font)
148
149
150 s_close_btn_text = ui.model.c_language.get_language_text(["Close", "Schließen"])
151 config_btn(ui_report.btn_close, enable=True, text=s_close_btn_text,
152 size=(report_text_width, i_actual_height - btn_height, btn_width, btn_height),
153 font=btn_font)
154 connect_button(ui_report.btn_close, close_app, index=dialog_report)
155
156 config_window(dialog_report, fix_size=True, show=True)
157
158 run_app(dialog_report, dialog_report)