.. Comment: this file is automatically generated by `update_example_docs.py`. It should not be modified manually. Notifications ========================================== Examples of adding notifications per client in Viser. .. code-block:: python :linenos: import time import viser def main() -> None: server = viser.ViserServer() persistent_notif_button = server.gui.add_button( "Show persistent notification (default)" ) timed_notif_button = server.gui.add_button("Show timed notification") controlled_notif_button = server.gui.add_button("Show controlled notification") loading_notif_button = server.gui.add_button("Show loading notification") remove_controlled_notif = server.gui.add_button("Remove controlled notification") @persistent_notif_button.on_click def _(event: viser.GuiEvent) -> None: """Show persistent notification when the button is clicked.""" client = event.client assert client is not None client.add_notification( title="Persistent notification", body="This can be closed manually and does not disappear on its own!", loading=False, with_close_button=True, auto_close=False, ) @timed_notif_button.on_click def _(event: viser.GuiEvent) -> None: """Show timed notification when the button is clicked.""" client = event.client assert client is not None client.add_notification( title="Timed notification", body="This disappears automatically after 5 seconds!", loading=False, with_close_button=True, auto_close=5000, ) @controlled_notif_button.on_click def _(event: viser.GuiEvent) -> None: """Show controlled notification when the button is clicked.""" client = event.client assert client is not None controlled_notif = client.add_notification( title="Controlled notification", body="This cannot be closed by the user and is controlled in code only!", loading=False, with_close_button=False, auto_close=False, ) @remove_controlled_notif.on_click def _(_) -> None: """Remove controlled notification.""" controlled_notif.remove() @loading_notif_button.on_click def _(event: viser.GuiEvent) -> None: """Show loading notification when the button is clicked.""" client = event.client assert client is not None loading_notif = client.add_notification( title="Loading notification", body="This indicates that some action is in progress! It will be updated in 3 seconds.", loading=True, with_close_button=False, auto_close=False, ) time.sleep(3.0) loading_notif.title = "Updated notification" loading_notif.body = "This notification has been updated!" loading_notif.loading = False loading_notif.with_close_button = True loading_notif.auto_close = 5000 loading_notif.color = "green" while True: time.sleep(1.0) if __name__ == "__main__": main()