pub trait DialogExtManual: 'static {
    // Required methods
    fn add_buttons(&self, buttons: &[(&str, ResponseType)]);
    fn response_for_widget<P: IsA<Widget>>(&self, widget: &P) -> ResponseType;
    fn run_future<'a>(
        &'a self
    ) -> Pin<Box<dyn Future<Output = ResponseType> + 'a>>;
    fn run_async<F: FnOnce(&Self, ResponseType) + 'static>(&self, f: F);
}
Expand description

Trait containing manually implemented methods of Dialog.

Required Methods§

source

fn add_buttons(&self, buttons: &[(&str, ResponseType)])

source

fn response_for_widget<P: IsA<Widget>>(&self, widget: &P) -> ResponseType

source

fn run_future<'a>(&'a self) -> Pin<Box<dyn Future<Output = ResponseType> + 'a>>

Shows the dialog and returns a Future that resolves to the ResponseType on response.

use gtk4::prelude::*;

let dialog = gtk4::MessageDialog::builder()
   .buttons(gtk4::ButtonsType::OkCancel)
   .text("What is your answer?")
   .build();

let answer = dialog.run_future().await;
dialog.close();
println!("Answer: {:?}", answer);
source

fn run_async<F: FnOnce(&Self, ResponseType) + 'static>(&self, f: F)

Shows the dialog and calls the callback when a response has been received.

Important: this function isn’t blocking.

use gtk4::prelude::*;

let dialog = gtk4::MessageDialog::builder()
   .buttons(gtk4::ButtonsType::OkCancel)
   .text("What is your answer?")
   .build();

dialog.run_async(|obj, answer| {
    obj.close();
    println!("Answer: {:?}", answer);
});

Implementors§