26def show_report_dialog(ui:
"MainWindow", b_clear_report: bool =
True, b_auto_print: bool =
False, report_text: Optional[str] =
None) ->
None:
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
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)
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
47 geometry = get_window_geometry(ui)
48 b_light_theme = ui.model.c_monitor.is_light_theme()
49 if report_text
is None:
51 icon = ICON_REPORT_LIGHT
if b_light_theme
else ICON_REPORT_DARK
52 title = L_REPORT_TITLE
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
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)
63 width, height = get_window_size(ui)
65 config_window(dialog_report, resize=(width, height), show=
True)
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")
80 if report_text
is None:
81 s_report_text = ui.model.c_report.s_report_text
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)
88 if report_text
is None:
91 l_text = [
"Report",
"Bericht"]
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"])
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"
105 label_text += ui.model.c_language.get_language_text([
"\nWarning: \nLog modified!",
"\nWarnung: \nLog Modifiziert"])
109 label_text = ui.model.c_language.get_language_text(L_MENU_ARTICLE_PREVIEW)
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)
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)
122 s_open_folder_btn_text = ui.model.c_language.get_language_text(L_MENU_OPEN_FOLDER)
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),
133 if report_text
is None:
135 s_print_btn_text = ui.model.c_language.get_language_text([
"Print again",
"Nochmal Drucken"])
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)
140 connect_button(ui_report.btn_print, ui.model.c_printer.add_to_report, index=s_report_text)
142 b_printer_enable =
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),
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),
154 connect_button(ui_report.btn_close, close_app, index=dialog_report)
156 config_window(dialog_report, fix_size=
True, show=
True)
158 run_app(dialog_report, dialog_report)