heic2jpg

git clone git://archive.git.mtrnord.blog/MTRNord/heic2jpg.git
Log | Files | Refs | README | LICENSE

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 }