ui: make confirm callback required for confirmation dialog (#37585)

* always required!

* reoreder

* reorder again

* make required so better order

* not clear better
This commit is contained in:
Shane Smiskol
2026-03-06 21:36:43 -08:00
committed by GitHub
parent 2f1a58f991
commit fd98db72ab
7 changed files with 15 additions and 24 deletions

View File

@@ -220,15 +220,14 @@ class TrainingGuideRecordFront(NavScroller):
ui_state.params.put_bool_nonblocking("RecordFront", True)
continue_callback()
gui_app.push_widget(BigConfirmationDialog("allow data uploading", "icons_mici/setup/driver_monitoring/dm_check.png", exit_on_confirm=False,
confirm_callback=on_accept))
gui_app.push_widget(BigConfirmationDialog("allow data uploading", "icons_mici/setup/driver_monitoring/dm_check.png", on_accept, exit_on_confirm=False))
def show_decline_dialog():
def on_decline():
ui_state.params.put_bool_nonblocking("RecordFront", False)
continue_callback()
gui_app.push_widget(BigConfirmationDialog("no, don't upload", "icons_mici/setup/cancel.png", exit_on_confirm=False, confirm_callback=on_decline))
gui_app.push_widget(BigConfirmationDialog("no, don't upload", "icons_mici/setup/cancel.png", on_decline, exit_on_confirm=False))
self._accept_button = BigCircleButton("icons_mici/setup/driver_monitoring/dm_check.png")
self._accept_button.set_click_callback(show_accept_dialog)
@@ -324,12 +323,11 @@ class TermsPage(Scroller):
super().__init__()
def show_accept_dialog():
gui_app.push_widget(BigConfirmationDialog("accept\nterms", "icons_mici/setup/driver_monitoring/dm_check.png",
confirm_callback=on_accept))
gui_app.push_widget(BigConfirmationDialog("accept\nterms", "icons_mici/setup/driver_monitoring/dm_check.png", on_accept))
def show_decline_dialog():
gui_app.push_widget(BigConfirmationDialog("decline &\nuninstall", "icons_mici/setup/cancel.png",
red=True, exit_on_confirm=False, confirm_callback=on_decline))
gui_app.push_widget(BigConfirmationDialog("decline &\nuninstall", "icons_mici/setup/cancel.png", on_decline,
red=True, exit_on_confirm=False))
self._accept_button = BigCircleButton("icons_mici/setup/driver_monitoring/dm_check.png")
self._accept_button.set_click_callback(show_accept_dialog)

View File

@@ -85,9 +85,8 @@ def _engaged_confirmation_callback(callback: Callable, action_text: str):
# TODO: check
icon = "icons_mici/settings/comma_icon.png"
dlg: BigConfirmationDialog | BigDialog = BigConfirmationDialog(f"slide to\n{action_text.lower()}", icon, red=red,
exit_on_confirm=action_text == "reset",
confirm_callback=confirm_callback)
dlg: BigConfirmationDialog | BigDialog = BigConfirmationDialog(f"slide to\n{action_text.lower()}", icon, confirm_callback,
red=red, exit_on_confirm=action_text == "reset")
gui_app.push_widget(dlg)
else:
dlg = BigDialog(f"Disengage to {action_text}", "")

View File

@@ -246,8 +246,7 @@ class ForgetButton(Widget):
def _handle_mouse_release(self, mouse_pos: MousePos):
super()._handle_mouse_release(mouse_pos)
dlg = BigConfirmationDialog("slide to forget", "icons_mici/settings/network/new/trash.png", red=True,
confirm_callback=self._forget_network)
dlg = BigConfirmationDialog("slide to forget", "icons_mici/settings/network/new/trash.png", self._forget_network, red=True)
gui_app.push_widget(dlg)
def _render(self, _):

View File

@@ -72,7 +72,7 @@ def test_dialogs_do_not_leak():
lambda: MiciTrainingGuide(lambda: None),
lambda: MiciOnboardingWindow(lambda: None),
lambda: BigDialog("test", "test"),
lambda: BigConfirmationDialog("test", "icons_mici/settings/network/new/trash.png"),
lambda: BigConfirmationDialog("test", "icons_mici/settings/network/new/trash.png", lambda: None),
lambda: BigInputDialog("test"),
lambda: MiciFccModal(text="test"),
# tici

View File

@@ -64,9 +64,8 @@ class BigDialog(BigDialogBase):
class BigConfirmationDialog(BigDialogBase):
def __init__(self, title: str, icon: str, red: bool = False,
exit_on_confirm: bool = True,
confirm_callback: Callable | None = None):
def __init__(self, title: str, icon: str, confirm_callback: Callable[[], None],
exit_on_confirm: bool = True, red: bool = False):
super().__init__()
self._confirm_callback = confirm_callback
self._exit_on_confirm = exit_on_confirm

View File

@@ -71,18 +71,15 @@ class Reset(Scroller):
self._reset_failed_page = ResetFailedPage()
def show_confirm_dialog():
dialog = BigConfirmationDialog("erase\ndevice", "icons_mici/settings/device/uninstall.png", red=True,
confirm_callback=self.start_reset)
dialog = BigConfirmationDialog("erase\ndevice", "icons_mici/settings/device/uninstall.png", self.start_reset, red=True)
gui_app.push_widget(dialog)
def show_cancel_dialog():
dialog = BigConfirmationDialog("normal\nstartup", "icons_mici/settings/device/reboot.png",
exit_on_confirm=False, confirm_callback=gui_app.request_close)
dialog = BigConfirmationDialog("normal\nstartup", "icons_mici/settings/device/reboot.png", gui_app.request_close, exit_on_confirm=False)
gui_app.push_widget(dialog)
def show_reboot_dialog():
dialog = BigConfirmationDialog("reboot\ndevice", "icons_mici/settings/device/reboot.png",
exit_on_confirm=False, confirm_callback=HARDWARE.reboot)
dialog = BigConfirmationDialog("reboot\ndevice", "icons_mici/settings/device/reboot.png", HARDWARE.reboot, exit_on_confirm=False)
gui_app.push_widget(dialog)
self._reset_button = BigCircleButton("icons_mici/settings/device/uninstall.png", red=True)

View File

@@ -248,8 +248,7 @@ class FailedPage(NavScroller):
self.set_back_callback(retry_callback)
def show_reboot_dialog():
dialog = BigConfirmationDialog("slide to reboot", "icons_mici/settings/device/reboot.png",
exit_on_confirm=False, confirm_callback=HARDWARE.reboot)
dialog = BigConfirmationDialog("slide to reboot", "icons_mici/settings/device/reboot.png", HARDWARE.reboot, exit_on_confirm=False)
gui_app.push_widget(dialog)
reboot_button = BigCircleButton("icons_mici/settings/device/reboot.png", red=False, icon_size=(64, 70))