Rsx
Rsx
is a declarative way to define the UI in OSUI, it allows the user to define patterns and can use them later in the code.
Macro rsx!
Example
use osui::prelude::*;
fn main() -> std::io::Result<()> {
let screen = Screen::new();
rsx! {
"Hello, World"
}
.draw(&screen);
screen.run()
}
Raw Rsx
Example
use osui::prelude::*;
fn main() -> std::io::Result<()> {
let screen = Screen::new();
Rsx(vec![RsxElement::Element(
Box::new(|| WidgetLoad::new(format!("Hello, World"))),
vec![],
Rsx(vec![]),
)])
.draw(&screen);
screen.run()
}
rsx!
A macro that defines and returns a Rsx
, rsx!
defines it in a clean and readable way.
%dependency @component $path {}
Draws a Element
from the $path
, and applies %dependency
and @component
%dependency @component "<string>"
Draws a String
using format!
, and applies %dependency
and @component
Raw Rsx
The raw Rsx
struct is a tuple-like which contains a Vec<RsxElement>
, the elements can be defined directly in the Vec
or using the create_element
function
draw(self, screen: &Arc<Screen>)
Draws the rsx to the provided screen.
draw_parent(self, screen: &Arc<Screen>, parent: Option<Arc<Widget>>)
Draws the rsx to the provided screen with a parent option if the rsx is a child of a widget.
create_element(&mut self, load: FnMut() -> WidgetLoad, dependencies: Vec<Box<dyn DependencyHandler>>, children: Rsx)
expand(&mut self, other: &mut Rsx)
Expands the current rsx at the current position with the other Rsx