summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-04-09 21:51:35 +0200
committerMatthias Beyer <mail@beyermatthias.de>2020-04-11 23:00:46 +0200
commitd55cf9775ed30579a53b2666f5dc13ea4421f463 (patch)
tree7e67e124e84cb990471aadd1f8337beb24d6ef06
parent004519356564d647aec11cba757f1e1b42e7f8df (diff)
fixup! TMP
-rw-r--r--bin/imag-tui/src/lib.rs35
-rw-r--r--bin/imag-tui/src/views/dashboard.rs7
-rw-r--r--bin/imag-tui/src/views/mainview.rs13
-rw-r--r--bin/imag-tui/src/views/statusview.rs10
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"))
})
}
}