1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
// Take a look at the license at the top of the repository in the LICENSE file.
use crate::{InfoBar, ResponseType};
impl InfoBar {
/// Creates a new [`InfoBar`][crate::InfoBar] with buttons.
///
/// Button text/response ID pairs should be listed, with a [`None`] pointer
/// ending the list. A response ID can be any positive number,
/// or one of the values in the [`ResponseType`][crate::ResponseType] enumeration. If the
/// user clicks one of these dialog buttons, GtkInfoBar will emit
/// the `signal::InfoBar::response` signal with the corresponding
/// response ID.
/// ## `first_button_text`
/// ext to go in first button
///
/// # Returns
///
/// a new [`InfoBar`][crate::InfoBar]
#[doc(alias = "gtk_info_bar_new_with_buttons")]
#[doc(alias = "new_with_buttons")]
pub fn with_buttons(buttons: &[(&str, ResponseType)]) -> Self {
assert_initialized_main_thread!();
let info_bar = InfoBar::new();
info_bar.add_buttons(buttons);
info_bar
}
/// Adds multiple buttons.
///
/// This is the same as calling [``add_button()``][`Self::add_button()`]
/// repeatedly. The variable argument list should be [`None`]-terminated
/// as with [``with_buttons()``][`Self::with_buttons()`]. Each button must have both
/// text and response ID.
/// ## `first_button_text`
/// button text
#[doc(alias = "gtk_info_bar_add_buttons")]
pub fn add_buttons(&self, buttons: &[(&str, ResponseType)]) {
for &(text, id) in buttons {
self.add_button(text, id);
}
}
}