finished_page.rs (1756B)
1 use gettextrs::gettext; 2 use relm4::{ 3 adw, 4 gtk::{ 5 self, 6 prelude::{BoxExt, ButtonExt, OrientableExt, WidgetExt}, 7 }, 8 ComponentParts, ComponentSender, SimpleComponent, 9 }; 10 11 pub struct FinishedPage; 12 13 #[derive(Debug)] 14 pub enum FinishedPageMsg { 15 StartOver, 16 Quit, 17 } 18 19 #[relm4::component(pub)] 20 impl SimpleComponent for FinishedPage { 21 type Init = (); 22 type Input = (); 23 type Output = FinishedPageMsg; 24 25 view! { 26 adw::StatusPage { 27 set_hexpand: true, 28 set_vexpand: true, 29 set_title: &gettext("Conversion Complete"), 30 set_description: Some(&gettext("The conversion was successful")), 31 set_icon_name: Some("test-pass"), 32 gtk::Box { 33 set_halign: gtk::Align::Center, 34 set_orientation: gtk::Orientation::Horizontal, 35 set_spacing: 24, 36 37 gtk::Button { 38 set_label: "Close", 39 add_css_class: "suggested-action", 40 add_css_class: "pill", 41 connect_clicked[sender] => move |_| { 42 let _ = sender.output(FinishedPageMsg::Quit); 43 } 44 }, 45 gtk::Button { 46 set_label: "Restart", 47 connect_clicked[sender] => move |_| { 48 let _ = sender.output(FinishedPageMsg::StartOver); 49 } 50 } 51 } 52 } 53 } 54 55 fn init( 56 _init: Self::Init, 57 root: Self::Root, 58 sender: ComponentSender<Self>, 59 ) -> ComponentParts<Self> { 60 let model = Self {}; 61 62 let widgets = view_output!(); 63 ComponentParts { model, widgets } 64 } 65 }