def pose_get_string_message_box(ui: UserInterface.UserInterface, message_column: UserInterface.BoxWidget, caption: str, text: str, accepted_fn: typing.Callable[[str], None], rejected_fn: typing.Optional[typing.Callable[[], None]] = None, accepted_text: typing.Optional[str] = None, rejected_text: typing.Optional[str] = None) -> UserInterface.BoxWidget: if accepted_text is None: accepted_text = _("OK") if rejected_text is None: rejected_text = _("Cancel") message_box_widget = ui.create_column_widget() # properties={"stylesheet": "background: #FFD"} caption_row = ui.create_row_widget() caption_row.add_spacing(12) caption_row.add(ui.create_label_widget(caption)) caption_row.add_stretch() inside_row = ui.create_row_widget() def reject_button_clicked() -> typing.Any: if callable(rejected_fn): rejected_fn() return False def accept_button_clicked() -> typing.Any: accepted_fn(string_edit_widget.text or str()) return False string_edit_widget = ui.create_line_edit_widget() string_edit_widget.text = text string_edit_widget.on_return_pressed = accept_button_clicked string_edit_widget.on_escape_pressed = reject_button_clicked reject_button = ui.create_push_button_widget(rejected_text) reject_button.on_clicked = reject_button_clicked accepted_button = ui.create_push_button_widget(accepted_text) accepted_button.on_clicked = accept_button_clicked inside_row.add_spacing(12) inside_row.add(string_edit_widget) inside_row.add_spacing(12) inside_row.add(reject_button) inside_row.add_spacing(12) inside_row.add(accepted_button) inside_row.add_stretch() message_box_widget.add_spacing(6) message_box_widget.add(caption_row) message_box_widget.add_spacing(4) message_box_widget.add(inside_row) message_box_widget.add_spacing(4) message_column.add(message_box_widget) string_edit_widget.select_all() string_edit_widget.focused = True return message_box_widget
def pose_confirmation_message_box(ui: UserInterface.UserInterface, message_column: UserInterface.BoxWidget, caption: str, accepted_fn: typing.Callable[[], None], rejected_fn: typing.Optional[typing.Callable[[], None]] = None, accepted_text: typing.Optional[str] = None, rejected_text: typing.Optional[str] = None, display_rejected: bool = True) -> UserInterface.BoxWidget: if accepted_text is None: accepted_text = _("OK") if rejected_text is None: rejected_text = _("Cancel") message_box_widget = ui.create_column_widget() # properties={"stylesheet": "background: #FFD"} def reject_button_clicked() -> typing.Any: if rejected_fn: rejected_fn() return False def accept_button_clicked() -> typing.Any: accepted_fn() return False reject_button = ui.create_push_button_widget(rejected_text) reject_button.on_clicked = reject_button_clicked accepted_button = ui.create_push_button_widget(accepted_text) accepted_button.on_clicked = accept_button_clicked caption_row = ui.create_row_widget() caption_row.add_spacing(12) caption_row.add(ui.create_label_widget(caption)) if display_rejected: caption_row.add_spacing(12) caption_row.add(reject_button) caption_row.add_spacing(12) caption_row.add(accepted_button) caption_row.add_stretch() message_box_widget.add_spacing(6) message_box_widget.add(caption_row) message_box_widget.add_spacing(4) message_column.add(message_box_widget) return message_box_widget