diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-04-09 21:51:35 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-04-11 23:00:46 +0200 |
commit | d55cf9775ed30579a53b2666f5dc13ea4421f463 (patch) | |
tree | 7e67e124e84cb990471aadd1f8337beb24d6ef06 | |
parent | 004519356564d647aec11cba757f1e1b42e7f8df (diff) |
fixup! TMP
-rw-r--r-- | bin/imag-tui/src/lib.rs | 35 | ||||
-rw-r--r-- | bin/imag-tui/src/views/dashboard.rs | 7 | ||||
-rw-r--r-- | bin/imag-tui/src/views/mainview.rs | 13 | ||||
-rw-r--r-- | bin/imag-tui/src/views/statusview.rs | 10 |
4 files changed, 49 insertions, 16 deletions
diff --git a/bin/imag-tui/src/lib.rs b/bin/imag-tui/src/lib.rs index 45d3c629..1de4dd84 100644 --- a/bin/imag-tui/src/lib.rs +++ b/bin/imag-tui/src/lib.rs @@ -44,13 +44,46 @@ use libimagrt::application::ImagApplication; mod ui; mod views; -use views::mainview::MainView; +use crate::views::mainview::MainView; +use cursive::views::Dialog; +use cursive::menu::MenuTree; +use cursive::With; pub enum ImagTui {} impl ImagApplication for ImagTui { fn run(rt: Runtime) -> Result<()> { let mut siv = Cursive::default(); siv.add_layer(MainView::new(rt.extract_store())); + siv.menubar() + .add_subtree("File", + MenuTree::new() + .leaf("New", |s| s.add_layer(Dialog::info("New file!"))) + .subtree("Recent", MenuTree::new().with(|tree| { + for i in 1..100 { + tree.add_leaf(format!("Item{}",i), |_| ()) + } + })) + .delimiter() + .with(|tree| { + for i in 1..10 { + tree.add_leaf(format!("Option{}",i), |_| ()); + } + }) + .delimiter() + .leaf("Quit", |s| s.quit())) + .add_subtree("Help", + MenuTree::new() + .subtree("Help", + MenuTree::new() + .leaf("General", |s| { + s.add_layer(Dialog::info("Help message!")) + }) + .leaf("Online", |s| { + s.add_layer(Dialog::info("Online help?")) + })) + .leaf("About", + |s| s.add_layer(Dialog::info("Cursive v0.0.0")))); + siv.run(); Ok(()) } diff --git a/bin/imag-tui/src/views/dashboard.rs b/bin/imag-tui/src/views/dashboard.rs index c52dacb4..4d1c0c19 100644 --- a/bin/imag-tui/src/views/dashboard.rs +++ b/bin/imag-tui/src/views/dashboard.rs @@ -20,21 +20,22 @@ use std::sync::Arc; use cursive::view::View; +use cursive::views::TextArea; use cursive::Printer; use libimagstore::store::Store; -pub struct Dashboard(Arc<Store>); +pub struct Dashboard(Arc<Store>, TextArea); impl Dashboard { pub fn new(store: Arc<Store>) -> Self { - Dashboard(store) + Dashboard(store, TextArea::new().content("Dummy text")) } } impl View for Dashboard { fn draw(&self, printer: &Printer) { - // empty + self.1.draw(printer) } } diff --git a/bin/imag-tui/src/views/mainview.rs b/bin/imag-tui/src/views/mainview.rs index 4b8de92a..65613dbb 100644 --- a/bin/imag-tui/src/views/mainview.rs +++ b/bin/imag-tui/src/views/mainview.rs @@ -21,8 +21,10 @@ use std::sync::Arc; use cursive::views::LinearLayout; use cursive::views::NamedView; +use cursive::views::Panel; use cursive::view::View; use cursive::Printer; +use cursive::view::Nameable; use libimagstore::store::Store; @@ -35,13 +37,12 @@ impl MainView { pub fn new(store: Store) -> NamedView<Self> { let store = Arc::new(store); - NamedView::<MainView>::new("Main", MainView(store.clone(), { + MainView(store.clone(), { LinearLayout::horizontal() - .child(NamedView::<Dashboard>::new("Dashboard", Dashboard::new(store.clone()))) - .child(NamedView::<StatusView>::new("NamedView", { - StatusView::new(store.clone()) - })) - })) + .child(Panel::new(Dashboard::new(store.clone()).with_name("Dashboard"))) + .child(Panel::new(StatusView::new(store.clone()).with_name("Status"))) + }) + .with_name("Main") } } diff --git a/bin/imag-tui/src/views/statusview.rs b/bin/imag-tui/src/views/statusview.rs index dc119166..b34a57d6 100644 --- a/bin/imag-tui/src/views/statusview.rs +++ b/bin/imag-tui/src/views/statusview.rs @@ -25,7 +25,8 @@ use cursive::views::EditView; use cursive::views::ResizedView; use cursive::views::TextView; use cursive::view::View; -use cursive::theme::ColorStyle; +//use cursive::theme::ColorStyle; +use cursive::view::Boxable; use cursive::Printer; use cursive::view::SizeConstraint; @@ -67,11 +68,8 @@ impl CurrentStatusView { fn new() -> Self { CurrentStatusView::Standard({ LinearLayout::vertical() - .child(Layer::with_color({ - let mut rv = ResizedView::with_max_width(12, TextView::new("[imag]")); - rv.set_width(SizeConstraint::Free); - rv - }, ColorStyle::title_primary())) + .child(TextView::new("[imag]").resized(SizeConstraint::AtMost(12), SizeConstraint::AtMost(4))) + .child(TextView::new("Dummy")) }) } } |