use gtk::prelude::*; use super::state::{View, ViewManager}; use std::rc::Rc; pub struct Welcome { vm : Rc } impl View for Welcome { fn name(&self) -> &str { "welcome" } fn set_vm(&mut self, vm : Rc) { self.vm = vm } fn make_current(&self) -> gtk::Box { let center = gtk::Box::new(gtk::Orientation::Vertical, 10); let main = gtk::Box::new(gtk::Orientation::Horizontal, 10); let gen_button = gtk::Button::with_label("Generate"); let merge_button = gtk::Button::with_label("Merge"); let load_button = gtk::Button::with_label("Load"); main.pack_start(&gen_button, true, false, 10); main.pack_start(&merge_button, true, false, 10); main.pack_start(&load_button, true, false, 10); center.pack_start(&main, true, false, 0); let vm = Rc::clone(&self.vm); gen_button.connect_clicked(move |_| { vm.set_current_view("generate"); }); center } } impl Welcome { pub fn new() -> Self { Self { vm : Rc::new(ViewManager::empty()) } } }