diff --git a/tui/examples/edn/edn01.edn b/tui/examples/edn/edn01.edn deleted file mode 100644 index 7ff93d1..0000000 --- a/tui/examples/edn/edn01.edn +++ /dev/null @@ -1 +0,0 @@ -:hello-world diff --git a/tui/examples/edn/edn02.edn b/tui/examples/edn/edn02.edn deleted file mode 100644 index 4f352a6..0000000 --- a/tui/examples/edn/edn02.edn +++ /dev/null @@ -1 +0,0 @@ -(bsp/s :hello :world) diff --git a/tui/examples/edn/edn03.edn b/tui/examples/edn/edn03.edn deleted file mode 100644 index 1622275..0000000 --- a/tui/examples/edn/edn03.edn +++ /dev/null @@ -1 +0,0 @@ -(fill/xy :hello-world) diff --git a/tui/examples/edn/edn04.edn b/tui/examples/edn/edn04.edn deleted file mode 100644 index 9393669..0000000 --- a/tui/examples/edn/edn04.edn +++ /dev/null @@ -1 +0,0 @@ -(fixed/xy 20 10 :hello-world) diff --git a/tui/examples/edn/edn05.edn b/tui/examples/edn/edn05.edn deleted file mode 100644 index 90313ad..0000000 --- a/tui/examples/edn/edn05.edn +++ /dev/null @@ -1 +0,0 @@ -(bsp/s (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) diff --git a/tui/examples/edn/edn06.edn b/tui/examples/edn/edn06.edn deleted file mode 100644 index e35abf0..0000000 --- a/tui/examples/edn/edn06.edn +++ /dev/null @@ -1 +0,0 @@ -(bsp/e (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) diff --git a/tui/examples/edn/edn07.edn b/tui/examples/edn/edn07.edn deleted file mode 100644 index 7370353..0000000 --- a/tui/examples/edn/edn07.edn +++ /dev/null @@ -1 +0,0 @@ -(bsp/n (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) diff --git a/tui/examples/edn/edn08.edn b/tui/examples/edn/edn08.edn deleted file mode 100644 index afcde46..0000000 --- a/tui/examples/edn/edn08.edn +++ /dev/null @@ -1 +0,0 @@ -(bsp/w (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) diff --git a/tui/examples/edn/edn09.edn b/tui/examples/edn/edn09.edn deleted file mode 100644 index 3ced769..0000000 --- a/tui/examples/edn/edn09.edn +++ /dev/null @@ -1 +0,0 @@ -(bsp/a (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) diff --git a/tui/examples/edn/edn10.edn b/tui/examples/edn/edn10.edn deleted file mode 100644 index 07af31e..0000000 --- a/tui/examples/edn/edn10.edn +++ /dev/null @@ -1 +0,0 @@ -(bsp/b (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) diff --git a/tui/examples/edn/edn11.edn b/tui/examples/edn/edn11.edn deleted file mode 100644 index 1c47cb5..0000000 --- a/tui/examples/edn/edn11.edn +++ /dev/null @@ -1,11 +0,0 @@ -(bsp/s - (bsp/e (align/nw (fixed/xy 5 3 :hello)) - (bsp/e (align/n (fixed/xy 5 3 :hello)) - (align/ne (fixed/xy 5 3 :hello)))) - (bsp/s - (bsp/e (align/w (fixed/xy 5 3 :hello)) - (bsp/e (align/c (fixed/xy 5 3 :hello)) - (align/e (fixed/xy 5 3 :hello)))) - (bsp/e (align/sw (fixed/xy 5 3 :hello)) - (bsp/e (align/s (fixed/xy 5 3 :hello)) - (align/se (fixed/xy 5 3 :hello)))))) diff --git a/tui/examples/edn/edn12.edn b/tui/examples/edn/edn12.edn deleted file mode 100644 index 26e3f5f..0000000 --- a/tui/examples/edn/edn12.edn +++ /dev/null @@ -1,11 +0,0 @@ -(bsp/s - (bsp/e (fixed/xy 8 5 (align/nw :hello)) - (bsp/e (fixed/xy 8 5 (align/n :hello)) - (fixed/xy 8 5 (align/ne :hello)))) - (bsp/s - (bsp/e (fixed/xy 8 5 (align/w :hello)) - (bsp/e (fixed/xy 8 5 (align/c :hello)) - (fixed/xy 8 5 (align/e :hello)))) - (bsp/e (fixed/xy 8 5 (align/sw :hello)) - (bsp/e (fixed/xy 8 5 (align/s :hello)) - (fixed/xy 8 5 (align/se :hello)))))) diff --git a/tui/examples/edn/edn13.edn b/tui/examples/edn/edn13.edn deleted file mode 100644 index 8fe81c3..0000000 --- a/tui/examples/edn/edn13.edn +++ /dev/null @@ -1,11 +0,0 @@ -(bsp/s - (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/nw :hello))) - (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/n :hello))) - (grow/xy 1 1 (fixed/xy 8 5 (align/ne :hello))))) - (bsp/s - (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/w :hello))) - (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/c :hello))) - (grow/xy 1 1 (fixed/xy 8 5 (align/e :hello))))) - (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/sw :hello))) - (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/s :hello))) - (grow/xy 1 1 (fixed/xy 8 5 (align/se :hello))))))) diff --git a/tui/examples/edn/edn14.edn b/tui/examples/edn/edn14.edn deleted file mode 100644 index 7aab387..0000000 --- a/tui/examples/edn/edn14.edn +++ /dev/null @@ -1 +0,0 @@ -:map-e diff --git a/tui/examples/edn/edn15.edn b/tui/examples/edn/edn15.edn deleted file mode 100644 index ddd4d58..0000000 --- a/tui/examples/edn/edn15.edn +++ /dev/null @@ -1 +0,0 @@ -(align/c :map-e) diff --git a/tui/examples/edn/edn16.edn b/tui/examples/edn/edn16.edn deleted file mode 100644 index 9c6b9ad..0000000 --- a/tui/examples/edn/edn16.edn +++ /dev/null @@ -1 +0,0 @@ -:map-s diff --git a/tui/examples/edn/edn17.edn b/tui/examples/edn/edn17.edn deleted file mode 100644 index efd092f..0000000 --- a/tui/examples/edn/edn17.edn +++ /dev/null @@ -1 +0,0 @@ -(align/c :map-s) diff --git a/tui/examples/edn/edn99.edn b/tui/examples/edn/edn99.edn deleted file mode 100644 index 933db8c..0000000 --- a/tui/examples/edn/edn99.edn +++ /dev/null @@ -1,73 +0,0 @@ -(align/c (bg/behind :bg0 (margin/xy 1 1 (col - (bg/behind :bg1 (border/around :border1 (margin/xy 2 1 :label1))) - (bg/behind :bg2 (border/around :border2 (margin/xy 4 2 :label2))) - (bg/behind :bg3 (border/around :border3 (margin/xy 6 3 :label3))))))) - - fn content (&self) -> dyn Draw { - let border_style = Style::default().fg(Color::Rgb(0,0,0)); - Align::Center(Layers::new(move|add|{ - - add(&Background(Color::Rgb(0,128,128)))?; - - add(&Margin::XY(1, 1, Stack::down(|add|{ - - add(&Layers::new(|add|{ - add(&Background(Color::Rgb(128,96,0)))?; - add(&Border(Square(border_style)))?; - add(&Margin::XY(2, 1, "..."))?; - Ok(()) - }).debug())?; - - add(&Layers::new(|add|{ - add(&Background(Color::Rgb(128,64,0)))?; - add(&Border(Lozenge(border_style)))?; - add(&Margin::XY(4, 2, "---"))?; - Ok(()) - }).debug())?; - - add(&Layers::new(|add|{ - add(&Background(Color::Rgb(96,64,0)))?; - add(&Border(SquareBold(border_style)))?; - add(&Margin::XY(6, 3, "~~~"))?; - Ok(()) - }).debug())?; - - Ok(()) - })).debug())?; - - Ok(()) - - })) - //Align::Center(Margin::X(1, Layers::new(|add|{ - //add(&Background(Color::Rgb(128,0,0)))?; - //add(&Stack::down(|add|{ - //add(&Margin::Y(1, Layers::new(|add|{ - //add(&Background(Color::Rgb(0,128,0)))?; - //add(&Align::Center("12345"))?; - //add(&Align::Center("FOO")) - //})))?; - //add(&Margin::XY(1, 1, Layers::new(|add|{ - //add(&Align::Center("1234567"))?; - //add(&Align::Center("BAR"))?; - //add(&Background(Color::Rgb(0,0,128))) - //}))) - //})) - //}))) - - //Align::Y(Layers::new(|add|{ - //add(&Background(Color::Rgb(128,0,0)))?; - //add(&Margin::X(1, Align::Center(Stack::down(|add|{ - //add(&Align::X(Margin::Y(1, Layers::new(|add|{ - //add(&Background(Color::Rgb(0,128,0)))?; - //add(&Align::Center("12345"))?; - //add(&Align::Center("FOO")) - //})))?; - //add(&Margin::XY(1, 1, Layers::new(|add|{ - //add(&Align::Center("1234567"))?; - //add(&Align::Center("BAR"))?; - //add(&Background(Color::Rgb(0,0,128))) - //})))?; - //Ok(()) - //}))))) - //})) - } diff --git a/tui/examples/tui.rs b/tui/examples/tui.rs index 323dc9b..2cc35b5 100644 --- a/tui/examples/tui.rs +++ b/tui/examples/tui.rs @@ -1,36 +1,102 @@ use tengri::{self, Usually, Perhaps, input::*, output::*, tui::*, dsl::*}; use std::sync::{Arc, RwLock}; -//use crossterm::event::{*, KeyCode::*}; use crate::ratatui::style::Color; +//use crossterm::event::{*, KeyCode::*}; fn main () -> Usually<()> { - let state = Arc::new(RwLock::new(Example(10, Measure::new()))); + let state = Example::new(); Tui::new().unwrap().run(&state)?; Ok(()) } -#[derive(Debug)] pub struct Example(usize, Measure); +#[derive(Debug)] pub struct Example( + usize, + Measure +); -const KEYMAP: &str = "(@left prev) (@right next)"; -const EXAMPLES: &'static [&'static str] = &[ - include_str!("edn/edn01.edn"), - include_str!("edn/edn02.edn"), - include_str!("edn/edn03.edn"), - include_str!("edn/edn04.edn"), - include_str!("edn/edn05.edn"), - include_str!("edn/edn06.edn"), - include_str!("edn/edn07.edn"), - include_str!("edn/edn08.edn"), - include_str!("edn/edn09.edn"), - include_str!("edn/edn10.edn"), - include_str!("edn/edn11.edn"), - include_str!("edn/edn12.edn"), - //include_str!("edn/edn13.edn"), - include_str!("edn/edn14.edn"), - include_str!("edn/edn15.edn"), - include_str!("edn/edn16.edn"), - include_str!("edn/edn17.edn"), -]; +impl Example { + fn new () -> Arc> { + Arc::new(RwLock::new(Example(10, Measure::new()))) + } + const BINDS: &'static str = stringify! { + (@left prev) + (@right next) + }; + const VIEWS: &'static [&'static str] = &[ + stringify! { :hello-world }, + stringify! { (fill/xy :hello-world) }, + stringify! { (bsp/s :hello :world) }, + stringify! { (fixed/xy 20 10 :hello-world) }, + stringify! { (bsp/s (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) }, + stringify! { (bsp/e (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) }, + stringify! { (bsp/n (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) }, + stringify! { (bsp/w (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) }, + stringify! { (bsp/a (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) }, + stringify! { (bsp/b (fixed/xy 5 6 :hello) (fixed/xy 7 8 :world)) }, + stringify! { + (bsp/s + (bsp/e (align/nw (fixed/xy 5 3 :hello)) + (bsp/e (align/n (fixed/xy 5 3 :hello)) + (align/ne (fixed/xy 5 3 :hello)))) + (bsp/s + (bsp/e (align/w (fixed/xy 5 3 :hello)) + (bsp/e (align/c (fixed/xy 5 3 :hello)) + (align/e (fixed/xy 5 3 :hello)))) + (bsp/e (align/sw (fixed/xy 5 3 :hello)) + (bsp/e (align/s (fixed/xy 5 3 :hello)) + (align/se (fixed/xy 5 3 :hello)))))) + }, + stringify! { + (bsp/s + (bsp/e (fixed/xy 8 5 (align/nw :hello)) + (bsp/e (fixed/xy 8 5 (align/n :hello)) + (fixed/xy 8 5 (align/ne :hello)))) + (bsp/s + (bsp/e (fixed/xy 8 5 (align/w :hello)) + (bsp/e (fixed/xy 8 5 (align/c :hello)) + (fixed/xy 8 5 (align/e :hello)))) + (bsp/e (fixed/xy 8 5 (align/sw :hello)) + (bsp/e (fixed/xy 8 5 (align/s :hello)) + (fixed/xy 8 5 (align/se :hello)))))) + }, + stringify! { + (bsp/s + (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/nw :hello))) + (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/n :hello))) + (grow/xy 1 1 (fixed/xy 8 5 (align/ne :hello))))) + (bsp/s + (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/w :hello))) + (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/c :hello))) + (grow/xy 1 1 (fixed/xy 8 5 (align/e :hello))))) + (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/sw :hello))) + (bsp/e (grow/xy 1 1 (fixed/xy 8 5 (align/s :hello))) + (grow/xy 1 1 (fixed/xy 8 5 (align/se :hello))))))) + }, + stringify! { :map-e }, + stringify! { (align/c :map-e) }, + stringify! { :map-s }, + stringify! { (align/c :map-s) }, + stringify! { + (align/c (bg/behind :bg0 (margin/xy 1 1 (col + (bg/behind :bg1 (border/around :border1 (margin/xy 2 1 :label1))) + (bg/behind :bg2 (border/around :border2 (margin/xy 4 2 :label2))) + (bg/behind :bg3 (border/around :border3 (margin/xy 6 3 :label3))))))) + }, + ]; +} + +tui_draw!(|self: Example, to|to.place(&self.content())); + +content!(TuiOut: |self: Example|{ + let index = self.0 + 1; + let wh = self.1.wh(); + let src = EXAMPLES.get(self.0).unwrap_or(&""); + let heading = format!("Example {}/{} in {:?}", index, EXAMPLES.len(), &wh); + let title = Tui::bg(Color::Rgb(60, 10, 10), Push::y(1, Align::n(heading))); + let code = Tui::bg(Color::Rgb(10, 60, 10), Push::y(2, Align::n(format!("{}", src)))); + let content = ();//Tui::bg(Color::Rgb(10, 10, 60), View(self, CstIter::new(src))); + self.1.of(Bsp::s(title, Bsp::n(""/*code*/, content))) +}); handle!(TuiIn: |self: Example, input|{ Ok(None)/*if let Some(command) = CstIter::new(KEYMAP).command::<_, ExampleCommand, _>(self, input) { @@ -63,18 +129,6 @@ impl ExampleCommand { } } -tui_draw!(|self: Example, to|to.place(&self.content())); -content!(TuiOut: |self: Example|{ - let index = self.0 + 1; - let wh = self.1.wh(); - let src = EXAMPLES.get(self.0).unwrap_or(&""); - let heading = format!("Example {}/{} in {:?}", index, EXAMPLES.len(), &wh); - let title = Tui::bg(Color::Rgb(60, 10, 10), Push::y(1, Align::n(heading))); - let code = Tui::bg(Color::Rgb(10, 60, 10), Push::y(2, Align::n(format!("{}", src)))); - let content = ();//Tui::bg(Color::Rgb(10, 10, 60), View(self, CstIter::new(src))); - self.1.of(Bsp::s(title, Bsp::n(""/*code*/, content))) -}); - //#[tengri_proc::view(TuiOut)] //impl Example { //pub fn title (&self) -> impl Draw + use<'_> { @@ -99,3 +153,74 @@ content!(TuiOut: |self: Example|{ //Map::south(5u16, ||0..5u16, |n, _i|format!("{n}")).boxed() //} //} +/* + + fn content (&self) -> dyn Draw { + let border_style = Style::default().fg(Color::Rgb(0,0,0)); + Align::Center(Layers::new(move|add|{ + + add(&Background(Color::Rgb(0,128,128)))?; + + add(&Margin::XY(1, 1, Stack::down(|add|{ + + add(&Layers::new(|add|{ + add(&Background(Color::Rgb(128,96,0)))?; + add(&Border(Square(border_style)))?; + add(&Margin::XY(2, 1, "..."))?; + Ok(()) + }).debug())?; + + add(&Layers::new(|add|{ + add(&Background(Color::Rgb(128,64,0)))?; + add(&Border(Lozenge(border_style)))?; + add(&Margin::XY(4, 2, "---"))?; + Ok(()) + }).debug())?; + + add(&Layers::new(|add|{ + add(&Background(Color::Rgb(96,64,0)))?; + add(&Border(SquareBold(border_style)))?; + add(&Margin::XY(6, 3, "~~~"))?; + Ok(()) + }).debug())?; + + Ok(()) + })).debug())?; + + Ok(()) + + })) + //Align::Center(Margin::X(1, Layers::new(|add|{ + //add(&Background(Color::Rgb(128,0,0)))?; + //add(&Stack::down(|add|{ + //add(&Margin::Y(1, Layers::new(|add|{ + //add(&Background(Color::Rgb(0,128,0)))?; + //add(&Align::Center("12345"))?; + //add(&Align::Center("FOO")) + //})))?; + //add(&Margin::XY(1, 1, Layers::new(|add|{ + //add(&Align::Center("1234567"))?; + //add(&Align::Center("BAR"))?; + //add(&Background(Color::Rgb(0,0,128))) + //}))) + //})) + //}))) + + //Align::Y(Layers::new(|add|{ + //add(&Background(Color::Rgb(128,0,0)))?; + //add(&Margin::X(1, Align::Center(Stack::down(|add|{ + //add(&Align::X(Margin::Y(1, Layers::new(|add|{ + //add(&Background(Color::Rgb(0,128,0)))?; + //add(&Align::Center("12345"))?; + //add(&Align::Center("FOO")) + //})))?; + //add(&Margin::XY(1, 1, Layers::new(|add|{ + //add(&Align::Center("1234567"))?; + //add(&Align::Center("BAR"))?; + //add(&Background(Color::Rgb(0,0,128))) + //})))?; + //Ok(()) + //}))))) + //})) + } +*/