aboutsummaryrefslogtreecommitdiff
path: root/src/gui/welcome.rs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2023-07-26 09:42:17 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2023-07-26 09:42:17 +0200
commit7679fcc3a0c4fadea00a1a320938851b1518028d (patch)
treeede3c597dbef79f282e7465aeb8652f20bc0515a /src/gui/welcome.rs
parente1cb45be6575c805e3b0ab1e2d03d4047acf88d1 (diff)
add viewmanager
Diffstat (limited to 'src/gui/welcome.rs')
-rw-r--r--src/gui/welcome.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/gui/welcome.rs b/src/gui/welcome.rs
new file mode 100644
index 0000000..3dac0dd
--- /dev/null
+++ b/src/gui/welcome.rs
@@ -0,0 +1,44 @@
+use gtk::prelude::*;
+use super::state::{View, ViewManager};
+use std::rc::Rc;
+
+pub struct Welcome {
+ vm : Rc<ViewManager>
+}
+
+impl View for Welcome {
+ fn name(&self) -> &str {
+ "welcome"
+ }
+
+ fn set_vm(&mut self, vm : Rc<ViewManager>) {
+ 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()) }
+ }
+}