From b83c75770a7a2b7bed90ed1edc7809ba4110120f Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 4 Oct 2026 14:47:13 +0200 Subject: [PATCH] docs: add doctest to notification::add_action --- src/api/notification.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/api/notification.rs b/src/api/notification.rs index 87d747e..53a2ea4 100644 --- a/src/api/notification.rs +++ b/src/api/notification.rs @@ -111,6 +111,8 @@ impl<'a> Notification { /// Add callback to notification. /// + /// This function needs a [glib mainloop](https://docs.gtk.org/glib/main-loop.html) + /// /// # Args /// `action` – action identifier. `default` will work for most use cases. Other text will be /// displayed as button names. @@ -121,6 +123,39 @@ impl<'a> Notification { /// /// # Errors /// This function can return LibnotifyError::NulError + /// + /// # Example + /// ```no_run(There's no notification deamon on CI and no one to click the notification) + /// use glib::MainLoop; + /// use libnotify_rs::{ + /// api::functions::{init, uninit}, + /// api::notification::Notification, + /// }; + /// + /// fn main() -> Result<(), Box> { + /// init("Coffee reminder")?; + /// let mut notify = Notification::new("Drink coffee", "Click me when you're done drinking", None)?; + /// + /// // We need to have a glib main loop in order to receive callback actions + /// let main_loop = MainLoop::new(None, false); + /// let loop_clone = main_loop.clone(); + /// + /// notify.add_action("default", "I'm drinking!", move |action_name| { + /// println!("User drunk his coffee!"); + /// println!("Action was named: {}", action_name); + /// loop_clone.quit(); + /// })?; + /// + /// notify.show()?; + /// main_loop.run(); + /// + /// println!("Glib mainloop has ended"); + /// + /// uninit(); + /// + /// Ok(()) + /// } + /// ``` pub fn add_action( &mut self, action: &str,