From 71660418a1b331e83ed45c36b24e3c0f728f2e97 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Tue, 29 Jul 2025 19:42:56 +0200 Subject: [PATCH] prelude and transform macro --- src/elements/mod.rs | 3 +++ src/extensions/mod.rs | 5 +++++ src/lib.rs | 9 +++++++++ src/macros.rs | 9 +++++++++ src/main.rs | 11 ++--------- src/style.rs | 12 ++++++++++++ 6 files changed, 40 insertions(+), 9 deletions(-) diff --git a/src/elements/mod.rs b/src/elements/mod.rs index 89c0023..8ea79e0 100644 --- a/src/elements/mod.rs +++ b/src/elements/mod.rs @@ -1,6 +1,9 @@ pub mod div; pub mod flex; +pub use div::*; +pub use flex::*; + use crate::Element; impl Element for String { diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index 0bc0e5b..3d19d81 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -3,6 +3,11 @@ pub mod resources; pub mod tick; pub mod velocity; +pub use id::*; +pub use resources::*; +pub use tick::*; +pub use velocity::*; + use std::{ any::{type_name, Any}, fmt::Debug, diff --git a/src/lib.rs b/src/lib.rs index 43bebf4..6552912 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,6 +16,15 @@ pub mod style; pub mod utils; pub mod widget; +pub mod prelude { + pub use crate::{ + elements::*, extensions::*, frontend::*, render_scope::*, state::*, style::*, utils::*, + widget::*, *, + }; + + pub use crate::style::{Dimension::{Full, Content}, Position::{Center, End}}; +} + pub struct Screen { pub widgets: Mutex>>, extensions: Mutex>>>>, diff --git a/src/macros.rs b/src/macros.rs index 3285798..12f045d 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -123,6 +123,15 @@ macro_rules! event_handler { }}; } +#[macro_export] +macro_rules! transform { + ($($f:ident: $v:expr),* $(,)?) => {{ + let mut t = Transform::new(); + $(t.$f = $v.into();)* + t + }}; +} + #[macro_export] macro_rules! rsx { ($($inner:tt)*) => {{ diff --git a/src/main.rs b/src/main.rs index c884775..feeac18 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,4 @@ -use osui::{ - elements::{div::Div, flex::FlexCol}, - frontend::Rsx, - rsx, - state::use_state, - style::Transform, - Screen, -}; +use osui::prelude::*; fn main() -> std::io::Result<()> { let screen = Screen::new(); @@ -39,7 +32,7 @@ fn test(inc: i32) -> Rsx { rsx! { @Transform::new().dimensions(40, 3); Div { - @Transform::center().dimensions(8, 1); + @transform! { x: Center, y: Center, width: 5 }; Div { %count "{count}" diff --git a/src/style.rs b/src/style.rs index a255b54..a59fe22 100644 --- a/src/style.rs +++ b/src/style.rs @@ -139,3 +139,15 @@ impl Position { } } } + +impl From for Position { + fn from(value: u16) -> Self { + Self::Const(value) + } +} + +impl From for Dimension { + fn from(value: u16) -> Self { + Self::Const(value) + } +}