diff --git a/examples/tui_color_test.rs b/examples/tui_color_test.rs index 358fae1f6..1a5a67457 100644 --- a/examples/tui_color_test.rs +++ b/examples/tui_color_test.rs @@ -3,9 +3,7 @@ use dioxus::prelude::*; fn main() { dioxus::tui::launch_cfg( app, - dioxus::tui::Config { - rendering_mode: dioxus::tui::RenderingMode::Ansi, - }, + dioxus::tui::Config::default().with_rendering_mode(dioxus::tui::RenderingMode::Ansi), ); } diff --git a/packages/tui/src/config.rs b/packages/tui/src/config.rs index 6e839d8a7..47ec817ee 100644 --- a/packages/tui/src/config.rs +++ b/packages/tui/src/config.rs @@ -1,11 +1,36 @@ #[derive(Clone, Copy)] +#[non_exhaustive] pub struct Config { - pub rendering_mode: RenderingMode, + pub(crate) rendering_mode: RenderingMode, /// Controls if the terminal quit when the user presses `ctrl+c`? /// To handle quiting on your own, use the [crate::TuiContext] root context. - pub ctrl_c_quit: bool, + pub(crate) ctrl_c_quit: bool, /// Controls if the terminal should dislay anything, usefull for testing. - pub headless: bool, + pub(crate) headless: bool, +} + +impl Config { + pub fn new() -> Self { + Self::default() + } + + pub fn with_rendering_mode(self, rendering_mode: RenderingMode) -> Self { + Self { + rendering_mode, + ..self + } + } + + pub fn with_ctrl_c_quit(self, ctrl_c_quit: bool) -> Self { + Self { + ctrl_c_quit, + ..self + } + } + + pub fn with_headless(self, headless: bool) -> Self { + Self { headless, ..self } + } } impl Default for Config {